cyberia/research/events/backend/ethereum_artifacts/build-info/79d34e8281b6b037731fd4458ee99374.json

{"id":"79d34e8281b6b037731fd4458ee99374","_format":"hh-sol-build-info-1","solcVersion":"0.8.28","solcLongVersion":"0.8.28+commit.7893614a","input":{"language":"Solidity","sources":{"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (interfaces/draft-IERC6093.sol)\npragma solidity ^0.8.20;\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/IERC5267.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)\n\npragma solidity ^0.8.20;\n\ninterface IERC5267 {\n    /**\n     * @dev MAY be emitted to signal that the domain could have changed.\n     */\n    event EIP712DomainChanged();\n\n    /**\n     * @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n     * signature.\n     */\n    function eip712Domain()\n        external\n        view\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        );\n}\n"},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.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    /**\n     * @dev See {IERC20-totalSupply}.\n     */\n    function totalSupply() public view virtual returns (uint256) {\n        return _totalSupply;\n    }\n\n    /**\n     * @dev See {IERC20-balanceOf}.\n     */\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    /**\n     * @dev See {IERC20-allowance}.\n     */\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/ERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/ERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\nimport {IERC20Permit} from \"./IERC20Permit.sol\";\nimport {ERC20} from \"../ERC20.sol\";\nimport {ECDSA} from \"../../../utils/cryptography/ECDSA.sol\";\nimport {EIP712} from \"../../../utils/cryptography/EIP712.sol\";\nimport {Nonces} from \"../../../utils/Nonces.sol\";\n\n/**\n * @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n */\nabstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {\n    bytes32 private constant PERMIT_TYPEHASH =\n        keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n\n    /**\n     * @dev Permit deadline has expired.\n     */\n    error ERC2612ExpiredSignature(uint256 deadline);\n\n    /**\n     * @dev Mismatched signature.\n     */\n    error ERC2612InvalidSigner(address signer, address owner);\n\n    /**\n     * @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n     *\n     * It's a good idea to use the same `name` that is defined as the ERC-20 token name.\n     */\n    constructor(string memory name) EIP712(name, \"1\") {}\n\n    /**\n     * @inheritdoc IERC20Permit\n     */\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) public virtual {\n        if (block.timestamp > deadline) {\n            revert ERC2612ExpiredSignature(deadline);\n        }\n\n        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));\n\n        bytes32 hash = _hashTypedDataV4(structHash);\n\n        address signer = ECDSA.recover(hash, v, r, s);\n        if (signer != owner) {\n            revert ERC2612InvalidSigner(signer, owner);\n        }\n\n        _approve(owner, spender, value);\n    }\n\n    /**\n     * @inheritdoc IERC20Permit\n     */\n    function nonces(address owner) public view virtual override(IERC20Permit, Nonces) returns (uint256) {\n        return super.nonces(owner);\n    }\n\n    /**\n     * @inheritdoc IERC20Permit\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {\n        return _domainSeparatorV4();\n    }\n}\n"},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Metadata.sol)\n\npragma solidity ^0.8.20;\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/extensions/IERC20Permit.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/extensions/IERC20Permit.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n * https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n *\n * Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n * presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n * need to send a transaction, and thus is not required to hold Ether at all.\n *\n * ==== Security Considerations\n *\n * There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n * expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n * considered as an intention to spend the allowance in any specific way. The second is that because permits have\n * built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n * take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n * generally recommended is:\n *\n * ```solidity\n * function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n *     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n *     doThing(..., value);\n * }\n *\n * function doThing(..., uint256 value) public {\n *     token.safeTransferFrom(msg.sender, address(this), value);\n *     ...\n * }\n * ```\n *\n * Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n * `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n * {SafeERC20-safeTransferFrom}).\n *\n * Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n * contracts should have entry points that don't rely on permit.\n */\ninterface IERC20Permit {\n    /**\n     * @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n     * given ``owner``'s signed approval.\n     *\n     * IMPORTANT: The same issues {IERC20-approve} has related to transaction\n     * ordering also apply here.\n     *\n     * Emits an {Approval} event.\n     *\n     * Requirements:\n     *\n     * - `spender` cannot be the zero address.\n     * - `deadline` must be a timestamp in the future.\n     * - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n     * over the EIP712-formatted function arguments.\n     * - the signature must use ``owner``'s current nonce (see {nonces}).\n     *\n     * For more information on the signature format, see the\n     * https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n     * section].\n     *\n     * CAUTION: See Security Considerations above.\n     */\n    function permit(\n        address owner,\n        address spender,\n        uint256 value,\n        uint256 deadline,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) external;\n\n    /**\n     * @dev Returns the current nonce for `owner`. This value must be\n     * included whenever a signature is generated for {permit}.\n     *\n     * Every successful call to {permit} increases ``owner``'s nonce by one. This\n     * prevents a signature from being used multiple times.\n     */\n    function nonces(address owner) external view returns (uint256);\n\n    /**\n     * @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function DOMAIN_SEPARATOR() external view returns (bytes32);\n}\n"},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (token/ERC20/IERC20.sol)\n\npragma solidity ^0.8.20;\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/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/cryptography/ECDSA.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/cryptography/ECDSA.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n *\n * These functions can be used to verify that a message was signed by the holder\n * of the private keys of a given address.\n */\nlibrary ECDSA {\n    enum RecoverError {\n        NoError,\n        InvalidSignature,\n        InvalidSignatureLength,\n        InvalidSignatureS\n    }\n\n    /**\n     * @dev The signature derives the `address(0)`.\n     */\n    error ECDSAInvalidSignature();\n\n    /**\n     * @dev The signature has an invalid length.\n     */\n    error ECDSAInvalidSignatureLength(uint256 length);\n\n    /**\n     * @dev The signature has an S value that is in the upper half order.\n     */\n    error ECDSAInvalidSignatureS(bytes32 s);\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n     * return address(0) without also returning an error description. Errors are documented using an enum (error type)\n     * and a bytes32 providing additional information about the error.\n     *\n     * If no error is returned, then the address can be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     *\n     * Documentation for signature generation:\n     * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n     * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes memory signature\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        if (signature.length == 65) {\n            bytes32 r;\n            bytes32 s;\n            uint8 v;\n            // ecrecover takes the signature parameters, and the only way to get them\n            // currently is to use assembly.\n            assembly (\"memory-safe\") {\n                r := mload(add(signature, 0x20))\n                s := mload(add(signature, 0x40))\n                v := byte(0, mload(add(signature, 0x60)))\n            }\n            return tryRecover(hash, v, r, s);\n        } else {\n            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));\n        }\n    }\n\n    /**\n     * @dev Returns the address that signed a hashed message (`hash`) with\n     * `signature`. This address can then be used for verification purposes.\n     *\n     * The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n     * this function rejects them by requiring the `s` value to be in the lower\n     * half order, and the `v` value to be either 27 or 28.\n     *\n     * IMPORTANT: `hash` _must_ be the result of a hash operation for the\n     * verification to be secure: it is possible to craft signatures that\n     * recover to arbitrary addresses for non-hashed data. A safe way to ensure\n     * this is by receiving a hash of the original message (which may otherwise\n     * be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n     */\n    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n     *\n     * See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]\n     */\n    function tryRecover(\n        bytes32 hash,\n        bytes32 r,\n        bytes32 vs\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        unchecked {\n            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);\n            // We do not check for an overflow here since the shift operation results in 0 or 1.\n            uint8 v = uint8((uint256(vs) >> 255) + 27);\n            return tryRecover(hash, v, r, s);\n        }\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately.\n     */\n    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function tryRecover(\n        bytes32 hash,\n        uint8 v,\n        bytes32 r,\n        bytes32 s\n    ) internal pure returns (address recovered, RecoverError err, bytes32 errArg) {\n        // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature\n        // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines\n        // the valid range for s in (301): 0 < s < secp256k1n รท 2 + 1, and for v in (302): v โˆˆ {27, 28}. Most\n        // signatures from current libraries generate a unique signature with an s-value in the lower half order.\n        //\n        // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value\n        // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or\n        // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept\n        // these malleable signatures as well.\n        if (uint256(s) > 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0) {\n            return (address(0), RecoverError.InvalidSignatureS, s);\n        }\n\n        // If the signature is valid (and not malleable), return the signer address\n        address signer = ecrecover(hash, v, r, s);\n        if (signer == address(0)) {\n            return (address(0), RecoverError.InvalidSignature, bytes32(0));\n        }\n\n        return (signer, RecoverError.NoError, bytes32(0));\n    }\n\n    /**\n     * @dev Overload of {ECDSA-recover} that receives the `v`,\n     * `r` and `s` signature fields separately.\n     */\n    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {\n        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);\n        _throwError(error, errorArg);\n        return recovered;\n    }\n\n    /**\n     * @dev Optionally reverts with the corresponding custom error according to the `error` argument provided.\n     */\n    function _throwError(RecoverError error, bytes32 errorArg) private pure {\n        if (error == RecoverError.NoError) {\n            return; // no error: do nothing\n        } else if (error == RecoverError.InvalidSignature) {\n            revert ECDSAInvalidSignature();\n        } else if (error == RecoverError.InvalidSignatureLength) {\n            revert ECDSAInvalidSignatureLength(uint256(errorArg));\n        } else if (error == RecoverError.InvalidSignatureS) {\n            revert ECDSAInvalidSignatureS(errorArg);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/EIP712.sol)\n\npragma solidity ^0.8.20;\n\nimport {MessageHashUtils} from \"./MessageHashUtils.sol\";\nimport {ShortStrings, ShortString} from \"../ShortStrings.sol\";\nimport {IERC5267} from \"../../interfaces/IERC5267.sol\";\n\n/**\n * @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n *\n * The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n * encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n * does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n * produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n *\n * This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n * scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n * ({_hashTypedDataV4}).\n *\n * The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n * the chain id to protect against replay attacks on an eventual fork of the chain.\n *\n * NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n * https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n *\n * NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n * separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n * separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n *\n * @custom:oz-upgrades-unsafe-allow state-variable-immutable\n */\nabstract contract EIP712 is IERC5267 {\n    using ShortStrings for *;\n\n    bytes32 private constant TYPE_HASH =\n        keccak256(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\");\n\n    // Cache the domain separator as an immutable value, but also store the chain id that it corresponds to, in order to\n    // invalidate the cached domain separator if the chain id changes.\n    bytes32 private immutable _cachedDomainSeparator;\n    uint256 private immutable _cachedChainId;\n    address private immutable _cachedThis;\n\n    bytes32 private immutable _hashedName;\n    bytes32 private immutable _hashedVersion;\n\n    ShortString private immutable _name;\n    ShortString private immutable _version;\n    // slither-disable-next-line constable-states\n    string private _nameFallback;\n    // slither-disable-next-line constable-states\n    string private _versionFallback;\n\n    /**\n     * @dev Initializes the domain separator and parameter caches.\n     *\n     * The meaning of `name` and `version` is specified in\n     * https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n     *\n     * - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n     * - `version`: the current major version of the signing domain.\n     *\n     * NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n     * contract upgrade].\n     */\n    constructor(string memory name, string memory version) {\n        _name = name.toShortStringWithFallback(_nameFallback);\n        _version = version.toShortStringWithFallback(_versionFallback);\n        _hashedName = keccak256(bytes(name));\n        _hashedVersion = keccak256(bytes(version));\n\n        _cachedChainId = block.chainid;\n        _cachedDomainSeparator = _buildDomainSeparator();\n        _cachedThis = address(this);\n    }\n\n    /**\n     * @dev Returns the domain separator for the current chain.\n     */\n    function _domainSeparatorV4() internal view returns (bytes32) {\n        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {\n            return _cachedDomainSeparator;\n        } else {\n            return _buildDomainSeparator();\n        }\n    }\n\n    function _buildDomainSeparator() private view returns (bytes32) {\n        return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));\n    }\n\n    /**\n     * @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n     * function returns the hash of the fully encoded EIP712 message for this domain.\n     *\n     * This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n     *\n     * ```solidity\n     * bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     *     keccak256(\"Mail(address to,string contents)\"),\n     *     mailTo,\n     *     keccak256(bytes(mailContents))\n     * )));\n     * address signer = ECDSA.recover(digest, signature);\n     * ```\n     */\n    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {\n        return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);\n    }\n\n    /**\n     * @inheritdoc IERC5267\n     */\n    function eip712Domain()\n        public\n        view\n        virtual\n        returns (\n            bytes1 fields,\n            string memory name,\n            string memory version,\n            uint256 chainId,\n            address verifyingContract,\n            bytes32 salt,\n            uint256[] memory extensions\n        )\n    {\n        return (\n            hex\"0f\", // 01111\n            _EIP712Name(),\n            _EIP712Version(),\n            block.chainid,\n            address(this),\n            bytes32(0),\n            new uint256[](0)\n        );\n    }\n\n    /**\n     * @dev The name parameter for the EIP712 domain.\n     *\n     * NOTE: By default this function reads _name which is an immutable value.\n     * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function _EIP712Name() internal view returns (string memory) {\n        return _name.toStringWithFallback(_nameFallback);\n    }\n\n    /**\n     * @dev The version parameter for the EIP712 domain.\n     *\n     * NOTE: By default this function reads _version which is an immutable value.\n     * It only reads from storage if necessary (in case the value is too large to fit in a ShortString).\n     */\n    // solhint-disable-next-line func-name-mixedcase\n    function _EIP712Version() internal view returns (string memory) {\n        return _version.toStringWithFallback(_versionFallback);\n    }\n}\n"},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/cryptography/MessageHashUtils.sol)\n\npragma solidity ^0.8.20;\n\nimport {Strings} from \"../Strings.sol\";\n\n/**\n * @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n *\n * The library provides methods for generating a hash of a message that conforms to the\n * https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n * specifications.\n */\nlibrary MessageHashUtils {\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x45` (`personal_sign` messages).\n     *\n     * The digest is calculated by prefixing a bytes32 `messageHash` with\n     * `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n     * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n     *\n     * NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n     * keccak256, although any bytes32 value can be safely used because the final digest will\n     * be re-hashed.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            mstore(0x00, \"\\x19Ethereum Signed Message:\\n32\") // 32 is the bytes-length of messageHash\n            mstore(0x1c, messageHash) // 0x1c (28) is the length of the prefix\n            digest := keccak256(0x00, 0x3c) // 0x3c is the length of the prefix (0x1c) + messageHash (0x20)\n        }\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x45` (`personal_sign` messages).\n     *\n     * The digest is calculated by prefixing an arbitrary `message` with\n     * `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n     * hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {\n        return\n            keccak256(bytes.concat(\"\\x19Ethereum Signed Message:\\n\", bytes(Strings.toString(message.length)), message));\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an ERC-191 signed data with version\n     * `0x00` (data with intended validator).\n     *\n     * The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n     * `validator` address. Then hashing the result.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {\n        return keccak256(abi.encodePacked(hex\"19_00\", validator, data));\n    }\n\n    /**\n     * @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32.\n     */\n    function toDataWithIntendedValidatorHash(\n        address validator,\n        bytes32 messageHash\n    ) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            mstore(0x00, hex\"19_00\")\n            mstore(0x02, shl(96, validator))\n            mstore(0x16, messageHash)\n            digest := keccak256(0x00, 0x36)\n        }\n    }\n\n    /**\n     * @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n     *\n     * The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n     * `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n     * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n     *\n     * See {ECDSA-recover}.\n     */\n    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {\n        assembly (\"memory-safe\") {\n            let ptr := mload(0x40)\n            mstore(ptr, hex\"19_01\")\n            mstore(add(ptr, 0x02), domainSeparator)\n            mstore(add(ptr, 0x22), structHash)\n            digest := keccak256(ptr, 0x42)\n        }\n    }\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/Nonces.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides tracking nonces for addresses. Nonces will only increment.\n */\nabstract contract Nonces {\n    /**\n     * @dev The nonce used for an `account` is not the expected current nonce.\n     */\n    error InvalidAccountNonce(address account, uint256 currentNonce);\n\n    mapping(address account => uint256) private _nonces;\n\n    /**\n     * @dev Returns the next unused nonce for an address.\n     */\n    function nonces(address owner) public view virtual returns (uint256) {\n        return _nonces[owner];\n    }\n\n    /**\n     * @dev Consumes a nonce.\n     *\n     * Returns the current value and increments nonce.\n     */\n    function _useNonce(address owner) internal virtual returns (uint256) {\n        // For each account, the nonce has an initial value of 0, can only be incremented by one, and cannot be\n        // decremented or reset. This guarantees that the nonce never overflows.\n        unchecked {\n            // It is important to do x++ and not ++x here.\n            return _nonces[owner]++;\n        }\n    }\n\n    /**\n     * @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`.\n     */\n    function _useCheckedNonce(address owner, uint256 nonce) internal virtual {\n        uint256 current = _useNonce(owner);\n        if (nonce != current) {\n            revert InvalidAccountNonce(owner, current);\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/ShortStrings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.0) (utils/ShortStrings.sol)\n\npragma solidity ^0.8.20;\n\nimport {StorageSlot} from \"./StorageSlot.sol\";\n\n// | string  | 0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA   |\n// | length  | 0x                                                              BB |\ntype ShortString is bytes32;\n\n/**\n * @dev This library provides functions to convert short memory strings\n * into a `ShortString` type that can be used as an immutable variable.\n *\n * Strings of arbitrary length can be optimized using this library if\n * they are short enough (up to 31 bytes) by packing them with their\n * length (1 byte) in a single EVM word (32 bytes). Additionally, a\n * fallback mechanism can be used for every other case.\n *\n * Usage example:\n *\n * ```solidity\n * contract Named {\n *     using ShortStrings for *;\n *\n *     ShortString private immutable _name;\n *     string private _nameFallback;\n *\n *     constructor(string memory contractName) {\n *         _name = contractName.toShortStringWithFallback(_nameFallback);\n *     }\n *\n *     function name() external view returns (string memory) {\n *         return _name.toStringWithFallback(_nameFallback);\n *     }\n * }\n * ```\n */\nlibrary ShortStrings {\n    // Used as an identifier for strings longer than 31 bytes.\n    bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;\n\n    error StringTooLong(string str);\n    error InvalidShortString();\n\n    /**\n     * @dev Encode a string of at most 31 chars into a `ShortString`.\n     *\n     * This will trigger a `StringTooLong` error is the input string is too long.\n     */\n    function toShortString(string memory str) internal pure returns (ShortString) {\n        bytes memory bstr = bytes(str);\n        if (bstr.length > 31) {\n            revert StringTooLong(str);\n        }\n        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));\n    }\n\n    /**\n     * @dev Decode a `ShortString` back to a \"normal\" string.\n     */\n    function toString(ShortString sstr) internal pure returns (string memory) {\n        uint256 len = byteLength(sstr);\n        // using `new string(len)` would work locally but is not memory safe.\n        string memory str = new string(32);\n        assembly (\"memory-safe\") {\n            mstore(str, len)\n            mstore(add(str, 0x20), sstr)\n        }\n        return str;\n    }\n\n    /**\n     * @dev Return the length of a `ShortString`.\n     */\n    function byteLength(ShortString sstr) internal pure returns (uint256) {\n        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;\n        if (result > 31) {\n            revert InvalidShortString();\n        }\n        return result;\n    }\n\n    /**\n     * @dev Encode a string into a `ShortString`, or write it to storage if it is too long.\n     */\n    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {\n        if (bytes(value).length < 32) {\n            return toShortString(value);\n        } else {\n            StorageSlot.getStringSlot(store).value = value;\n            return ShortString.wrap(FALLBACK_SENTINEL);\n        }\n    }\n\n    /**\n     * @dev Decode a string that was encoded to `ShortString` or written to storage using {toShortStringWithFallback}.\n     */\n    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {\n        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n            return toString(value);\n        } else {\n            return store;\n        }\n    }\n\n    /**\n     * @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n     * {toShortStringWithFallback}.\n     *\n     * WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n     * actual characters as the UTF-8 encoding of a single character can span over multiple bytes.\n     */\n    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {\n        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {\n            return byteLength(value);\n        } else {\n            return bytes(store).length;\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/StorageSlot.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/StorageSlot.sol)\n// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Library for reading and writing primitive types to specific storage slots.\n *\n * Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n * This library helps with reading and writing to such slots without the need for inline assembly.\n *\n * The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n *\n * Example usage to set ERC-1967 implementation slot:\n * ```solidity\n * contract ERC1967 {\n *     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n *     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n *\n *     function _getImplementation() internal view returns (address) {\n *         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n *     }\n *\n *     function _setImplementation(address newImplementation) internal {\n *         require(newImplementation.code.length > 0);\n *         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n *     }\n * }\n * ```\n *\n * TIP: Consider using this library along with {SlotDerivation}.\n */\nlibrary StorageSlot {\n    struct AddressSlot {\n        address value;\n    }\n\n    struct BooleanSlot {\n        bool value;\n    }\n\n    struct Bytes32Slot {\n        bytes32 value;\n    }\n\n    struct Uint256Slot {\n        uint256 value;\n    }\n\n    struct Int256Slot {\n        int256 value;\n    }\n\n    struct StringSlot {\n        string value;\n    }\n\n    struct BytesSlot {\n        bytes value;\n    }\n\n    /**\n     * @dev Returns an `AddressSlot` with member `value` located at `slot`.\n     */\n    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BooleanSlot` with member `value` located at `slot`.\n     */\n    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Bytes32Slot` with member `value` located at `slot`.\n     */\n    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Uint256Slot` with member `value` located at `slot`.\n     */\n    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `Int256Slot` with member `value` located at `slot`.\n     */\n    function getInt256Slot(bytes32 slot) internal pure returns (Int256Slot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns a `StringSlot` with member `value` located at `slot`.\n     */\n    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `StringSlot` representation of the string storage pointer `store`.\n     */\n    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n\n    /**\n     * @dev Returns a `BytesSlot` with member `value` located at `slot`.\n     */\n    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := slot\n        }\n    }\n\n    /**\n     * @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`.\n     */\n    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {\n        assembly (\"memory-safe\") {\n            r.slot := store.slot\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Strings.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.3.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(buffer, add(32, 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(buffer, add(0x20, offset)))\n        }\n    }\n}\n"},"contracts/mocks/MockUSDT.sol":{"content":"// SPDX-License-Identifier: MIT\n// Compatible with OpenZeppelin Contracts ^5.0.0\npragma solidity 0.8.28;\n\nimport {ERC20} from \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport {ERC20Permit} from \"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\";\n\n/// @dev Dev-only ERC20 used to mimic USDT-like behavior (6 decimals).\n///      Name/symbol are intentionally \"MockUSDT\"/\"mUSDT\" to avoid collisions\n///      with real tokens in wallets and token lists.\ncontract MockUSDT is ERC20, ERC20Permit {\n    constructor() ERC20(\"MockUSDT\", \"mUSDT\") ERC20Permit(\"MockUSDT\") {}\n\n    function decimals() public pure override returns (uint8) {\n        return 6;\n    }\n\n    function mint(uint256 amount) external {\n        _mint(msg.sender, amount);\n    }\n}\n\n"}},"settings":{"optimizer":{"enabled":true,"runs":200},"viaIR":true,"evmVersion":"paris","outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts/interfaces/IERC5267.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","exportedSymbols":{"IERC5267":[24]},"id":25,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"107:24:0"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC5267","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":24,"linearizedBaseContracts":[24],"name":"IERC5267","nameLocation":"143:8:0","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":2,"nodeType":"StructuredDocumentation","src":"158:84:0","text":" @dev MAY be emitted to signal that the domain could have changed."},"eventSelector":"0a6387c9ea3628b88a633bb4f3b151770f70085117a15f9bf3787cda53f13d31","id":4,"name":"EIP712DomainChanged","nameLocation":"253:19:0","nodeType":"EventDefinition","parameters":{"id":3,"nodeType":"ParameterList","parameters":[],"src":"272:2:0"},"src":"247:28:0"},{"documentation":{"id":5,"nodeType":"StructuredDocumentation","src":"281:140:0","text":" @dev returns the fields and values that describe the domain separator used by this contract for EIP-712\n signature."},"functionSelector":"84b0196e","id":23,"implemented":false,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"435:12:0","nodeType":"FunctionDefinition","parameters":{"id":6,"nodeType":"ParameterList","parameters":[],"src":"447:2:0"},"returnParameters":{"id":22,"nodeType":"ParameterList","parameters":[{"constant":false,"id":8,"mutability":"mutable","name":"fields","nameLocation":"517:6:0","nodeType":"VariableDeclaration","scope":23,"src":"510:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":7,"name":"bytes1","nodeType":"ElementaryTypeName","src":"510:6:0","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":10,"mutability":"mutable","name":"name","nameLocation":"551:4:0","nodeType":"VariableDeclaration","scope":23,"src":"537:18:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":9,"name":"string","nodeType":"ElementaryTypeName","src":"537:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":12,"mutability":"mutable","name":"version","nameLocation":"583:7:0","nodeType":"VariableDeclaration","scope":23,"src":"569:21:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":11,"name":"string","nodeType":"ElementaryTypeName","src":"569:6:0","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":14,"mutability":"mutable","name":"chainId","nameLocation":"612:7:0","nodeType":"VariableDeclaration","scope":23,"src":"604:15:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":13,"name":"uint256","nodeType":"ElementaryTypeName","src":"604:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":16,"mutability":"mutable","name":"verifyingContract","nameLocation":"641:17:0","nodeType":"VariableDeclaration","scope":23,"src":"633:25:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":15,"name":"address","nodeType":"ElementaryTypeName","src":"633:7:0","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":18,"mutability":"mutable","name":"salt","nameLocation":"680:4:0","nodeType":"VariableDeclaration","scope":23,"src":"672:12:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":17,"name":"bytes32","nodeType":"ElementaryTypeName","src":"672:7:0","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":21,"mutability":"mutable","name":"extensions","nameLocation":"715:10:0","nodeType":"VariableDeclaration","scope":23,"src":"698:27:0","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":19,"name":"uint256","nodeType":"ElementaryTypeName","src":"698:7:0","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":20,"nodeType":"ArrayTypeName","src":"698:9:0","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"496:239:0"},"scope":24,"src":"426:310:0","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":25,"src":"133:605:0","usedErrors":[],"usedEvents":[4]}],"src":"107:632:0"},"id":0},"@openzeppelin/contracts/interfaces/draft-IERC6093.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","exportedSymbols":{"IERC1155Errors":[161],"IERC20Errors":[66],"IERC721Errors":[114]},"id":162,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":26,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:1"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":27,"nodeType":"StructuredDocumentation","src":"138:141:1","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":66,"linearizedBaseContracts":[66],"name":"IERC20Errors","nameLocation":"290:12:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":28,"nodeType":"StructuredDocumentation","src":"309:309:1","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":36,"name":"ERC20InsufficientBalance","nameLocation":"629:24:1","nodeType":"ErrorDefinition","parameters":{"id":35,"nodeType":"ParameterList","parameters":[{"constant":false,"id":30,"mutability":"mutable","name":"sender","nameLocation":"662:6:1","nodeType":"VariableDeclaration","scope":36,"src":"654:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":29,"name":"address","nodeType":"ElementaryTypeName","src":"654:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":32,"mutability":"mutable","name":"balance","nameLocation":"678:7:1","nodeType":"VariableDeclaration","scope":36,"src":"670:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":31,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":34,"mutability":"mutable","name":"needed","nameLocation":"695:6:1","nodeType":"VariableDeclaration","scope":36,"src":"687:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":33,"name":"uint256","nodeType":"ElementaryTypeName","src":"687:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"653:49:1"},"src":"623:80:1"},{"documentation":{"id":37,"nodeType":"StructuredDocumentation","src":"709:152:1","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"96c6fd1e","id":41,"name":"ERC20InvalidSender","nameLocation":"872:18:1","nodeType":"ErrorDefinition","parameters":{"id":40,"nodeType":"ParameterList","parameters":[{"constant":false,"id":39,"mutability":"mutable","name":"sender","nameLocation":"899:6:1","nodeType":"VariableDeclaration","scope":41,"src":"891:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":38,"name":"address","nodeType":"ElementaryTypeName","src":"891:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"890:16:1"},"src":"866:41:1"},{"documentation":{"id":42,"nodeType":"StructuredDocumentation","src":"913:159:1","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":46,"name":"ERC20InvalidReceiver","nameLocation":"1083:20:1","nodeType":"ErrorDefinition","parameters":{"id":45,"nodeType":"ParameterList","parameters":[{"constant":false,"id":44,"mutability":"mutable","name":"receiver","nameLocation":"1112:8:1","nodeType":"VariableDeclaration","scope":46,"src":"1104:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":43,"name":"address","nodeType":"ElementaryTypeName","src":"1104:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1103:18:1"},"src":"1077:45:1"},{"documentation":{"id":47,"nodeType":"StructuredDocumentation","src":"1128:345:1","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":55,"name":"ERC20InsufficientAllowance","nameLocation":"1484:26:1","nodeType":"ErrorDefinition","parameters":{"id":54,"nodeType":"ParameterList","parameters":[{"constant":false,"id":49,"mutability":"mutable","name":"spender","nameLocation":"1519:7:1","nodeType":"VariableDeclaration","scope":55,"src":"1511:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":48,"name":"address","nodeType":"ElementaryTypeName","src":"1511:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51,"mutability":"mutable","name":"allowance","nameLocation":"1536:9:1","nodeType":"VariableDeclaration","scope":55,"src":"1528:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50,"name":"uint256","nodeType":"ElementaryTypeName","src":"1528:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":53,"mutability":"mutable","name":"needed","nameLocation":"1555:6:1","nodeType":"VariableDeclaration","scope":55,"src":"1547:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52,"name":"uint256","nodeType":"ElementaryTypeName","src":"1547:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1510:52:1"},"src":"1478:85:1"},{"documentation":{"id":56,"nodeType":"StructuredDocumentation","src":"1569:174:1","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":60,"name":"ERC20InvalidApprover","nameLocation":"1754:20:1","nodeType":"ErrorDefinition","parameters":{"id":59,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58,"mutability":"mutable","name":"approver","nameLocation":"1783:8:1","nodeType":"VariableDeclaration","scope":60,"src":"1775:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":57,"name":"address","nodeType":"ElementaryTypeName","src":"1775:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1774:18:1"},"src":"1748:45:1"},{"documentation":{"id":61,"nodeType":"StructuredDocumentation","src":"1799:195:1","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":65,"name":"ERC20InvalidSpender","nameLocation":"2005:19:1","nodeType":"ErrorDefinition","parameters":{"id":64,"nodeType":"ParameterList","parameters":[{"constant":false,"id":63,"mutability":"mutable","name":"spender","nameLocation":"2033:7:1","nodeType":"VariableDeclaration","scope":65,"src":"2025:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62,"name":"address","nodeType":"ElementaryTypeName","src":"2025:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2024:17:1"},"src":"1999:43:1"}],"scope":162,"src":"280:1764:1","usedErrors":[36,41,46,55,60,65],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC721Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":67,"nodeType":"StructuredDocumentation","src":"2046:143:1","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":114,"linearizedBaseContracts":[114],"name":"IERC721Errors","nameLocation":"2200:13:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":68,"nodeType":"StructuredDocumentation","src":"2220:219:1","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":72,"name":"ERC721InvalidOwner","nameLocation":"2450:18:1","nodeType":"ErrorDefinition","parameters":{"id":71,"nodeType":"ParameterList","parameters":[{"constant":false,"id":70,"mutability":"mutable","name":"owner","nameLocation":"2477:5:1","nodeType":"VariableDeclaration","scope":72,"src":"2469:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":69,"name":"address","nodeType":"ElementaryTypeName","src":"2469:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2468:15:1"},"src":"2444:40:1"},{"documentation":{"id":73,"nodeType":"StructuredDocumentation","src":"2490:132:1","text":" @dev Indicates a `tokenId` whose `owner` is the zero address.\n @param tokenId Identifier number of a token."},"errorSelector":"7e273289","id":77,"name":"ERC721NonexistentToken","nameLocation":"2633:22:1","nodeType":"ErrorDefinition","parameters":{"id":76,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75,"mutability":"mutable","name":"tokenId","nameLocation":"2664:7:1","nodeType":"VariableDeclaration","scope":77,"src":"2656:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74,"name":"uint256","nodeType":"ElementaryTypeName","src":"2656:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2655:17:1"},"src":"2627:46:1"},{"documentation":{"id":78,"nodeType":"StructuredDocumentation","src":"2679:289:1","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":86,"name":"ERC721IncorrectOwner","nameLocation":"2979:20:1","nodeType":"ErrorDefinition","parameters":{"id":85,"nodeType":"ParameterList","parameters":[{"constant":false,"id":80,"mutability":"mutable","name":"sender","nameLocation":"3008:6:1","nodeType":"VariableDeclaration","scope":86,"src":"3000:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":79,"name":"address","nodeType":"ElementaryTypeName","src":"3000:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":82,"mutability":"mutable","name":"tokenId","nameLocation":"3024:7:1","nodeType":"VariableDeclaration","scope":86,"src":"3016:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":81,"name":"uint256","nodeType":"ElementaryTypeName","src":"3016:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":84,"mutability":"mutable","name":"owner","nameLocation":"3041:5:1","nodeType":"VariableDeclaration","scope":86,"src":"3033:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":83,"name":"address","nodeType":"ElementaryTypeName","src":"3033:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2999:48:1"},"src":"2973:75:1"},{"documentation":{"id":87,"nodeType":"StructuredDocumentation","src":"3054:152:1","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"73c6ac6e","id":91,"name":"ERC721InvalidSender","nameLocation":"3217:19:1","nodeType":"ErrorDefinition","parameters":{"id":90,"nodeType":"ParameterList","parameters":[{"constant":false,"id":89,"mutability":"mutable","name":"sender","nameLocation":"3245:6:1","nodeType":"VariableDeclaration","scope":91,"src":"3237:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":88,"name":"address","nodeType":"ElementaryTypeName","src":"3237:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3236:16:1"},"src":"3211:42:1"},{"documentation":{"id":92,"nodeType":"StructuredDocumentation","src":"3259:159:1","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":96,"name":"ERC721InvalidReceiver","nameLocation":"3429:21:1","nodeType":"ErrorDefinition","parameters":{"id":95,"nodeType":"ParameterList","parameters":[{"constant":false,"id":94,"mutability":"mutable","name":"receiver","nameLocation":"3459:8:1","nodeType":"VariableDeclaration","scope":96,"src":"3451:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":93,"name":"address","nodeType":"ElementaryTypeName","src":"3451:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3450:18:1"},"src":"3423:46:1"},{"documentation":{"id":97,"nodeType":"StructuredDocumentation","src":"3475:247:1","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":103,"name":"ERC721InsufficientApproval","nameLocation":"3733:26:1","nodeType":"ErrorDefinition","parameters":{"id":102,"nodeType":"ParameterList","parameters":[{"constant":false,"id":99,"mutability":"mutable","name":"operator","nameLocation":"3768:8:1","nodeType":"VariableDeclaration","scope":103,"src":"3760:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":98,"name":"address","nodeType":"ElementaryTypeName","src":"3760:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":101,"mutability":"mutable","name":"tokenId","nameLocation":"3786:7:1","nodeType":"VariableDeclaration","scope":103,"src":"3778:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":100,"name":"uint256","nodeType":"ElementaryTypeName","src":"3778:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3759:35:1"},"src":"3727:68:1"},{"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"3801:174:1","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":108,"name":"ERC721InvalidApprover","nameLocation":"3986:21:1","nodeType":"ErrorDefinition","parameters":{"id":107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":106,"mutability":"mutable","name":"approver","nameLocation":"4016:8:1","nodeType":"VariableDeclaration","scope":108,"src":"4008:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":105,"name":"address","nodeType":"ElementaryTypeName","src":"4008:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4007:18:1"},"src":"3980:46:1"},{"documentation":{"id":109,"nodeType":"StructuredDocumentation","src":"4032:197:1","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":113,"name":"ERC721InvalidOperator","nameLocation":"4240:21:1","nodeType":"ErrorDefinition","parameters":{"id":112,"nodeType":"ParameterList","parameters":[{"constant":false,"id":111,"mutability":"mutable","name":"operator","nameLocation":"4270:8:1","nodeType":"VariableDeclaration","scope":113,"src":"4262:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":110,"name":"address","nodeType":"ElementaryTypeName","src":"4262:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4261:18:1"},"src":"4234:46:1"}],"scope":162,"src":"2190:2092:1","usedErrors":[72,77,86,91,96,103,108,113],"usedEvents":[]},{"abstract":false,"baseContracts":[],"canonicalName":"IERC1155Errors","contractDependencies":[],"contractKind":"interface","documentation":{"id":115,"nodeType":"StructuredDocumentation","src":"4284:145:1","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":161,"linearizedBaseContracts":[161],"name":"IERC1155Errors","nameLocation":"4440:14:1","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":116,"nodeType":"StructuredDocumentation","src":"4461:361:1","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":126,"name":"ERC1155InsufficientBalance","nameLocation":"4833:26:1","nodeType":"ErrorDefinition","parameters":{"id":125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":118,"mutability":"mutable","name":"sender","nameLocation":"4868:6:1","nodeType":"VariableDeclaration","scope":126,"src":"4860:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":117,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120,"mutability":"mutable","name":"balance","nameLocation":"4884:7:1","nodeType":"VariableDeclaration","scope":126,"src":"4876:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":119,"name":"uint256","nodeType":"ElementaryTypeName","src":"4876:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":122,"mutability":"mutable","name":"needed","nameLocation":"4901:6:1","nodeType":"VariableDeclaration","scope":126,"src":"4893:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121,"name":"uint256","nodeType":"ElementaryTypeName","src":"4893:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":124,"mutability":"mutable","name":"tokenId","nameLocation":"4917:7:1","nodeType":"VariableDeclaration","scope":126,"src":"4909:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":123,"name":"uint256","nodeType":"ElementaryTypeName","src":"4909:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4859:66:1"},"src":"4827:99:1"},{"documentation":{"id":127,"nodeType":"StructuredDocumentation","src":"4932:152:1","text":" @dev Indicates a failure with the token `sender`. Used in transfers.\n @param sender Address whose tokens are being transferred."},"errorSelector":"01a83514","id":131,"name":"ERC1155InvalidSender","nameLocation":"5095:20:1","nodeType":"ErrorDefinition","parameters":{"id":130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":129,"mutability":"mutable","name":"sender","nameLocation":"5124:6:1","nodeType":"VariableDeclaration","scope":131,"src":"5116:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":128,"name":"address","nodeType":"ElementaryTypeName","src":"5116:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5115:16:1"},"src":"5089:43:1"},{"documentation":{"id":132,"nodeType":"StructuredDocumentation","src":"5138:159:1","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":136,"name":"ERC1155InvalidReceiver","nameLocation":"5308:22:1","nodeType":"ErrorDefinition","parameters":{"id":135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":134,"mutability":"mutable","name":"receiver","nameLocation":"5339:8:1","nodeType":"VariableDeclaration","scope":136,"src":"5331:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":133,"name":"address","nodeType":"ElementaryTypeName","src":"5331:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5330:18:1"},"src":"5302:47:1"},{"documentation":{"id":137,"nodeType":"StructuredDocumentation","src":"5355:256:1","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":143,"name":"ERC1155MissingApprovalForAll","nameLocation":"5622:28:1","nodeType":"ErrorDefinition","parameters":{"id":142,"nodeType":"ParameterList","parameters":[{"constant":false,"id":139,"mutability":"mutable","name":"operator","nameLocation":"5659:8:1","nodeType":"VariableDeclaration","scope":143,"src":"5651:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":138,"name":"address","nodeType":"ElementaryTypeName","src":"5651:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":141,"mutability":"mutable","name":"owner","nameLocation":"5677:5:1","nodeType":"VariableDeclaration","scope":143,"src":"5669:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":140,"name":"address","nodeType":"ElementaryTypeName","src":"5669:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5650:33:1"},"src":"5616:68:1"},{"documentation":{"id":144,"nodeType":"StructuredDocumentation","src":"5690:174:1","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":148,"name":"ERC1155InvalidApprover","nameLocation":"5875:22:1","nodeType":"ErrorDefinition","parameters":{"id":147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":146,"mutability":"mutable","name":"approver","nameLocation":"5906:8:1","nodeType":"VariableDeclaration","scope":148,"src":"5898:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":145,"name":"address","nodeType":"ElementaryTypeName","src":"5898:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5897:18:1"},"src":"5869:47:1"},{"documentation":{"id":149,"nodeType":"StructuredDocumentation","src":"5922:197:1","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":153,"name":"ERC1155InvalidOperator","nameLocation":"6130:22:1","nodeType":"ErrorDefinition","parameters":{"id":152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":151,"mutability":"mutable","name":"operator","nameLocation":"6161:8:1","nodeType":"VariableDeclaration","scope":153,"src":"6153:16:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":150,"name":"address","nodeType":"ElementaryTypeName","src":"6153:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6152:18:1"},"src":"6124:47:1"},{"documentation":{"id":154,"nodeType":"StructuredDocumentation","src":"6177:280:1","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":160,"name":"ERC1155InvalidArrayLength","nameLocation":"6468:25:1","nodeType":"ErrorDefinition","parameters":{"id":159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":156,"mutability":"mutable","name":"idsLength","nameLocation":"6502:9:1","nodeType":"VariableDeclaration","scope":160,"src":"6494:17:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":155,"name":"uint256","nodeType":"ElementaryTypeName","src":"6494:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":158,"mutability":"mutable","name":"valuesLength","nameLocation":"6521:12:1","nodeType":"VariableDeclaration","scope":160,"src":"6513:20:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":157,"name":"uint256","nodeType":"ElementaryTypeName","src":"6513:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6493:41:1"},"src":"6462:73:1"}],"scope":162,"src":"4430:2107:1","usedErrors":[126,131,136,143,148,153,160],"usedEvents":[]}],"src":"112:6426:1"},"id":1},"@openzeppelin/contracts/token/ERC20/ERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","exportedSymbols":{"Context":[1000],"ERC20":[676],"IERC20":[754],"IERC20Errors":[66],"IERC20Metadata":[934]},"id":677,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":163,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"105:24:2"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"./IERC20.sol","id":165,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":677,"sourceUnit":755,"src":"131:36:2","symbolAliases":[{"foreign":{"id":164,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"139:6:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","file":"./extensions/IERC20Metadata.sol","id":167,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":677,"sourceUnit":935,"src":"168:63:2","symbolAliases":[{"foreign":{"id":166,"name":"IERC20Metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":934,"src":"176:14:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"../../utils/Context.sol","id":169,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":677,"sourceUnit":1001,"src":"232:48:2","symbolAliases":[{"foreign":{"id":168,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1000,"src":"240:7:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/draft-IERC6093.sol","file":"../../interfaces/draft-IERC6093.sol","id":171,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":677,"sourceUnit":162,"src":"281:65:2","symbolAliases":[{"foreign":{"id":170,"name":"IERC20Errors","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":66,"src":"289:12:2","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":173,"name":"Context","nameLocations":["1133:7:2"],"nodeType":"IdentifierPath","referencedDeclaration":1000,"src":"1133:7:2"},"id":174,"nodeType":"InheritanceSpecifier","src":"1133:7:2"},{"baseName":{"id":175,"name":"IERC20","nameLocations":["1142:6:2"],"nodeType":"IdentifierPath","referencedDeclaration":754,"src":"1142:6:2"},"id":176,"nodeType":"InheritanceSpecifier","src":"1142:6:2"},{"baseName":{"id":177,"name":"IERC20Metadata","nameLocations":["1150:14:2"],"nodeType":"IdentifierPath","referencedDeclaration":934,"src":"1150:14:2"},"id":178,"nodeType":"InheritanceSpecifier","src":"1150:14:2"},{"baseName":{"id":179,"name":"IERC20Errors","nameLocations":["1166:12:2"],"nodeType":"IdentifierPath","referencedDeclaration":66,"src":"1166:12:2"},"id":180,"nodeType":"InheritanceSpecifier","src":"1166:12:2"}],"canonicalName":"ERC20","contractDependencies":[],"contractKind":"contract","documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"348:757:2","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":676,"linearizedBaseContracts":[676,66,934,754,1000],"name":"ERC20","nameLocation":"1124:5:2","nodeType":"ContractDefinition","nodes":[{"constant":false,"id":184,"mutability":"mutable","name":"_balances","nameLocation":"1229:9:2","nodeType":"VariableDeclaration","scope":676,"src":"1185:53:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":183,"keyName":"account","keyNameLocation":"1201:7:2","keyType":{"id":181,"name":"address","nodeType":"ElementaryTypeName","src":"1193:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1185:35:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":182,"name":"uint256","nodeType":"ElementaryTypeName","src":"1212:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"constant":false,"id":190,"mutability":"mutable","name":"_allowances","nameLocation":"1317:11:2","nodeType":"VariableDeclaration","scope":676,"src":"1245:83:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":189,"keyName":"account","keyNameLocation":"1261:7:2","keyType":{"id":185,"name":"address","nodeType":"ElementaryTypeName","src":"1253:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1245:63:2","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":188,"keyName":"spender","keyNameLocation":"1288:7:2","keyType":{"id":186,"name":"address","nodeType":"ElementaryTypeName","src":"1280:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1272:35:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":187,"name":"uint256","nodeType":"ElementaryTypeName","src":"1299:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"private"},{"constant":false,"id":192,"mutability":"mutable","name":"_totalSupply","nameLocation":"1351:12:2","nodeType":"VariableDeclaration","scope":676,"src":"1335:28:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":191,"name":"uint256","nodeType":"ElementaryTypeName","src":"1335:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":194,"mutability":"mutable","name":"_name","nameLocation":"1385:5:2","nodeType":"VariableDeclaration","scope":676,"src":"1370:20:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":193,"name":"string","nodeType":"ElementaryTypeName","src":"1370:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":196,"mutability":"mutable","name":"_symbol","nameLocation":"1411:7:2","nodeType":"VariableDeclaration","scope":676,"src":"1396:22:2","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":195,"name":"string","nodeType":"ElementaryTypeName","src":"1396:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":212,"nodeType":"Block","src":"1638:57:2","statements":[{"expression":{"id":206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":204,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"1648:5:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":205,"name":"name_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":199,"src":"1656:5:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1648:13:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":207,"nodeType":"ExpressionStatement","src":"1648:13:2"},{"expression":{"id":210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":208,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":196,"src":"1671:7:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":209,"name":"symbol_","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":201,"src":"1681:7:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"1671:17:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":211,"nodeType":"ExpressionStatement","src":"1671:17:2"}]},"documentation":{"id":197,"nodeType":"StructuredDocumentation","src":"1425:152:2","text":" @dev Sets the values for {name} and {symbol}.\n Both values are immutable: they can only be set once during construction."},"id":213,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":199,"mutability":"mutable","name":"name_","nameLocation":"1608:5:2","nodeType":"VariableDeclaration","scope":213,"src":"1594:19:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":198,"name":"string","nodeType":"ElementaryTypeName","src":"1594:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":201,"mutability":"mutable","name":"symbol_","nameLocation":"1629:7:2","nodeType":"VariableDeclaration","scope":213,"src":"1615:21:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":200,"name":"string","nodeType":"ElementaryTypeName","src":"1615:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1593:44:2"},"returnParameters":{"id":203,"nodeType":"ParameterList","parameters":[],"src":"1638:0:2"},"scope":676,"src":"1582:113:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[921],"body":{"id":221,"nodeType":"Block","src":"1820:29:2","statements":[{"expression":{"id":219,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":194,"src":"1837:5:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":218,"id":220,"nodeType":"Return","src":"1830:12:2"}]},"documentation":{"id":214,"nodeType":"StructuredDocumentation","src":"1701:54:2","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":222,"implemented":true,"kind":"function","modifiers":[],"name":"name","nameLocation":"1769:4:2","nodeType":"FunctionDefinition","parameters":{"id":215,"nodeType":"ParameterList","parameters":[],"src":"1773:2:2"},"returnParameters":{"id":218,"nodeType":"ParameterList","parameters":[{"constant":false,"id":217,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":222,"src":"1805:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":216,"name":"string","nodeType":"ElementaryTypeName","src":"1805:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1804:15:2"},"scope":676,"src":"1760:89:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[927],"body":{"id":230,"nodeType":"Block","src":"2024:31:2","statements":[{"expression":{"id":228,"name":"_symbol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":196,"src":"2041:7:2","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"functionReturnParameters":227,"id":229,"nodeType":"Return","src":"2034:14:2"}]},"documentation":{"id":223,"nodeType":"StructuredDocumentation","src":"1855:102:2","text":" @dev Returns the symbol of the token, usually a shorter version of the\n name."},"functionSelector":"95d89b41","id":231,"implemented":true,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"1971:6:2","nodeType":"FunctionDefinition","parameters":{"id":224,"nodeType":"ParameterList","parameters":[],"src":"1977:2:2"},"returnParameters":{"id":227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":226,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":231,"src":"2009:13:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":225,"name":"string","nodeType":"ElementaryTypeName","src":"2009:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2008:15:2"},"scope":676,"src":"1962:93:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[933],"body":{"id":239,"nodeType":"Block","src":"2744:26:2","statements":[{"expression":{"hexValue":"3138","id":237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2761:2:2","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"18"},"functionReturnParameters":236,"id":238,"nodeType":"Return","src":"2754:9:2"}]},"documentation":{"id":232,"nodeType":"StructuredDocumentation","src":"2061:622:2","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":240,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"2697:8:2","nodeType":"FunctionDefinition","parameters":{"id":233,"nodeType":"ParameterList","parameters":[],"src":"2705:2:2"},"returnParameters":{"id":236,"nodeType":"ParameterList","parameters":[{"constant":false,"id":235,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":240,"src":"2737:5:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":234,"name":"uint8","nodeType":"ElementaryTypeName","src":"2737:5:2","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2736:7:2"},"scope":676,"src":"2688:82:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[703],"body":{"id":248,"nodeType":"Block","src":"2891:36:2","statements":[{"expression":{"id":246,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"2908:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":245,"id":247,"nodeType":"Return","src":"2901:19:2"}]},"documentation":{"id":241,"nodeType":"StructuredDocumentation","src":"2776:49:2","text":" @dev See {IERC20-totalSupply}."},"functionSelector":"18160ddd","id":249,"implemented":true,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"2839:11:2","nodeType":"FunctionDefinition","parameters":{"id":242,"nodeType":"ParameterList","parameters":[],"src":"2850:2:2"},"returnParameters":{"id":245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":249,"src":"2882:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":243,"name":"uint256","nodeType":"ElementaryTypeName","src":"2882:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2881:9:2"},"scope":676,"src":"2830:97:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[711],"body":{"id":261,"nodeType":"Block","src":"3059:42:2","statements":[{"expression":{"baseExpression":{"id":257,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"3076:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":259,"indexExpression":{"id":258,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":252,"src":"3086:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3076:18:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":256,"id":260,"nodeType":"Return","src":"3069:25:2"}]},"documentation":{"id":250,"nodeType":"StructuredDocumentation","src":"2933:47:2","text":" @dev See {IERC20-balanceOf}."},"functionSelector":"70a08231","id":262,"implemented":true,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"2994:9:2","nodeType":"FunctionDefinition","parameters":{"id":253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":252,"mutability":"mutable","name":"account","nameLocation":"3012:7:2","nodeType":"VariableDeclaration","scope":262,"src":"3004:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":251,"name":"address","nodeType":"ElementaryTypeName","src":"3004:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3003:17:2"},"returnParameters":{"id":256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":255,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":262,"src":"3050:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":254,"name":"uint256","nodeType":"ElementaryTypeName","src":"3050:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3049:9:2"},"scope":676,"src":"2985:116:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[721],"body":{"id":285,"nodeType":"Block","src":"3371:103:2","statements":[{"assignments":[273],"declarations":[{"constant":false,"id":273,"mutability":"mutable","name":"owner","nameLocation":"3389:5:2","nodeType":"VariableDeclaration","scope":285,"src":"3381:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":272,"name":"address","nodeType":"ElementaryTypeName","src":"3381:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":276,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":274,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"3397:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3397:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3381:28:2"},{"expression":{"arguments":[{"id":278,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":273,"src":"3429:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":279,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"3436:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":267,"src":"3440:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":277,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"3419:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3419:27:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":282,"nodeType":"ExpressionStatement","src":"3419:27:2"},{"expression":{"hexValue":"74727565","id":283,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3463:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":271,"id":284,"nodeType":"Return","src":"3456:11:2"}]},"documentation":{"id":263,"nodeType":"StructuredDocumentation","src":"3107:184:2","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":286,"implemented":true,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"3305:8:2","nodeType":"FunctionDefinition","parameters":{"id":268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":265,"mutability":"mutable","name":"to","nameLocation":"3322:2:2","nodeType":"VariableDeclaration","scope":286,"src":"3314:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":264,"name":"address","nodeType":"ElementaryTypeName","src":"3314:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":267,"mutability":"mutable","name":"value","nameLocation":"3334:5:2","nodeType":"VariableDeclaration","scope":286,"src":"3326:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":266,"name":"uint256","nodeType":"ElementaryTypeName","src":"3326:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3313:27:2"},"returnParameters":{"id":271,"nodeType":"ParameterList","parameters":[{"constant":false,"id":270,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":286,"src":"3365:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":269,"name":"bool","nodeType":"ElementaryTypeName","src":"3365:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3364:6:2"},"scope":676,"src":"3296:178:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[731],"body":{"id":302,"nodeType":"Block","src":"3621:51:2","statements":[{"expression":{"baseExpression":{"baseExpression":{"id":296,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":190,"src":"3638:11:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":298,"indexExpression":{"id":297,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":289,"src":"3650:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:18:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":300,"indexExpression":{"id":299,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":291,"src":"3657:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3638:27:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":295,"id":301,"nodeType":"Return","src":"3631:34:2"}]},"documentation":{"id":287,"nodeType":"StructuredDocumentation","src":"3480:47:2","text":" @dev See {IERC20-allowance}."},"functionSelector":"dd62ed3e","id":303,"implemented":true,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"3541:9:2","nodeType":"FunctionDefinition","parameters":{"id":292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":289,"mutability":"mutable","name":"owner","nameLocation":"3559:5:2","nodeType":"VariableDeclaration","scope":303,"src":"3551:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":288,"name":"address","nodeType":"ElementaryTypeName","src":"3551:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":291,"mutability":"mutable","name":"spender","nameLocation":"3574:7:2","nodeType":"VariableDeclaration","scope":303,"src":"3566:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":290,"name":"address","nodeType":"ElementaryTypeName","src":"3566:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3550:32:2"},"returnParameters":{"id":295,"nodeType":"ParameterList","parameters":[{"constant":false,"id":294,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":303,"src":"3612:7:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":293,"name":"uint256","nodeType":"ElementaryTypeName","src":"3612:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3611:9:2"},"scope":676,"src":"3532:140:2","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[741],"body":{"id":326,"nodeType":"Block","src":"4058:107:2","statements":[{"assignments":[314],"declarations":[{"constant":false,"id":314,"mutability":"mutable","name":"owner","nameLocation":"4076:5:2","nodeType":"VariableDeclaration","scope":326,"src":"4068:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":313,"name":"address","nodeType":"ElementaryTypeName","src":"4068:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":317,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":315,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"4084:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4084:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4068:28:2"},{"expression":{"arguments":[{"id":319,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":314,"src":"4115:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":320,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"4122:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":321,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":308,"src":"4131:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":318,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[567,627],"referencedDeclaration":567,"src":"4106:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":322,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4106:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":323,"nodeType":"ExpressionStatement","src":"4106:31:2"},{"expression":{"hexValue":"74727565","id":324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4154:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":312,"id":325,"nodeType":"Return","src":"4147:11:2"}]},"documentation":{"id":304,"nodeType":"StructuredDocumentation","src":"3678:296:2","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":327,"implemented":true,"kind":"function","modifiers":[],"name":"approve","nameLocation":"3988:7:2","nodeType":"FunctionDefinition","parameters":{"id":309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":306,"mutability":"mutable","name":"spender","nameLocation":"4004:7:2","nodeType":"VariableDeclaration","scope":327,"src":"3996:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":305,"name":"address","nodeType":"ElementaryTypeName","src":"3996:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":308,"mutability":"mutable","name":"value","nameLocation":"4021:5:2","nodeType":"VariableDeclaration","scope":327,"src":"4013:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":307,"name":"uint256","nodeType":"ElementaryTypeName","src":"4013:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3995:32:2"},"returnParameters":{"id":312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":311,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":327,"src":"4052:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":310,"name":"bool","nodeType":"ElementaryTypeName","src":"4052:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4051:6:2"},"scope":676,"src":"3979:186:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[753],"body":{"id":358,"nodeType":"Block","src":"4850:151:2","statements":[{"assignments":[340],"declarations":[{"constant":false,"id":340,"mutability":"mutable","name":"spender","nameLocation":"4868:7:2","nodeType":"VariableDeclaration","scope":358,"src":"4860:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":339,"name":"address","nodeType":"ElementaryTypeName","src":"4860:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":343,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":341,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":982,"src":"4878:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4878:12:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4860:30:2"},{"expression":{"arguments":[{"id":345,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"4916:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":346,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":340,"src":"4922:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":347,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"4931:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":344,"name":"_spendAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":675,"src":"4900:15:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4900:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":349,"nodeType":"ExpressionStatement","src":"4900:37:2"},{"expression":{"arguments":[{"id":351,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":330,"src":"4957:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":352,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":332,"src":"4963:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":353,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":334,"src":"4967:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":350,"name":"_transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":406,"src":"4947:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":354,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4947:26:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":355,"nodeType":"ExpressionStatement","src":"4947:26:2"},{"expression":{"hexValue":"74727565","id":356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4990:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":338,"id":357,"nodeType":"Return","src":"4983:11:2"}]},"documentation":{"id":328,"nodeType":"StructuredDocumentation","src":"4171:581:2","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":359,"implemented":true,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"4766:12:2","nodeType":"FunctionDefinition","parameters":{"id":335,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"from","nameLocation":"4787:4:2","nodeType":"VariableDeclaration","scope":359,"src":"4779:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":329,"name":"address","nodeType":"ElementaryTypeName","src":"4779:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":332,"mutability":"mutable","name":"to","nameLocation":"4801:2:2","nodeType":"VariableDeclaration","scope":359,"src":"4793:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":331,"name":"address","nodeType":"ElementaryTypeName","src":"4793:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":334,"mutability":"mutable","name":"value","nameLocation":"4813:5:2","nodeType":"VariableDeclaration","scope":359,"src":"4805:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":333,"name":"uint256","nodeType":"ElementaryTypeName","src":"4805:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4778:41:2"},"returnParameters":{"id":338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":359,"src":"4844:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":336,"name":"bool","nodeType":"ElementaryTypeName","src":"4844:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4843:6:2"},"scope":676,"src":"4757:244:2","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"body":{"id":405,"nodeType":"Block","src":"5443:231:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":369,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"5457:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5473:1:2","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":371,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5465:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":370,"name":"address","nodeType":"ElementaryTypeName","src":"5465:7:2","typeDescriptions":{}}},"id":373,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5465:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5457:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":383,"nodeType":"IfStatement","src":"5453:86:2","trueBody":{"id":382,"nodeType":"Block","src":"5477:62:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5525:1:2","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":377,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5517:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":376,"name":"address","nodeType":"ElementaryTypeName","src":"5517:7:2","typeDescriptions":{}}},"id":379,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5517:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":375,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"5498:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":381,"nodeType":"RevertStatement","src":"5491:37:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":384,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5552:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":387,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5566:1:2","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":386,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5558:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":385,"name":"address","nodeType":"ElementaryTypeName","src":"5558:7:2","typeDescriptions":{}}},"id":388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5558:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5552:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":398,"nodeType":"IfStatement","src":"5548:86:2","trueBody":{"id":397,"nodeType":"Block","src":"5570:64:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":393,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5620:1:2","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":392,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5612:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":391,"name":"address","nodeType":"ElementaryTypeName","src":"5612:7:2","typeDescriptions":{}}},"id":394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5612:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":390,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"5591:20:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5591:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":396,"nodeType":"RevertStatement","src":"5584:39:2"}]}},{"expression":{"arguments":[{"id":400,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":362,"src":"5651:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":401,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":364,"src":"5657:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":402,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":366,"src":"5661:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":399,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"5643:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5643:24:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":404,"nodeType":"ExpressionStatement","src":"5643:24:2"}]},"documentation":{"id":360,"nodeType":"StructuredDocumentation","src":"5007:362:2","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":406,"implemented":true,"kind":"function","modifiers":[],"name":"_transfer","nameLocation":"5383:9:2","nodeType":"FunctionDefinition","parameters":{"id":367,"nodeType":"ParameterList","parameters":[{"constant":false,"id":362,"mutability":"mutable","name":"from","nameLocation":"5401:4:2","nodeType":"VariableDeclaration","scope":406,"src":"5393:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":361,"name":"address","nodeType":"ElementaryTypeName","src":"5393:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":364,"mutability":"mutable","name":"to","nameLocation":"5415:2:2","nodeType":"VariableDeclaration","scope":406,"src":"5407:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":363,"name":"address","nodeType":"ElementaryTypeName","src":"5407:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":366,"mutability":"mutable","name":"value","nameLocation":"5427:5:2","nodeType":"VariableDeclaration","scope":406,"src":"5419:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":365,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5392:41:2"},"returnParameters":{"id":368,"nodeType":"ParameterList","parameters":[],"src":"5443:0:2"},"scope":676,"src":"5374:300:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":482,"nodeType":"Block","src":"6064:1032:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":421,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":416,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"6078:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":419,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6094:1:2","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":418,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6086:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":417,"name":"address","nodeType":"ElementaryTypeName","src":"6086:7:2","typeDescriptions":{}}},"id":420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6086:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6078:18:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":453,"nodeType":"Block","src":"6252:362:2","statements":[{"assignments":[428],"declarations":[{"constant":false,"id":428,"mutability":"mutable","name":"fromBalance","nameLocation":"6274:11:2","nodeType":"VariableDeclaration","scope":453,"src":"6266:19:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":427,"name":"uint256","nodeType":"ElementaryTypeName","src":"6266:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":432,"initialValue":{"baseExpression":{"id":429,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"6288:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":431,"indexExpression":{"id":430,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"6298:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6288:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6266:37:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":433,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"6321:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":434,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"6335:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6321:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":443,"nodeType":"IfStatement","src":"6317:115:2","trueBody":{"id":442,"nodeType":"Block","src":"6342:90:2","statements":[{"errorCall":{"arguments":[{"id":437,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"6392:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":438,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"6398:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":439,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"6411:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":436,"name":"ERC20InsufficientBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36,"src":"6367:24:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":440,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6367:50:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":441,"nodeType":"RevertStatement","src":"6360:57:2"}]}},{"id":452,"nodeType":"UncheckedBlock","src":"6445:159:2","statements":[{"expression":{"id":450,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":444,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"6552:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":446,"indexExpression":{"id":445,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"6562:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6552:15:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":449,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":447,"name":"fromBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":428,"src":"6570:11:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"6584:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6570:19:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6552:37:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":451,"nodeType":"ExpressionStatement","src":"6552:37:2"}]}]},"id":454,"nodeType":"IfStatement","src":"6074:540:2","trueBody":{"id":426,"nodeType":"Block","src":"6098:148:2","statements":[{"expression":{"id":424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":422,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"6214:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":423,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"6230:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6214:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":425,"nodeType":"ExpressionStatement","src":"6214:21:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":455,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"6628:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":458,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6642:1:2","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":457,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6634:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":456,"name":"address","nodeType":"ElementaryTypeName","src":"6634:7:2","typeDescriptions":{}}},"id":459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6634:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6628:16:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":474,"nodeType":"Block","src":"6843:206:2","statements":[{"id":473,"nodeType":"UncheckedBlock","src":"6857:182:2","statements":[{"expression":{"id":471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":467,"name":"_balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":184,"src":"7002:9:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":469,"indexExpression":{"id":468,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"7012:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7002:13:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":470,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"7019:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7002:22:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":472,"nodeType":"ExpressionStatement","src":"7002:22:2"}]}]},"id":475,"nodeType":"IfStatement","src":"6624:425:2","trueBody":{"id":466,"nodeType":"Block","src":"6646:191:2","statements":[{"id":465,"nodeType":"UncheckedBlock","src":"6660:167:2","statements":[{"expression":{"id":463,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":461,"name":"_totalSupply","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":192,"src":"6791:12:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":462,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"6807:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6791:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":464,"nodeType":"ExpressionStatement","src":"6791:21:2"}]}]}},{"eventCall":{"arguments":[{"id":477,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":409,"src":"7073:4:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":478,"name":"to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":411,"src":"7079:2:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":479,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":413,"src":"7083:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":476,"name":"Transfer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":688,"src":"7064:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7064:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":481,"nodeType":"EmitStatement","src":"7059:30:2"}]},"documentation":{"id":407,"nodeType":"StructuredDocumentation","src":"5680:304:2","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":483,"implemented":true,"kind":"function","modifiers":[],"name":"_update","nameLocation":"5998:7:2","nodeType":"FunctionDefinition","parameters":{"id":414,"nodeType":"ParameterList","parameters":[{"constant":false,"id":409,"mutability":"mutable","name":"from","nameLocation":"6014:4:2","nodeType":"VariableDeclaration","scope":483,"src":"6006:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":408,"name":"address","nodeType":"ElementaryTypeName","src":"6006:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":411,"mutability":"mutable","name":"to","nameLocation":"6028:2:2","nodeType":"VariableDeclaration","scope":483,"src":"6020:10:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":410,"name":"address","nodeType":"ElementaryTypeName","src":"6020:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":413,"mutability":"mutable","name":"value","nameLocation":"6040:5:2","nodeType":"VariableDeclaration","scope":483,"src":"6032:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":412,"name":"uint256","nodeType":"ElementaryTypeName","src":"6032:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6005:41:2"},"returnParameters":{"id":415,"nodeType":"ParameterList","parameters":[],"src":"6064:0:2"},"scope":676,"src":"5989:1107:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":515,"nodeType":"Block","src":"7495:152:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":491,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"7509:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7528:1:2","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":493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7520:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":492,"name":"address","nodeType":"ElementaryTypeName","src":"7520:7:2","typeDescriptions":{}}},"id":495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7520:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7509:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":505,"nodeType":"IfStatement","src":"7505:91:2","trueBody":{"id":504,"nodeType":"Block","src":"7532:64:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7582:1:2","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":499,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7574:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":498,"name":"address","nodeType":"ElementaryTypeName","src":"7574:7:2","typeDescriptions":{}}},"id":501,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7574:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":497,"name":"ERC20InvalidReceiver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46,"src":"7553:20:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7553:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":503,"nodeType":"RevertStatement","src":"7546:39:2"}]}},{"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7621:1:2","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":508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7613:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":507,"name":"address","nodeType":"ElementaryTypeName","src":"7613:7:2","typeDescriptions":{}}},"id":510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7613:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":511,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":486,"src":"7625:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":512,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":488,"src":"7634:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":506,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"7605:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7605:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":514,"nodeType":"ExpressionStatement","src":"7605:35:2"}]},"documentation":{"id":484,"nodeType":"StructuredDocumentation","src":"7102:332:2","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":516,"implemented":true,"kind":"function","modifiers":[],"name":"_mint","nameLocation":"7448:5:2","nodeType":"FunctionDefinition","parameters":{"id":489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":486,"mutability":"mutable","name":"account","nameLocation":"7462:7:2","nodeType":"VariableDeclaration","scope":516,"src":"7454:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":485,"name":"address","nodeType":"ElementaryTypeName","src":"7454:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":488,"mutability":"mutable","name":"value","nameLocation":"7479:5:2","nodeType":"VariableDeclaration","scope":516,"src":"7471:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":487,"name":"uint256","nodeType":"ElementaryTypeName","src":"7471:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7453:32:2"},"returnParameters":{"id":490,"nodeType":"ParameterList","parameters":[],"src":"7495:0:2"},"scope":676,"src":"7439:208:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":548,"nodeType":"Block","src":"8021:150:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":524,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8035:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8054:1:2","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":526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8046:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"8046:7:2","typeDescriptions":{}}},"id":528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8046:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8035:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":538,"nodeType":"IfStatement","src":"8031:89:2","trueBody":{"id":537,"nodeType":"Block","src":"8058:62:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8106:1:2","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":532,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8098:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":531,"name":"address","nodeType":"ElementaryTypeName","src":"8098:7:2","typeDescriptions":{}}},"id":534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8098:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":530,"name":"ERC20InvalidSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":41,"src":"8079:18:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8079:30:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":536,"nodeType":"RevertStatement","src":"8072:37:2"}]}},{"expression":{"arguments":[{"id":540,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"8137:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8154:1:2","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":542,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8146:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":541,"name":"address","nodeType":"ElementaryTypeName","src":"8146:7:2","typeDescriptions":{}}},"id":544,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8146:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":545,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"8158:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":539,"name":"_update","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":483,"src":"8129:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8129:35:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":547,"nodeType":"ExpressionStatement","src":"8129:35:2"}]},"documentation":{"id":517,"nodeType":"StructuredDocumentation","src":"7653:307:2","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":549,"implemented":true,"kind":"function","modifiers":[],"name":"_burn","nameLocation":"7974:5:2","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"account","nameLocation":"7988:7:2","nodeType":"VariableDeclaration","scope":549,"src":"7980:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":518,"name":"address","nodeType":"ElementaryTypeName","src":"7980:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"value","nameLocation":"8005:5:2","nodeType":"VariableDeclaration","scope":549,"src":"7997:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"7997:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7979:32:2"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[],"src":"8021:0:2"},"scope":676,"src":"7965:206:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":566,"nodeType":"Block","src":"8781:54:2","statements":[{"expression":{"arguments":[{"id":560,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":552,"src":"8800:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":561,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":554,"src":"8807:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":562,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":556,"src":"8816:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"74727565","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"8823:4:2","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":559,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[567,627],"referencedDeclaration":627,"src":"8791:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8791:37:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":565,"nodeType":"ExpressionStatement","src":"8791:37:2"}]},"documentation":{"id":550,"nodeType":"StructuredDocumentation","src":"8177:525:2","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":567,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"8716:8:2","nodeType":"FunctionDefinition","parameters":{"id":557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":552,"mutability":"mutable","name":"owner","nameLocation":"8733:5:2","nodeType":"VariableDeclaration","scope":567,"src":"8725:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":551,"name":"address","nodeType":"ElementaryTypeName","src":"8725:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":554,"mutability":"mutable","name":"spender","nameLocation":"8748:7:2","nodeType":"VariableDeclaration","scope":567,"src":"8740:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":553,"name":"address","nodeType":"ElementaryTypeName","src":"8740:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":556,"mutability":"mutable","name":"value","nameLocation":"8765:5:2","nodeType":"VariableDeclaration","scope":567,"src":"8757:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":555,"name":"uint256","nodeType":"ElementaryTypeName","src":"8757:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8724:47:2"},"returnParameters":{"id":558,"nodeType":"ParameterList","parameters":[],"src":"8781:0:2"},"scope":676,"src":"8707:128:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":626,"nodeType":"Block","src":"9780:334:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":584,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":579,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"9794:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9811:1:2","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":581,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9803:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":580,"name":"address","nodeType":"ElementaryTypeName","src":"9803:7:2","typeDescriptions":{}}},"id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9794:19:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":593,"nodeType":"IfStatement","src":"9790:89:2","trueBody":{"id":592,"nodeType":"Block","src":"9815:64:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":588,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9865:1:2","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":587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9857:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":586,"name":"address","nodeType":"ElementaryTypeName","src":"9857:7:2","typeDescriptions":{}}},"id":589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9857:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":585,"name":"ERC20InvalidApprover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60,"src":"9836:20:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":590,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9836:32:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":591,"nodeType":"RevertStatement","src":"9829:39:2"}]}},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":599,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":594,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":572,"src":"9892:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9911:1:2","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":596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9903:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":595,"name":"address","nodeType":"ElementaryTypeName","src":"9903:7:2","typeDescriptions":{}}},"id":598,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9903:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9892:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":608,"nodeType":"IfStatement","src":"9888:90:2","trueBody":{"id":607,"nodeType":"Block","src":"9915:63:2","statements":[{"errorCall":{"arguments":[{"arguments":[{"hexValue":"30","id":603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9964:1:2","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":602,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9956:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":601,"name":"address","nodeType":"ElementaryTypeName","src":"9956:7:2","typeDescriptions":{}}},"id":604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9956:10:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":600,"name":"ERC20InvalidSpender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":65,"src":"9936:19:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9936:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":606,"nodeType":"RevertStatement","src":"9929:38:2"}]}},{"expression":{"id":615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":609,"name":"_allowances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":190,"src":"9987:11:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":612,"indexExpression":{"id":610,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"9999:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9987:18:2","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":613,"indexExpression":{"id":611,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":572,"src":"10006:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9987:27:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":614,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"10017:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9987:35:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":616,"nodeType":"ExpressionStatement","src":"9987:35:2"},{"condition":{"id":617,"name":"emitEvent","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":576,"src":"10036:9:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":625,"nodeType":"IfStatement","src":"10032:76:2","trueBody":{"id":624,"nodeType":"Block","src":"10047:61:2","statements":[{"eventCall":{"arguments":[{"id":619,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":570,"src":"10075:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":620,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":572,"src":"10082:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":621,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":574,"src":"10091:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":618,"name":"Approval","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":697,"src":"10066:8:2","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10066:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":623,"nodeType":"EmitStatement","src":"10061:36:2"}]}}]},"documentation":{"id":568,"nodeType":"StructuredDocumentation","src":"8841:836:2","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":627,"implemented":true,"kind":"function","modifiers":[],"name":"_approve","nameLocation":"9691:8:2","nodeType":"FunctionDefinition","parameters":{"id":577,"nodeType":"ParameterList","parameters":[{"constant":false,"id":570,"mutability":"mutable","name":"owner","nameLocation":"9708:5:2","nodeType":"VariableDeclaration","scope":627,"src":"9700:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":569,"name":"address","nodeType":"ElementaryTypeName","src":"9700:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":572,"mutability":"mutable","name":"spender","nameLocation":"9723:7:2","nodeType":"VariableDeclaration","scope":627,"src":"9715:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":571,"name":"address","nodeType":"ElementaryTypeName","src":"9715:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":574,"mutability":"mutable","name":"value","nameLocation":"9740:5:2","nodeType":"VariableDeclaration","scope":627,"src":"9732:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":573,"name":"uint256","nodeType":"ElementaryTypeName","src":"9732:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":576,"mutability":"mutable","name":"emitEvent","nameLocation":"9752:9:2","nodeType":"VariableDeclaration","scope":627,"src":"9747:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":575,"name":"bool","nodeType":"ElementaryTypeName","src":"9747:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9699:63:2"},"returnParameters":{"id":578,"nodeType":"ParameterList","parameters":[],"src":"9780:0:2"},"scope":676,"src":"9682:432:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":674,"nodeType":"Block","src":"10485:387:2","statements":[{"assignments":[638],"declarations":[{"constant":false,"id":638,"mutability":"mutable","name":"currentAllowance","nameLocation":"10503:16:2","nodeType":"VariableDeclaration","scope":674,"src":"10495:24:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":637,"name":"uint256","nodeType":"ElementaryTypeName","src":"10495:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":643,"initialValue":{"arguments":[{"id":640,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"10532:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":641,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"10539:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":639,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":303,"src":"10522:9:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10522:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10495:52:2"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":644,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10561:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"arguments":[{"id":647,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10585:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":646,"name":"uint256","nodeType":"ElementaryTypeName","src":"10585:7:2","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":645,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10580:4:2","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":648,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10580:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10594:3:2","memberName":"max","nodeType":"MemberAccess","src":"10580:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10561:36:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":673,"nodeType":"IfStatement","src":"10557:309:2","trueBody":{"id":672,"nodeType":"Block","src":"10599:267:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":651,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10617:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"10636:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10617:24:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":661,"nodeType":"IfStatement","src":"10613:130:2","trueBody":{"id":660,"nodeType":"Block","src":"10643:100:2","statements":[{"errorCall":{"arguments":[{"id":655,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"10695:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":656,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10704:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":657,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"10722:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":654,"name":"ERC20InsufficientAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55,"src":"10668:26:2","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256,uint256) pure returns (error)"}},"id":658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10668:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":659,"nodeType":"RevertStatement","src":"10661:67:2"}]}},{"id":671,"nodeType":"UncheckedBlock","src":"10756:100:2","statements":[{"expression":{"arguments":[{"id":663,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":630,"src":"10793:5:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":664,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":632,"src":"10800:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":665,"name":"currentAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":638,"src":"10809:16:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":666,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"10828:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10809:24:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"66616c7365","id":668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10835:5:2","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":662,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[567,627],"referencedDeclaration":627,"src":"10784:8:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bool_$returns$__$","typeString":"function (address,address,uint256,bool)"}},"id":669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10784:57:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":670,"nodeType":"ExpressionStatement","src":"10784:57:2"}]}]}}]},"documentation":{"id":628,"nodeType":"StructuredDocumentation","src":"10120:271:2","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":675,"implemented":true,"kind":"function","modifiers":[],"name":"_spendAllowance","nameLocation":"10405:15:2","nodeType":"FunctionDefinition","parameters":{"id":635,"nodeType":"ParameterList","parameters":[{"constant":false,"id":630,"mutability":"mutable","name":"owner","nameLocation":"10429:5:2","nodeType":"VariableDeclaration","scope":675,"src":"10421:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":629,"name":"address","nodeType":"ElementaryTypeName","src":"10421:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":632,"mutability":"mutable","name":"spender","nameLocation":"10444:7:2","nodeType":"VariableDeclaration","scope":675,"src":"10436:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":631,"name":"address","nodeType":"ElementaryTypeName","src":"10436:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":634,"mutability":"mutable","name":"value","nameLocation":"10461:5:2","nodeType":"VariableDeclaration","scope":675,"src":"10453:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":633,"name":"uint256","nodeType":"ElementaryTypeName","src":"10453:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10420:47:2"},"returnParameters":{"id":636,"nodeType":"ParameterList","parameters":[],"src":"10485:0:2"},"scope":676,"src":"10396:476:2","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":677,"src":"1106:9768:2","usedErrors":[36,41,46,55,60,65],"usedEvents":[688,697]}],"src":"105:10770:2"},"id":2},"@openzeppelin/contracts/token/ERC20/IERC20.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","exportedSymbols":{"IERC20":[754]},"id":755,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":678,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:3"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20","contractDependencies":[],"contractKind":"interface","documentation":{"id":679,"nodeType":"StructuredDocumentation","src":"132:71:3","text":" @dev Interface of the ERC-20 standard as defined in the ERC."},"fullyImplemented":false,"id":754,"linearizedBaseContracts":[754],"name":"IERC20","nameLocation":"214:6:3","nodeType":"ContractDefinition","nodes":[{"anonymous":false,"documentation":{"id":680,"nodeType":"StructuredDocumentation","src":"227:158:3","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":688,"name":"Transfer","nameLocation":"396:8:3","nodeType":"EventDefinition","parameters":{"id":687,"nodeType":"ParameterList","parameters":[{"constant":false,"id":682,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"421:4:3","nodeType":"VariableDeclaration","scope":688,"src":"405:20:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":681,"name":"address","nodeType":"ElementaryTypeName","src":"405:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":684,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"443:2:3","nodeType":"VariableDeclaration","scope":688,"src":"427:18:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":683,"name":"address","nodeType":"ElementaryTypeName","src":"427:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":686,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"455:5:3","nodeType":"VariableDeclaration","scope":688,"src":"447:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":685,"name":"uint256","nodeType":"ElementaryTypeName","src":"447:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"404:57:3"},"src":"390:72:3"},{"anonymous":false,"documentation":{"id":689,"nodeType":"StructuredDocumentation","src":"468:148:3","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":697,"name":"Approval","nameLocation":"627:8:3","nodeType":"EventDefinition","parameters":{"id":696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":691,"indexed":true,"mutability":"mutable","name":"owner","nameLocation":"652:5:3","nodeType":"VariableDeclaration","scope":697,"src":"636:21:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":690,"name":"address","nodeType":"ElementaryTypeName","src":"636:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":693,"indexed":true,"mutability":"mutable","name":"spender","nameLocation":"675:7:3","nodeType":"VariableDeclaration","scope":697,"src":"659:23:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":692,"name":"address","nodeType":"ElementaryTypeName","src":"659:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":695,"indexed":false,"mutability":"mutable","name":"value","nameLocation":"692:5:3","nodeType":"VariableDeclaration","scope":697,"src":"684:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":694,"name":"uint256","nodeType":"ElementaryTypeName","src":"684:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"635:63:3"},"src":"621:78:3"},{"documentation":{"id":698,"nodeType":"StructuredDocumentation","src":"705:65:3","text":" @dev Returns the value of tokens in existence."},"functionSelector":"18160ddd","id":703,"implemented":false,"kind":"function","modifiers":[],"name":"totalSupply","nameLocation":"784:11:3","nodeType":"FunctionDefinition","parameters":{"id":699,"nodeType":"ParameterList","parameters":[],"src":"795:2:3"},"returnParameters":{"id":702,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":703,"src":"821:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":700,"name":"uint256","nodeType":"ElementaryTypeName","src":"821:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"820:9:3"},"scope":754,"src":"775:55:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":704,"nodeType":"StructuredDocumentation","src":"836:71:3","text":" @dev Returns the value of tokens owned by `account`."},"functionSelector":"70a08231","id":711,"implemented":false,"kind":"function","modifiers":[],"name":"balanceOf","nameLocation":"921:9:3","nodeType":"FunctionDefinition","parameters":{"id":707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":706,"mutability":"mutable","name":"account","nameLocation":"939:7:3","nodeType":"VariableDeclaration","scope":711,"src":"931:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":705,"name":"address","nodeType":"ElementaryTypeName","src":"931:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"930:17:3"},"returnParameters":{"id":710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":711,"src":"971:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":708,"name":"uint256","nodeType":"ElementaryTypeName","src":"971:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"970:9:3"},"scope":754,"src":"912:68:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":712,"nodeType":"StructuredDocumentation","src":"986:213:3","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":721,"implemented":false,"kind":"function","modifiers":[],"name":"transfer","nameLocation":"1213:8:3","nodeType":"FunctionDefinition","parameters":{"id":717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":714,"mutability":"mutable","name":"to","nameLocation":"1230:2:3","nodeType":"VariableDeclaration","scope":721,"src":"1222:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":713,"name":"address","nodeType":"ElementaryTypeName","src":"1222:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":716,"mutability":"mutable","name":"value","nameLocation":"1242:5:3","nodeType":"VariableDeclaration","scope":721,"src":"1234:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":715,"name":"uint256","nodeType":"ElementaryTypeName","src":"1234:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1221:27:3"},"returnParameters":{"id":720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":719,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":721,"src":"1267:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":718,"name":"bool","nodeType":"ElementaryTypeName","src":"1267:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1266:6:3"},"scope":754,"src":"1204:69:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":722,"nodeType":"StructuredDocumentation","src":"1279:264:3","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":731,"implemented":false,"kind":"function","modifiers":[],"name":"allowance","nameLocation":"1557:9:3","nodeType":"FunctionDefinition","parameters":{"id":727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":724,"mutability":"mutable","name":"owner","nameLocation":"1575:5:3","nodeType":"VariableDeclaration","scope":731,"src":"1567:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":723,"name":"address","nodeType":"ElementaryTypeName","src":"1567:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":726,"mutability":"mutable","name":"spender","nameLocation":"1590:7:3","nodeType":"VariableDeclaration","scope":731,"src":"1582:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":725,"name":"address","nodeType":"ElementaryTypeName","src":"1582:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1566:32:3"},"returnParameters":{"id":730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":729,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":731,"src":"1622:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":728,"name":"uint256","nodeType":"ElementaryTypeName","src":"1622:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1621:9:3"},"scope":754,"src":"1548:83:3","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":732,"nodeType":"StructuredDocumentation","src":"1637:667:3","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":741,"implemented":false,"kind":"function","modifiers":[],"name":"approve","nameLocation":"2318:7:3","nodeType":"FunctionDefinition","parameters":{"id":737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":734,"mutability":"mutable","name":"spender","nameLocation":"2334:7:3","nodeType":"VariableDeclaration","scope":741,"src":"2326:15:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":733,"name":"address","nodeType":"ElementaryTypeName","src":"2326:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":736,"mutability":"mutable","name":"value","nameLocation":"2351:5:3","nodeType":"VariableDeclaration","scope":741,"src":"2343:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":735,"name":"uint256","nodeType":"ElementaryTypeName","src":"2343:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2325:32:3"},"returnParameters":{"id":740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":739,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":741,"src":"2376:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":738,"name":"bool","nodeType":"ElementaryTypeName","src":"2376:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2375:6:3"},"scope":754,"src":"2309:73:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":742,"nodeType":"StructuredDocumentation","src":"2388:297:3","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":753,"implemented":false,"kind":"function","modifiers":[],"name":"transferFrom","nameLocation":"2699:12:3","nodeType":"FunctionDefinition","parameters":{"id":749,"nodeType":"ParameterList","parameters":[{"constant":false,"id":744,"mutability":"mutable","name":"from","nameLocation":"2720:4:3","nodeType":"VariableDeclaration","scope":753,"src":"2712:12:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":743,"name":"address","nodeType":"ElementaryTypeName","src":"2712:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":746,"mutability":"mutable","name":"to","nameLocation":"2734:2:3","nodeType":"VariableDeclaration","scope":753,"src":"2726:10:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":745,"name":"address","nodeType":"ElementaryTypeName","src":"2726:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":748,"mutability":"mutable","name":"value","nameLocation":"2746:5:3","nodeType":"VariableDeclaration","scope":753,"src":"2738:13:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":747,"name":"uint256","nodeType":"ElementaryTypeName","src":"2738:7:3","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2711:41:3"},"returnParameters":{"id":752,"nodeType":"ParameterList","parameters":[{"constant":false,"id":751,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":753,"src":"2771:4:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":750,"name":"bool","nodeType":"ElementaryTypeName","src":"2771:4:3","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2770:6:3"},"scope":754,"src":"2690:87:3","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":755,"src":"204:2575:3","usedErrors":[],"usedEvents":[688,697]}],"src":"106:2674:3"},"id":3},"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol","exportedSymbols":{"ECDSA":[3211],"EIP712":[3438],"ERC20":[676],"ERC20Permit":[908],"IERC20Permit":[970],"Nonces":[1068]},"id":909,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":756,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"122:24:4"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","file":"./IERC20Permit.sol","id":758,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":909,"sourceUnit":971,"src":"148:48:4","symbolAliases":[{"foreign":{"id":757,"name":"IERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":970,"src":"156:12:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"../ERC20.sol","id":760,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":909,"sourceUnit":677,"src":"197:35:4","symbolAliases":[{"foreign":{"id":759,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"205:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","file":"../../../utils/cryptography/ECDSA.sol","id":762,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":909,"sourceUnit":3212,"src":"233:60:4","symbolAliases":[{"foreign":{"id":761,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3211,"src":"241:5:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","file":"../../../utils/cryptography/EIP712.sol","id":764,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":909,"sourceUnit":3439,"src":"294:62:4","symbolAliases":[{"foreign":{"id":763,"name":"EIP712","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3438,"src":"302:6:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Nonces.sol","file":"../../../utils/Nonces.sol","id":766,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":909,"sourceUnit":1069,"src":"357:49:4","symbolAliases":[{"foreign":{"id":765,"name":"Nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1068,"src":"365:6:4","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":768,"name":"ERC20","nameLocations":["931:5:4"],"nodeType":"IdentifierPath","referencedDeclaration":676,"src":"931:5:4"},"id":769,"nodeType":"InheritanceSpecifier","src":"931:5:4"},{"baseName":{"id":770,"name":"IERC20Permit","nameLocations":["938:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":970,"src":"938:12:4"},"id":771,"nodeType":"InheritanceSpecifier","src":"938:12:4"},{"baseName":{"id":772,"name":"EIP712","nameLocations":["952:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":3438,"src":"952:6:4"},"id":773,"nodeType":"InheritanceSpecifier","src":"952:6:4"},{"baseName":{"id":774,"name":"Nonces","nameLocations":["960:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":1068,"src":"960:6:4"},"id":775,"nodeType":"InheritanceSpecifier","src":"960:6:4"}],"canonicalName":"ERC20Permit","contractDependencies":[],"contractKind":"contract","documentation":{"id":767,"nodeType":"StructuredDocumentation","src":"408:489:4","text":" @dev Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all."},"fullyImplemented":true,"id":908,"linearizedBaseContracts":[908,1068,3438,24,970,676,66,934,754,1000],"name":"ERC20Permit","nameLocation":"916:11:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":780,"mutability":"constant","name":"PERMIT_TYPEHASH","nameLocation":"998:15:4","nodeType":"VariableDeclaration","scope":908,"src":"973:146:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":776,"name":"bytes32","nodeType":"ElementaryTypeName","src":"973:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529","id":778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1034:84:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""},"value":"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9","typeString":"literal_string \"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\""}],"id":777,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1024:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1024:95:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"documentation":{"id":781,"nodeType":"StructuredDocumentation","src":"1126:52:4","text":" @dev Permit deadline has expired."},"errorSelector":"62791302","id":785,"name":"ERC2612ExpiredSignature","nameLocation":"1189:23:4","nodeType":"ErrorDefinition","parameters":{"id":784,"nodeType":"ParameterList","parameters":[{"constant":false,"id":783,"mutability":"mutable","name":"deadline","nameLocation":"1221:8:4","nodeType":"VariableDeclaration","scope":785,"src":"1213:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":782,"name":"uint256","nodeType":"ElementaryTypeName","src":"1213:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1212:18:4"},"src":"1183:48:4"},{"documentation":{"id":786,"nodeType":"StructuredDocumentation","src":"1237:45:4","text":" @dev Mismatched signature."},"errorSelector":"4b800e46","id":792,"name":"ERC2612InvalidSigner","nameLocation":"1293:20:4","nodeType":"ErrorDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":788,"mutability":"mutable","name":"signer","nameLocation":"1322:6:4","nodeType":"VariableDeclaration","scope":792,"src":"1314:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":787,"name":"address","nodeType":"ElementaryTypeName","src":"1314:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"owner","nameLocation":"1338:5:4","nodeType":"VariableDeclaration","scope":792,"src":"1330:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":789,"name":"address","nodeType":"ElementaryTypeName","src":"1330:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1313:31:4"},"src":"1287:58:4"},{"body":{"id":802,"nodeType":"Block","src":"1627:2:4","statements":[]},"documentation":{"id":793,"nodeType":"StructuredDocumentation","src":"1351:221:4","text":" @dev Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\"1\"`.\n It's a good idea to use the same `name` that is defined as the ERC-20 token name."},"id":803,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"id":798,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":795,"src":"1616:4:4","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"31","id":799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1622:3:4","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"id":800,"kind":"baseConstructorSpecifier","modifierName":{"id":797,"name":"EIP712","nameLocations":["1609:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":3438,"src":"1609:6:4"},"nodeType":"ModifierInvocation","src":"1609:17:4"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":796,"nodeType":"ParameterList","parameters":[{"constant":false,"id":795,"mutability":"mutable","name":"name","nameLocation":"1603:4:4","nodeType":"VariableDeclaration","scope":803,"src":"1589:18:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":794,"name":"string","nodeType":"ElementaryTypeName","src":"1589:6:4","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1588:20:4"},"returnParameters":{"id":801,"nodeType":"ParameterList","parameters":[],"src":"1627:0:4"},"scope":908,"src":"1577:52:4","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"baseFunctions":[955],"body":{"id":879,"nodeType":"Block","src":"1872:483:4","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":821,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"1886:5:4","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1892:9:4","memberName":"timestamp","nodeType":"MemberAccess","src":"1886:15:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":823,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":812,"src":"1904:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1886:26:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":830,"nodeType":"IfStatement","src":"1882:97:4","trueBody":{"id":829,"nodeType":"Block","src":"1914:65:4","statements":[{"errorCall":{"arguments":[{"id":826,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":812,"src":"1959:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":825,"name":"ERC2612ExpiredSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":785,"src":"1935:23:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1935:33:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":828,"nodeType":"RevertStatement","src":"1928:40:4"}]}},{"assignments":[832],"declarations":[{"constant":false,"id":832,"mutability":"mutable","name":"structHash","nameLocation":"1997:10:4","nodeType":"VariableDeclaration","scope":879,"src":"1989:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1989:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":846,"initialValue":{"arguments":[{"arguments":[{"id":836,"name":"PERMIT_TYPEHASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":780,"src":"2031:15:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":837,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2048:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":838,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2055:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":839,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"2064:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":841,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2081:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":840,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"2071:9:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2071:16:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":843,"name":"deadline","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":812,"src":"2089:8:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":834,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2020:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":835,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2024:6:4","memberName":"encode","nodeType":"MemberAccess","src":"2020:10:4","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":844,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2020:78:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":833,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2010:9:4","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2010:89:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"1989:110:4"},{"assignments":[848],"declarations":[{"constant":false,"id":848,"mutability":"mutable","name":"hash","nameLocation":"2118:4:4","nodeType":"VariableDeclaration","scope":879,"src":"2110:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":847,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2110:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":852,"initialValue":{"arguments":[{"id":850,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":832,"src":"2142:10:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":849,"name":"_hashTypedDataV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3371,"src":"2125:16:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2125:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"2110:43:4"},{"assignments":[854],"declarations":[{"constant":false,"id":854,"mutability":"mutable","name":"signer","nameLocation":"2172:6:4","nodeType":"VariableDeclaration","scope":879,"src":"2164:14:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":853,"name":"address","nodeType":"ElementaryTypeName","src":"2164:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":862,"initialValue":{"arguments":[{"id":857,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":848,"src":"2195:4:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":858,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":814,"src":"2201:1:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":859,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":816,"src":"2204:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":860,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":818,"src":"2207:1:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":855,"name":"ECDSA","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3211,"src":"2181:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ECDSA_$3211_$","typeString":"type(library ECDSA)"}},"id":856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2187:7:4","memberName":"recover","nodeType":"MemberAccess","referencedDeclaration":3161,"src":"2181:13:4","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":861,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2181:28:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2164:45:4"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":865,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":863,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2223:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":864,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2233:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2223:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":872,"nodeType":"IfStatement","src":"2219:88:4","trueBody":{"id":871,"nodeType":"Block","src":"2240:67:4","statements":[{"errorCall":{"arguments":[{"id":867,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":854,"src":"2282:6:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":868,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2290:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":866,"name":"ERC2612InvalidSigner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":792,"src":"2261:20:4","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_address_$returns$_t_error_$","typeString":"function (address,address) pure returns (error)"}},"id":869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2261:35:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":870,"nodeType":"RevertStatement","src":"2254:42:4"}]}},{"expression":{"arguments":[{"id":874,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":806,"src":"2326:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":875,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":808,"src":"2333:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":876,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":810,"src":"2342:5:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":873,"name":"_approve","nodeType":"Identifier","overloadedDeclarations":[567,627],"referencedDeclaration":567,"src":"2317:8:4","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256)"}},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2317:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":878,"nodeType":"ExpressionStatement","src":"2317:31:4"}]},"documentation":{"id":804,"nodeType":"StructuredDocumentation","src":"1635:43:4","text":" @inheritdoc IERC20Permit"},"functionSelector":"d505accf","id":880,"implemented":true,"kind":"function","modifiers":[],"name":"permit","nameLocation":"1692:6:4","nodeType":"FunctionDefinition","parameters":{"id":819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":806,"mutability":"mutable","name":"owner","nameLocation":"1716:5:4","nodeType":"VariableDeclaration","scope":880,"src":"1708:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":805,"name":"address","nodeType":"ElementaryTypeName","src":"1708:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":808,"mutability":"mutable","name":"spender","nameLocation":"1739:7:4","nodeType":"VariableDeclaration","scope":880,"src":"1731:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":807,"name":"address","nodeType":"ElementaryTypeName","src":"1731:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":810,"mutability":"mutable","name":"value","nameLocation":"1764:5:4","nodeType":"VariableDeclaration","scope":880,"src":"1756:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":809,"name":"uint256","nodeType":"ElementaryTypeName","src":"1756:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":812,"mutability":"mutable","name":"deadline","nameLocation":"1787:8:4","nodeType":"VariableDeclaration","scope":880,"src":"1779:16:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":811,"name":"uint256","nodeType":"ElementaryTypeName","src":"1779:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":814,"mutability":"mutable","name":"v","nameLocation":"1811:1:4","nodeType":"VariableDeclaration","scope":880,"src":"1805:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":813,"name":"uint8","nodeType":"ElementaryTypeName","src":"1805:5:4","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":816,"mutability":"mutable","name":"r","nameLocation":"1830:1:4","nodeType":"VariableDeclaration","scope":880,"src":"1822:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":815,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1822:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":818,"mutability":"mutable","name":"s","nameLocation":"1849:1:4","nodeType":"VariableDeclaration","scope":880,"src":"1841:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":817,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1841:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1698:158:4"},"returnParameters":{"id":820,"nodeType":"ParameterList","parameters":[],"src":"1872:0:4"},"scope":908,"src":"1683:672:4","stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"baseFunctions":[963,1027],"body":{"id":896,"nodeType":"Block","src":"2509:43:4","statements":[{"expression":{"arguments":[{"id":893,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"2539:5:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":891,"name":"super","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-25,"src":"2526:5:4","typeDescriptions":{"typeIdentifier":"t_type$_t_superMATH_PLACEHOLDER_143908_$","typeString":"type(contract super ERC20Permit)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2532:6:4","memberName":"nonces","nodeType":"MemberAccess","referencedDeclaration":1027,"src":"2526:12:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2526:19:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":890,"id":895,"nodeType":"Return","src":"2519:26:4"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"2361:43:4","text":" @inheritdoc IERC20Permit"},"functionSelector":"7ecebe00","id":897,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"2418:6:4","nodeType":"FunctionDefinition","overrides":{"id":887,"nodeType":"OverrideSpecifier","overrides":[{"id":885,"name":"IERC20Permit","nameLocations":["2469:12:4"],"nodeType":"IdentifierPath","referencedDeclaration":970,"src":"2469:12:4"},{"id":886,"name":"Nonces","nameLocations":["2483:6:4"],"nodeType":"IdentifierPath","referencedDeclaration":1068,"src":"2483:6:4"}],"src":"2460:30:4"},"parameters":{"id":884,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"owner","nameLocation":"2433:5:4","nodeType":"VariableDeclaration","scope":897,"src":"2425:13:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"2425:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2424:15:4"},"returnParameters":{"id":890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":889,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":897,"src":"2500:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":888,"name":"uint256","nodeType":"ElementaryTypeName","src":"2500:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2499:9:4"},"scope":908,"src":"2409:143:4","stateMutability":"view","virtual":true,"visibility":"public"},{"baseFunctions":[969],"body":{"id":906,"nodeType":"Block","src":"2727:44:4","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":903,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"2744:18:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":904,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2744:20:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":902,"id":905,"nodeType":"Return","src":"2737:27:4"}]},"documentation":{"id":898,"nodeType":"StructuredDocumentation","src":"2558:43:4","text":" @inheritdoc IERC20Permit"},"functionSelector":"3644e515","id":907,"implemented":true,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"2668:16:4","nodeType":"FunctionDefinition","parameters":{"id":899,"nodeType":"ParameterList","parameters":[],"src":"2684:2:4"},"returnParameters":{"id":902,"nodeType":"ParameterList","parameters":[{"constant":false,"id":901,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":907,"src":"2718:7:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":900,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2718:7:4","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2717:9:4"},"scope":908,"src":"2659:112:4","stateMutability":"view","virtual":true,"visibility":"external"}],"scope":909,"src":"898:1875:4","usedErrors":[36,41,46,55,60,65,785,792,1010,1134,1136,2874,2879,2884],"usedEvents":[4,688,697]}],"src":"122:2652:4"},"id":4},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol","exportedSymbols":{"IERC20":[754],"IERC20Metadata":[934]},"id":935,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":910,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"125:24:5"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/IERC20.sol","file":"../IERC20.sol","id":912,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":935,"sourceUnit":755,"src":"151:37:5","symbolAliases":[{"foreign":{"id":911,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":754,"src":"159:6:5","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":914,"name":"IERC20","nameLocations":["306:6:5"],"nodeType":"IdentifierPath","referencedDeclaration":754,"src":"306:6:5"},"id":915,"nodeType":"InheritanceSpecifier","src":"306:6:5"}],"canonicalName":"IERC20Metadata","contractDependencies":[],"contractKind":"interface","documentation":{"id":913,"nodeType":"StructuredDocumentation","src":"190:87:5","text":" @dev Interface for the optional metadata functions from the ERC-20 standard."},"fullyImplemented":false,"id":934,"linearizedBaseContracts":[934,754],"name":"IERC20Metadata","nameLocation":"288:14:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":916,"nodeType":"StructuredDocumentation","src":"319:54:5","text":" @dev Returns the name of the token."},"functionSelector":"06fdde03","id":921,"implemented":false,"kind":"function","modifiers":[],"name":"name","nameLocation":"387:4:5","nodeType":"FunctionDefinition","parameters":{"id":917,"nodeType":"ParameterList","parameters":[],"src":"391:2:5"},"returnParameters":{"id":920,"nodeType":"ParameterList","parameters":[{"constant":false,"id":919,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":921,"src":"417:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":918,"name":"string","nodeType":"ElementaryTypeName","src":"417:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"416:15:5"},"scope":934,"src":"378:54:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":922,"nodeType":"StructuredDocumentation","src":"438:56:5","text":" @dev Returns the symbol of the token."},"functionSelector":"95d89b41","id":927,"implemented":false,"kind":"function","modifiers":[],"name":"symbol","nameLocation":"508:6:5","nodeType":"FunctionDefinition","parameters":{"id":923,"nodeType":"ParameterList","parameters":[],"src":"514:2:5"},"returnParameters":{"id":926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":927,"src":"540:13:5","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":924,"name":"string","nodeType":"ElementaryTypeName","src":"540:6:5","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"539:15:5"},"scope":934,"src":"499:56:5","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":928,"nodeType":"StructuredDocumentation","src":"561:65:5","text":" @dev Returns the decimals places of the token."},"functionSelector":"313ce567","id":933,"implemented":false,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"640:8:5","nodeType":"FunctionDefinition","parameters":{"id":929,"nodeType":"ParameterList","parameters":[],"src":"648:2:5"},"returnParameters":{"id":932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":931,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":933,"src":"674:5:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":930,"name":"uint8","nodeType":"ElementaryTypeName","src":"674:5:5","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"673:7:5"},"scope":934,"src":"631:50:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":935,"src":"278:405:5","usedErrors":[],"usedEvents":[688,697]}],"src":"125:559:5"},"id":5},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol","exportedSymbols":{"IERC20Permit":[970]},"id":971,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":936,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:6"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC20Permit","contractDependencies":[],"contractKind":"interface","documentation":{"id":937,"nodeType":"StructuredDocumentation","src":"149:1965:6","text":" @dev Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in\n https://eips.ethereum.org/EIPS/eip-2612[ERC-2612].\n Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by\n presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't\n need to send a transaction, and thus is not required to hold Ether at all.\n ==== Security Considerations\n There are two important considerations concerning the use of `permit`. The first is that a valid permit signature\n expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be\n considered as an intention to spend the allowance in any specific way. The second is that because permits have\n built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should\n take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be\n generally recommended is:\n ```solidity\n function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {\n     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}\n     doThing(..., value);\n }\n function doThing(..., uint256 value) public {\n     token.safeTransferFrom(msg.sender, address(this), value);\n     ...\n }\n ```\n Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of\n `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also\n {SafeERC20-safeTransferFrom}).\n Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so\n contracts should have entry points that don't rely on permit."},"fullyImplemented":false,"id":970,"linearizedBaseContracts":[970],"name":"IERC20Permit","nameLocation":"2125:12:6","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":938,"nodeType":"StructuredDocumentation","src":"2144:850:6","text":" @dev Sets `value` as the allowance of `spender` over ``owner``'s tokens,\n given ``owner``'s signed approval.\n IMPORTANT: The same issues {IERC20-approve} has related to transaction\n ordering also apply here.\n Emits an {Approval} event.\n Requirements:\n - `spender` cannot be the zero address.\n - `deadline` must be a timestamp in the future.\n - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner`\n over the EIP712-formatted function arguments.\n - the signature must use ``owner``'s current nonce (see {nonces}).\n For more information on the signature format, see the\n https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP\n section].\n CAUTION: See Security Considerations above."},"functionSelector":"d505accf","id":955,"implemented":false,"kind":"function","modifiers":[],"name":"permit","nameLocation":"3008:6:6","nodeType":"FunctionDefinition","parameters":{"id":953,"nodeType":"ParameterList","parameters":[{"constant":false,"id":940,"mutability":"mutable","name":"owner","nameLocation":"3032:5:6","nodeType":"VariableDeclaration","scope":955,"src":"3024:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":939,"name":"address","nodeType":"ElementaryTypeName","src":"3024:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":942,"mutability":"mutable","name":"spender","nameLocation":"3055:7:6","nodeType":"VariableDeclaration","scope":955,"src":"3047:15:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":941,"name":"address","nodeType":"ElementaryTypeName","src":"3047:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":944,"mutability":"mutable","name":"value","nameLocation":"3080:5:6","nodeType":"VariableDeclaration","scope":955,"src":"3072:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":943,"name":"uint256","nodeType":"ElementaryTypeName","src":"3072:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":946,"mutability":"mutable","name":"deadline","nameLocation":"3103:8:6","nodeType":"VariableDeclaration","scope":955,"src":"3095:16:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":945,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":948,"mutability":"mutable","name":"v","nameLocation":"3127:1:6","nodeType":"VariableDeclaration","scope":955,"src":"3121:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":947,"name":"uint8","nodeType":"ElementaryTypeName","src":"3121:5:6","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":950,"mutability":"mutable","name":"r","nameLocation":"3146:1:6","nodeType":"VariableDeclaration","scope":955,"src":"3138:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":949,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3138:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":952,"mutability":"mutable","name":"s","nameLocation":"3165:1:6","nodeType":"VariableDeclaration","scope":955,"src":"3157:9:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3157:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3014:158:6"},"returnParameters":{"id":954,"nodeType":"ParameterList","parameters":[],"src":"3181:0:6"},"scope":970,"src":"2999:183:6","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"documentation":{"id":956,"nodeType":"StructuredDocumentation","src":"3188:294:6","text":" @dev Returns the current nonce for `owner`. This value must be\n included whenever a signature is generated for {permit}.\n Every successful call to {permit} increases ``owner``'s nonce by one. This\n prevents a signature from being used multiple times."},"functionSelector":"7ecebe00","id":963,"implemented":false,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"3496:6:6","nodeType":"FunctionDefinition","parameters":{"id":959,"nodeType":"ParameterList","parameters":[{"constant":false,"id":958,"mutability":"mutable","name":"owner","nameLocation":"3511:5:6","nodeType":"VariableDeclaration","scope":963,"src":"3503:13:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":957,"name":"address","nodeType":"ElementaryTypeName","src":"3503:7:6","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3502:15:6"},"returnParameters":{"id":962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":963,"src":"3541:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":960,"name":"uint256","nodeType":"ElementaryTypeName","src":"3541:7:6","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3540:9:6"},"scope":970,"src":"3487:63:6","stateMutability":"view","virtual":false,"visibility":"external"},{"documentation":{"id":964,"nodeType":"StructuredDocumentation","src":"3556:128:6","text":" @dev Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}."},"functionSelector":"3644e515","id":969,"implemented":false,"kind":"function","modifiers":[],"name":"DOMAIN_SEPARATOR","nameLocation":"3751:16:6","nodeType":"FunctionDefinition","parameters":{"id":965,"nodeType":"ParameterList","parameters":[],"src":"3767:2:6"},"returnParameters":{"id":968,"nodeType":"ParameterList","parameters":[{"constant":false,"id":967,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":969,"src":"3793:7:6","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":966,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3793:7:6","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3792:9:6"},"scope":970,"src":"3742:60:6","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":971,"src":"2115:1689:6","usedErrors":[],"usedEvents":[]}],"src":"123:3682:6"},"id":6},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[1000]},"id":1001,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":972,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:7"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":973,"nodeType":"StructuredDocumentation","src":"127:496:7","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":1000,"linearizedBaseContracts":[1000],"name":"Context","nameLocation":"642:7:7","nodeType":"ContractDefinition","nodes":[{"body":{"id":981,"nodeType":"Block","src":"718:34:7","statements":[{"expression":{"expression":{"id":978,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"735:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":979,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"739:6:7","memberName":"sender","nodeType":"MemberAccess","src":"735:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":977,"id":980,"nodeType":"Return","src":"728:17:7"}]},"id":982,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"665:10:7","nodeType":"FunctionDefinition","parameters":{"id":974,"nodeType":"ParameterList","parameters":[],"src":"675:2:7"},"returnParameters":{"id":977,"nodeType":"ParameterList","parameters":[{"constant":false,"id":976,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":982,"src":"709:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":975,"name":"address","nodeType":"ElementaryTypeName","src":"709:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"708:9:7"},"scope":1000,"src":"656:96:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":990,"nodeType":"Block","src":"825:32:7","statements":[{"expression":{"expression":{"id":987,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"842:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"846:4:7","memberName":"data","nodeType":"MemberAccess","src":"842:8:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":986,"id":989,"nodeType":"Return","src":"835:15:7"}]},"id":991,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"767:8:7","nodeType":"FunctionDefinition","parameters":{"id":983,"nodeType":"ParameterList","parameters":[],"src":"775:2:7"},"returnParameters":{"id":986,"nodeType":"ParameterList","parameters":[{"constant":false,"id":985,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":991,"src":"809:14:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":984,"name":"bytes","nodeType":"ElementaryTypeName","src":"809:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"808:16:7"},"scope":1000,"src":"758:99:7","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":998,"nodeType":"Block","src":"935:25:7","statements":[{"expression":{"hexValue":"30","id":996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"952:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":995,"id":997,"nodeType":"Return","src":"945:8:7"}]},"id":999,"implemented":true,"kind":"function","modifiers":[],"name":"_contextSuffixLength","nameLocation":"872:20:7","nodeType":"FunctionDefinition","parameters":{"id":992,"nodeType":"ParameterList","parameters":[],"src":"892:2:7"},"returnParameters":{"id":995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":999,"src":"926:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":993,"name":"uint256","nodeType":"ElementaryTypeName","src":"926:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"925:9:7"},"scope":1000,"src":"863:97:7","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":1001,"src":"624:338:7","usedErrors":[],"usedEvents":[]}],"src":"101:862:7"},"id":7},"@openzeppelin/contracts/utils/Nonces.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Nonces.sol","exportedSymbols":{"Nonces":[1068]},"id":1069,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1002,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:8"},{"abstract":true,"baseContracts":[],"canonicalName":"Nonces","contractDependencies":[],"contractKind":"contract","documentation":{"id":1003,"nodeType":"StructuredDocumentation","src":"125:83:8","text":" @dev Provides tracking nonces for addresses. Nonces will only increment."},"fullyImplemented":true,"id":1068,"linearizedBaseContracts":[1068],"name":"Nonces","nameLocation":"227:6:8","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1004,"nodeType":"StructuredDocumentation","src":"240:90:8","text":" @dev The nonce used for an `account` is not the expected current nonce."},"errorSelector":"752d88c0","id":1010,"name":"InvalidAccountNonce","nameLocation":"341:19:8","nodeType":"ErrorDefinition","parameters":{"id":1009,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1006,"mutability":"mutable","name":"account","nameLocation":"369:7:8","nodeType":"VariableDeclaration","scope":1010,"src":"361:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1005,"name":"address","nodeType":"ElementaryTypeName","src":"361:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1008,"mutability":"mutable","name":"currentNonce","nameLocation":"386:12:8","nodeType":"VariableDeclaration","scope":1010,"src":"378:20:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1007,"name":"uint256","nodeType":"ElementaryTypeName","src":"378:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"360:39:8"},"src":"335:65:8"},{"constant":false,"id":1014,"mutability":"mutable","name":"_nonces","nameLocation":"450:7:8","nodeType":"VariableDeclaration","scope":1068,"src":"406:51:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":1013,"keyName":"account","keyNameLocation":"422:7:8","keyType":{"id":1011,"name":"address","nodeType":"ElementaryTypeName","src":"414:7:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"406:35:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":1012,"name":"uint256","nodeType":"ElementaryTypeName","src":"433:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"private"},{"body":{"id":1026,"nodeType":"Block","src":"607:38:8","statements":[{"expression":{"baseExpression":{"id":1022,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"624:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1024,"indexExpression":{"id":1023,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1017,"src":"632:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"624:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1021,"id":1025,"nodeType":"Return","src":"617:21:8"}]},"documentation":{"id":1015,"nodeType":"StructuredDocumentation","src":"464:69:8","text":" @dev Returns the next unused nonce for an address."},"functionSelector":"7ecebe00","id":1027,"implemented":true,"kind":"function","modifiers":[],"name":"nonces","nameLocation":"547:6:8","nodeType":"FunctionDefinition","parameters":{"id":1018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1017,"mutability":"mutable","name":"owner","nameLocation":"562:5:8","nodeType":"VariableDeclaration","scope":1027,"src":"554:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1016,"name":"address","nodeType":"ElementaryTypeName","src":"554:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"553:15:8"},"returnParameters":{"id":1021,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1020,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1027,"src":"598:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1019,"name":"uint256","nodeType":"ElementaryTypeName","src":"598:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"597:9:8"},"scope":1068,"src":"538:107:8","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":1041,"nodeType":"Block","src":"828:326:8","statements":[{"id":1040,"nodeType":"UncheckedBlock","src":"1031:117:8","statements":[{"expression":{"id":1038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1121:16:8","subExpression":{"baseExpression":{"id":1035,"name":"_nonces","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1014,"src":"1121:7:8","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":1037,"indexExpression":{"id":1036,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1030,"src":"1129:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1121:14:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1034,"id":1039,"nodeType":"Return","src":"1114:23:8"}]}]},"documentation":{"id":1028,"nodeType":"StructuredDocumentation","src":"651:103:8","text":" @dev Consumes a nonce.\n Returns the current value and increments nonce."},"id":1042,"implemented":true,"kind":"function","modifiers":[],"name":"_useNonce","nameLocation":"768:9:8","nodeType":"FunctionDefinition","parameters":{"id":1031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1030,"mutability":"mutable","name":"owner","nameLocation":"786:5:8","nodeType":"VariableDeclaration","scope":1042,"src":"778:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1029,"name":"address","nodeType":"ElementaryTypeName","src":"778:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"777:15:8"},"returnParameters":{"id":1034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1042,"src":"819:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1032,"name":"uint256","nodeType":"ElementaryTypeName","src":"819:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"818:9:8"},"scope":1068,"src":"759:395:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":1066,"nodeType":"Block","src":"1338:149:8","statements":[{"assignments":[1051],"declarations":[{"constant":false,"id":1051,"mutability":"mutable","name":"current","nameLocation":"1356:7:8","nodeType":"VariableDeclaration","scope":1066,"src":"1348:15:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1050,"name":"uint256","nodeType":"ElementaryTypeName","src":"1348:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1055,"initialValue":{"arguments":[{"id":1053,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"1376:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1052,"name":"_useNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1042,"src":"1366:9:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$_t_uint256_$","typeString":"function (address) returns (uint256)"}},"id":1054,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1366:16:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1348:34:8"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1056,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1047,"src":"1396:5:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1057,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"1405:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1396:16:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1065,"nodeType":"IfStatement","src":"1392:89:8","trueBody":{"id":1064,"nodeType":"Block","src":"1414:67:8","statements":[{"errorCall":{"arguments":[{"id":1060,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1045,"src":"1455:5:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1061,"name":"current","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1051,"src":"1462:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1059,"name":"InvalidAccountNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1010,"src":"1435:19:8","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$_t_uint256_$returns$_t_error_$","typeString":"function (address,uint256) pure returns (error)"}},"id":1062,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1435:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1063,"nodeType":"RevertStatement","src":"1428:42:8"}]}}]},"documentation":{"id":1043,"nodeType":"StructuredDocumentation","src":"1160:100:8","text":" @dev Same as {_useNonce} but checking that `nonce` is the next valid for `owner`."},"id":1067,"implemented":true,"kind":"function","modifiers":[],"name":"_useCheckedNonce","nameLocation":"1274:16:8","nodeType":"FunctionDefinition","parameters":{"id":1048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1045,"mutability":"mutable","name":"owner","nameLocation":"1299:5:8","nodeType":"VariableDeclaration","scope":1067,"src":"1291:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1044,"name":"address","nodeType":"ElementaryTypeName","src":"1291:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1047,"mutability":"mutable","name":"nonce","nameLocation":"1314:5:8","nodeType":"VariableDeclaration","scope":1067,"src":"1306:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1046,"name":"uint256","nodeType":"ElementaryTypeName","src":"1306:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1290:30:8"},"returnParameters":{"id":1049,"nodeType":"ParameterList","parameters":[],"src":"1338:0:8"},"scope":1068,"src":"1265:222:8","stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"scope":1069,"src":"209:1280:8","usedErrors":[1010],"usedEvents":[]}],"src":"99:1391:8"},"id":8},"@openzeppelin/contracts/utils/Panic.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","exportedSymbols":{"Panic":[1120]},"id":1121,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1070,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"99:24:9"},{"abstract":false,"baseContracts":[],"canonicalName":"Panic","contractDependencies":[],"contractKind":"library","documentation":{"id":1071,"nodeType":"StructuredDocumentation","src":"125:489:9","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":1120,"linearizedBaseContracts":[1120],"name":"Panic","nameLocation":"665:5:9","nodeType":"ContractDefinition","nodes":[{"constant":true,"documentation":{"id":1072,"nodeType":"StructuredDocumentation","src":"677:36:9","text":"@dev generic / unspecified error"},"id":1075,"mutability":"constant","name":"GENERIC","nameLocation":"744:7:9","nodeType":"VariableDeclaration","scope":1120,"src":"718:40:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1073,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783030","id":1074,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"754:4:9","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0x00"},"visibility":"internal"},{"constant":true,"documentation":{"id":1076,"nodeType":"StructuredDocumentation","src":"764:37:9","text":"@dev used by the assert() builtin"},"id":1079,"mutability":"constant","name":"ASSERT","nameLocation":"832:6:9","nodeType":"VariableDeclaration","scope":1120,"src":"806:39:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1077,"name":"uint256","nodeType":"ElementaryTypeName","src":"806:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783031","id":1078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"841:4:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"0x01"},"visibility":"internal"},{"constant":true,"documentation":{"id":1080,"nodeType":"StructuredDocumentation","src":"851:41:9","text":"@dev arithmetic underflow or overflow"},"id":1083,"mutability":"constant","name":"UNDER_OVERFLOW","nameLocation":"923:14:9","nodeType":"VariableDeclaration","scope":1120,"src":"897:47:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1081,"name":"uint256","nodeType":"ElementaryTypeName","src":"897:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783131","id":1082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"940:4:9","typeDescriptions":{"typeIdentifier":"t_rational_17_by_1","typeString":"int_const 17"},"value":"0x11"},"visibility":"internal"},{"constant":true,"documentation":{"id":1084,"nodeType":"StructuredDocumentation","src":"950:35:9","text":"@dev division or modulo by zero"},"id":1087,"mutability":"constant","name":"DIVISION_BY_ZERO","nameLocation":"1016:16:9","nodeType":"VariableDeclaration","scope":1120,"src":"990:49:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1085,"name":"uint256","nodeType":"ElementaryTypeName","src":"990:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783132","id":1086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1035:4:9","typeDescriptions":{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"},"value":"0x12"},"visibility":"internal"},{"constant":true,"documentation":{"id":1088,"nodeType":"StructuredDocumentation","src":"1045:30:9","text":"@dev enum conversion error"},"id":1091,"mutability":"constant","name":"ENUM_CONVERSION_ERROR","nameLocation":"1106:21:9","nodeType":"VariableDeclaration","scope":1120,"src":"1080:54:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1089,"name":"uint256","nodeType":"ElementaryTypeName","src":"1080:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783231","id":1090,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1130:4:9","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"0x21"},"visibility":"internal"},{"constant":true,"documentation":{"id":1092,"nodeType":"StructuredDocumentation","src":"1140:36:9","text":"@dev invalid encoding in storage"},"id":1095,"mutability":"constant","name":"STORAGE_ENCODING_ERROR","nameLocation":"1207:22:9","nodeType":"VariableDeclaration","scope":1120,"src":"1181:55:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1093,"name":"uint256","nodeType":"ElementaryTypeName","src":"1181:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783232","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1232:4:9","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"visibility":"internal"},{"constant":true,"documentation":{"id":1096,"nodeType":"StructuredDocumentation","src":"1242:24:9","text":"@dev empty array pop"},"id":1099,"mutability":"constant","name":"EMPTY_ARRAY_POP","nameLocation":"1297:15:9","nodeType":"VariableDeclaration","scope":1120,"src":"1271:48:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1097,"name":"uint256","nodeType":"ElementaryTypeName","src":"1271:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783331","id":1098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1315:4:9","typeDescriptions":{"typeIdentifier":"t_rational_49_by_1","typeString":"int_const 49"},"value":"0x31"},"visibility":"internal"},{"constant":true,"documentation":{"id":1100,"nodeType":"StructuredDocumentation","src":"1325:35:9","text":"@dev array out of bounds access"},"id":1103,"mutability":"constant","name":"ARRAY_OUT_OF_BOUNDS","nameLocation":"1391:19:9","nodeType":"VariableDeclaration","scope":1120,"src":"1365:52:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1101,"name":"uint256","nodeType":"ElementaryTypeName","src":"1365:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783332","id":1102,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1413:4:9","typeDescriptions":{"typeIdentifier":"t_rational_50_by_1","typeString":"int_const 50"},"value":"0x32"},"visibility":"internal"},{"constant":true,"documentation":{"id":1104,"nodeType":"StructuredDocumentation","src":"1423:65:9","text":"@dev resource error (too large allocation or too large array)"},"id":1107,"mutability":"constant","name":"RESOURCE_ERROR","nameLocation":"1519:14:9","nodeType":"VariableDeclaration","scope":1120,"src":"1493:47:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1105,"name":"uint256","nodeType":"ElementaryTypeName","src":"1493:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783431","id":1106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1536:4:9","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"0x41"},"visibility":"internal"},{"constant":true,"documentation":{"id":1108,"nodeType":"StructuredDocumentation","src":"1546:42:9","text":"@dev calling invalid internal function"},"id":1111,"mutability":"constant","name":"INVALID_INTERNAL_FUNCTION","nameLocation":"1619:25:9","nodeType":"VariableDeclaration","scope":1120,"src":"1593:58:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1109,"name":"uint256","nodeType":"ElementaryTypeName","src":"1593:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"30783531","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1647:4:9","typeDescriptions":{"typeIdentifier":"t_rational_81_by_1","typeString":"int_const 81"},"value":"0x51"},"visibility":"internal"},{"body":{"id":1118,"nodeType":"Block","src":"1819:151:9","statements":[{"AST":{"nativeSrc":"1854:110:9","nodeType":"YulBlock","src":"1854:110:9","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1875:4:9","nodeType":"YulLiteral","src":"1875:4:9","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1881:10:9","nodeType":"YulLiteral","src":"1881:10:9","type":"","value":"0x4e487b71"}],"functionName":{"name":"mstore","nativeSrc":"1868:6:9","nodeType":"YulIdentifier","src":"1868:6:9"},"nativeSrc":"1868:24:9","nodeType":"YulFunctionCall","src":"1868:24:9"},"nativeSrc":"1868:24:9","nodeType":"YulExpressionStatement","src":"1868:24:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1912:4:9","nodeType":"YulLiteral","src":"1912:4:9","type":"","value":"0x20"},{"name":"code","nativeSrc":"1918:4:9","nodeType":"YulIdentifier","src":"1918:4:9"}],"functionName":{"name":"mstore","nativeSrc":"1905:6:9","nodeType":"YulIdentifier","src":"1905:6:9"},"nativeSrc":"1905:18:9","nodeType":"YulFunctionCall","src":"1905:18:9"},"nativeSrc":"1905:18:9","nodeType":"YulExpressionStatement","src":"1905:18:9"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1943:4:9","nodeType":"YulLiteral","src":"1943:4:9","type":"","value":"0x1c"},{"kind":"number","nativeSrc":"1949:4:9","nodeType":"YulLiteral","src":"1949:4:9","type":"","value":"0x24"}],"functionName":{"name":"revert","nativeSrc":"1936:6:9","nodeType":"YulIdentifier","src":"1936:6:9"},"nativeSrc":"1936:18:9","nodeType":"YulFunctionCall","src":"1936:18:9"},"nativeSrc":"1936:18:9","nodeType":"YulExpressionStatement","src":"1936:18:9"}]},"evmVersion":"paris","externalReferences":[{"declaration":1114,"isOffset":false,"isSlot":false,"src":"1918:4:9","valueSize":1}],"flags":["memory-safe"],"id":1117,"nodeType":"InlineAssembly","src":"1829:135:9"}]},"documentation":{"id":1112,"nodeType":"StructuredDocumentation","src":"1658:113:9","text":"@dev Reverts with a panic code. Recommended to use with\n the internal constants with predefined codes."},"id":1119,"implemented":true,"kind":"function","modifiers":[],"name":"panic","nameLocation":"1785:5:9","nodeType":"FunctionDefinition","parameters":{"id":1115,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1114,"mutability":"mutable","name":"code","nameLocation":"1799:4:9","nodeType":"VariableDeclaration","scope":1119,"src":"1791:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1113,"name":"uint256","nodeType":"ElementaryTypeName","src":"1791:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1790:14:9"},"returnParameters":{"id":1116,"nodeType":"ParameterList","parameters":[],"src":"1819:0:9"},"scope":1120,"src":"1776:194:9","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1121,"src":"657:1315:9","usedErrors":[],"usedEvents":[]}],"src":"99:1874:9"},"id":9},"@openzeppelin/contracts/utils/ShortStrings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","exportedSymbols":{"ShortString":[1126],"ShortStrings":[1337],"StorageSlot":[1461]},"id":1338,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1122,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"106:24:10"},{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","file":"./StorageSlot.sol","id":1124,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1338,"sourceUnit":1462,"src":"132:46:10","symbolAliases":[{"foreign":{"id":1123,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"140:11:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"canonicalName":"ShortString","id":1126,"name":"ShortString","nameLocation":"353:11:10","nodeType":"UserDefinedValueTypeDefinition","src":"348:28:10","underlyingType":{"id":1125,"name":"bytes32","nodeType":"ElementaryTypeName","src":"368:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}},{"abstract":false,"baseContracts":[],"canonicalName":"ShortStrings","contractDependencies":[],"contractKind":"library","documentation":{"id":1127,"nodeType":"StructuredDocumentation","src":"378:876:10","text":" @dev This library provides functions to convert short memory strings\n into a `ShortString` type that can be used as an immutable variable.\n Strings of arbitrary length can be optimized using this library if\n they are short enough (up to 31 bytes) by packing them with their\n length (1 byte) in a single EVM word (32 bytes). Additionally, a\n fallback mechanism can be used for every other case.\n Usage example:\n ```solidity\n contract Named {\n     using ShortStrings for *;\n     ShortString private immutable _name;\n     string private _nameFallback;\n     constructor(string memory contractName) {\n         _name = contractName.toShortStringWithFallback(_nameFallback);\n     }\n     function name() external view returns (string memory) {\n         return _name.toStringWithFallback(_nameFallback);\n     }\n }\n ```"},"fullyImplemented":true,"id":1337,"linearizedBaseContracts":[1337],"name":"ShortStrings","nameLocation":"1263:12:10","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1130,"mutability":"constant","name":"FALLBACK_SENTINEL","nameLocation":"1370:17:10","nodeType":"VariableDeclaration","scope":1337,"src":"1345:111:10","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1345:7:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304646","id":1129,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1390:66:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0x00000000000000000000000000000000000000000000000000000000000000FF"},"visibility":"private"},{"errorSelector":"305a27a9","id":1134,"name":"StringTooLong","nameLocation":"1469:13:10","nodeType":"ErrorDefinition","parameters":{"id":1133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1132,"mutability":"mutable","name":"str","nameLocation":"1490:3:10","nodeType":"VariableDeclaration","scope":1134,"src":"1483:10:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1131,"name":"string","nodeType":"ElementaryTypeName","src":"1483:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1482:12:10"},"src":"1463:32:10"},{"errorSelector":"b3512b0c","id":1136,"name":"InvalidShortString","nameLocation":"1506:18:10","nodeType":"ErrorDefinition","parameters":{"id":1135,"nodeType":"ParameterList","parameters":[],"src":"1524:2:10"},"src":"1500:27:10"},{"body":{"id":1179,"nodeType":"Block","src":"1786:208:10","statements":[{"assignments":[1146],"declarations":[{"constant":false,"id":1146,"mutability":"mutable","name":"bstr","nameLocation":"1809:4:10","nodeType":"VariableDeclaration","scope":1179,"src":"1796:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1145,"name":"bytes","nodeType":"ElementaryTypeName","src":"1796:5:10","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1151,"initialValue":{"arguments":[{"id":1149,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"1822:3:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1816:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1147,"name":"bytes","nodeType":"ElementaryTypeName","src":"1816:5:10","typeDescriptions":{}}},"id":1150,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1816:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"1796:30:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1155,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1152,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"1840:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1845:6:10","memberName":"length","nodeType":"MemberAccess","src":"1840:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":1154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1854:2:10","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"1840:16:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1161,"nodeType":"IfStatement","src":"1836:72:10","trueBody":{"id":1160,"nodeType":"Block","src":"1858:50:10","statements":[{"errorCall":{"arguments":[{"id":1157,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1139,"src":"1893:3:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1156,"name":"StringTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1134,"src":"1879:13:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_string_memory_ptr_$returns$_t_error_$","typeString":"function (string memory) pure returns (error)"}},"id":1158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1879:18:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1159,"nodeType":"RevertStatement","src":"1872:25:10"}]}},{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1170,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"1965:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1957:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1957:7:10","typeDescriptions":{}}},"id":1171,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1957:13:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1167,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1949:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1166,"name":"uint256","nodeType":"ElementaryTypeName","src":"1949:7:10","typeDescriptions":{}}},"id":1172,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1949:22:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"expression":{"id":1173,"name":"bstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1146,"src":"1974:4:10","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1979:6:10","memberName":"length","nodeType":"MemberAccess","src":"1974:11:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1949:36:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1941:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1164,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1941:7:10","typeDescriptions":{}}},"id":1176,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1941:45:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1162,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"1924:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"type(ShortString)"}},"id":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1936:4:10","memberName":"wrap","nodeType":"MemberAccess","src":"1924:16:10","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueTypeMATH_PLACEHOLDER_1681126_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":1177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1924:63:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"functionReturnParameters":1144,"id":1178,"nodeType":"Return","src":"1917:70:10"}]},"documentation":{"id":1137,"nodeType":"StructuredDocumentation","src":"1533:170:10","text":" @dev Encode a string of at most 31 chars into a `ShortString`.\n This will trigger a `StringTooLong` error is the input string is too long."},"id":1180,"implemented":true,"kind":"function","modifiers":[],"name":"toShortString","nameLocation":"1717:13:10","nodeType":"FunctionDefinition","parameters":{"id":1140,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1139,"mutability":"mutable","name":"str","nameLocation":"1745:3:10","nodeType":"VariableDeclaration","scope":1180,"src":"1731:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1138,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1730:19:10"},"returnParameters":{"id":1144,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1143,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1180,"src":"1773:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1701126","typeString":"ShortString"},"typeName":{"id":1142,"nodeType":"UserDefinedTypeName","pathNode":{"id":1141,"name":"ShortString","nameLocations":["1773:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"1773:11:10"},"referencedDeclaration":1126,"src":"1773:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1711126","typeString":"ShortString"}},"visibility":"internal"}],"src":"1772:13:10"},"scope":1337,"src":"1708:286:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1205,"nodeType":"Block","src":"2152:304:10","statements":[{"assignments":[1190],"declarations":[{"constant":false,"id":1190,"mutability":"mutable","name":"len","nameLocation":"2170:3:10","nodeType":"VariableDeclaration","scope":1205,"src":"2162:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1189,"name":"uint256","nodeType":"ElementaryTypeName","src":"2162:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1194,"initialValue":{"arguments":[{"id":1192,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"2187:4:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1721126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1731126","typeString":"ShortString"}],"id":1191,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"2176:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$1126_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":1193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2176:16:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2162:30:10"},{"assignments":[1196],"declarations":[{"constant":false,"id":1196,"mutability":"mutable","name":"str","nameLocation":"2294:3:10","nodeType":"VariableDeclaration","scope":1205,"src":"2280:17:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1195,"name":"string","nodeType":"ElementaryTypeName","src":"2280:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1201,"initialValue":{"arguments":[{"hexValue":"3332","id":1199,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2311:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"id":1198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2300:10:10","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1197,"name":"string","nodeType":"ElementaryTypeName","src":"2304:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2300:14:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"2280:34:10"},{"AST":{"nativeSrc":"2349:81:10","nodeType":"YulBlock","src":"2349:81:10","statements":[{"expression":{"arguments":[{"name":"str","nativeSrc":"2370:3:10","nodeType":"YulIdentifier","src":"2370:3:10"},{"name":"len","nativeSrc":"2375:3:10","nodeType":"YulIdentifier","src":"2375:3:10"}],"functionName":{"name":"mstore","nativeSrc":"2363:6:10","nodeType":"YulIdentifier","src":"2363:6:10"},"nativeSrc":"2363:16:10","nodeType":"YulFunctionCall","src":"2363:16:10"},"nativeSrc":"2363:16:10","nodeType":"YulExpressionStatement","src":"2363:16:10"},{"expression":{"arguments":[{"arguments":[{"name":"str","nativeSrc":"2403:3:10","nodeType":"YulIdentifier","src":"2403:3:10"},{"kind":"number","nativeSrc":"2408:4:10","nodeType":"YulLiteral","src":"2408:4:10","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2399:3:10","nodeType":"YulIdentifier","src":"2399:3:10"},"nativeSrc":"2399:14:10","nodeType":"YulFunctionCall","src":"2399:14:10"},{"name":"sstr","nativeSrc":"2415:4:10","nodeType":"YulIdentifier","src":"2415:4:10"}],"functionName":{"name":"mstore","nativeSrc":"2392:6:10","nodeType":"YulIdentifier","src":"2392:6:10"},"nativeSrc":"2392:28:10","nodeType":"YulFunctionCall","src":"2392:28:10"},"nativeSrc":"2392:28:10","nodeType":"YulExpressionStatement","src":"2392:28:10"}]},"evmVersion":"paris","externalReferences":[{"declaration":1190,"isOffset":false,"isSlot":false,"src":"2375:3:10","valueSize":1},{"declaration":1184,"isOffset":false,"isSlot":false,"src":"2415:4:10","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"2370:3:10","valueSize":1},{"declaration":1196,"isOffset":false,"isSlot":false,"src":"2403:3:10","valueSize":1}],"flags":["memory-safe"],"id":1202,"nodeType":"InlineAssembly","src":"2324:106:10"},{"expression":{"id":1203,"name":"str","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"2446:3:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1188,"id":1204,"nodeType":"Return","src":"2439:10:10"}]},"documentation":{"id":1181,"nodeType":"StructuredDocumentation","src":"2000:73:10","text":" @dev Decode a `ShortString` back to a \"normal\" string."},"id":1206,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"2087:8:10","nodeType":"FunctionDefinition","parameters":{"id":1185,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1184,"mutability":"mutable","name":"sstr","nameLocation":"2108:4:10","nodeType":"VariableDeclaration","scope":1206,"src":"2096:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"},"typeName":{"id":1183,"nodeType":"UserDefinedTypeName","pathNode":{"id":1182,"name":"ShortString","nameLocations":["2096:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"2096:11:10"},"referencedDeclaration":1126,"src":"2096:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1791126","typeString":"ShortString"}},"visibility":"internal"}],"src":"2095:18:10"},"returnParameters":{"id":1188,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1187,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1206,"src":"2137:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1186,"name":"string","nodeType":"ElementaryTypeName","src":"2137:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2136:15:10"},"scope":1337,"src":"2078:378:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1237,"nodeType":"Block","src":"2598:175:10","statements":[{"assignments":[1216],"declarations":[{"constant":false,"id":1216,"mutability":"mutable","name":"result","nameLocation":"2616:6:10","nodeType":"VariableDeclaration","scope":1237,"src":"2608:14:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1215,"name":"uint256","nodeType":"ElementaryTypeName","src":"2608:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1226,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1221,"name":"sstr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1210,"src":"2652:4:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1801126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1811126","typeString":"ShortString"}],"expression":{"id":1219,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"2633:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"type(ShortString)"}},"id":1220,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2645:6:10","memberName":"unwrap","nodeType":"MemberAccess","src":"2633:18:10","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueTypeMATH_PLACEHOLDER_1841126_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":1222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2633:24:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1218,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2625:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1217,"name":"uint256","nodeType":"ElementaryTypeName","src":"2625:7:10","typeDescriptions":{}}},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2625:33:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"30784646","id":1224,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2661:4:10","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xFF"},"src":"2625:40:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2608:57:10"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1227,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"2679:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3331","id":1228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2688:2:10","typeDescriptions":{"typeIdentifier":"t_rational_31_by_1","typeString":"int_const 31"},"value":"31"},"src":"2679:11:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1234,"nodeType":"IfStatement","src":"2675:69:10","trueBody":{"id":1233,"nodeType":"Block","src":"2692:52:10","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1230,"name":"InvalidShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1136,"src":"2713:18:10","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2713:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1232,"nodeType":"RevertStatement","src":"2706:27:10"}]}},{"expression":{"id":1235,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1216,"src":"2760:6:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1214,"id":1236,"nodeType":"Return","src":"2753:13:10"}]},"documentation":{"id":1207,"nodeType":"StructuredDocumentation","src":"2462:61:10","text":" @dev Return the length of a `ShortString`."},"id":1238,"implemented":true,"kind":"function","modifiers":[],"name":"byteLength","nameLocation":"2537:10:10","nodeType":"FunctionDefinition","parameters":{"id":1211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1210,"mutability":"mutable","name":"sstr","nameLocation":"2560:4:10","nodeType":"VariableDeclaration","scope":1238,"src":"2548:16:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"},"typeName":{"id":1209,"nodeType":"UserDefinedTypeName","pathNode":{"id":1208,"name":"ShortString","nameLocations":["2548:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"2548:11:10"},"referencedDeclaration":1126,"src":"2548:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_1901126","typeString":"ShortString"}},"visibility":"internal"}],"src":"2547:18:10"},"returnParameters":{"id":1214,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1213,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1238,"src":"2589:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1212,"name":"uint256","nodeType":"ElementaryTypeName","src":"2589:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2588:9:10"},"scope":1337,"src":"2528:245:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1277,"nodeType":"Block","src":"2996:231:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1251,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"3016:5:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3010:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1249,"name":"bytes","nodeType":"ElementaryTypeName","src":"3010:5:10","typeDescriptions":{}}},"id":1252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3010:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3023:6:10","memberName":"length","nodeType":"MemberAccess","src":"3010:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3332","id":1254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3032:2:10","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"3010:24:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1275,"nodeType":"Block","src":"3094:127:10","statements":[{"expression":{"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"arguments":[{"id":1264,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"3134:5:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"expression":{"id":1261,"name":"StorageSlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1461,"src":"3108:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_StorageSlot_$1461_$","typeString":"type(library StorageSlot)"}},"id":1263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3120:13:10","memberName":"getStringSlot","nodeType":"MemberAccess","referencedDeclaration":1438,"src":"3108:25:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_storage_ptr_$returns$_t_structMATH_PLACEHOLDER_1951358_storage_ptr_$","typeString":"function (string storage pointer) pure returns (struct StorageSlot.StringSlot storage pointer)"}},"id":1265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3108:32:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_StringSlot_$1358_storage_ptr","typeString":"struct StorageSlot.StringSlot storage pointer"}},"id":1266,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"3141:5:10","memberName":"value","nodeType":"MemberAccess","referencedDeclaration":1357,"src":"3108:38:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1267,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"3149:5:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"src":"3108:46:10","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}},"id":1269,"nodeType":"ExpressionStatement","src":"3108:46:10"},{"expression":{"arguments":[{"id":1272,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3192:17:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":1270,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"3175:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"type(ShortString)"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3187:4:10","memberName":"wrap","nodeType":"MemberAccess","src":"3175:16:10","typeDescriptions":{"typeIdentifier":"t_function_wrap_pure$_t_bytes32_$returns$_t_userDefinedValueTypeMATH_PLACEHOLDER_2001126_$","typeString":"function (bytes32) pure returns (ShortString)"}},"id":1273,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3175:35:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"functionReturnParameters":1248,"id":1274,"nodeType":"Return","src":"3168:42:10"}]},"id":1276,"nodeType":"IfStatement","src":"3006:215:10","trueBody":{"id":1260,"nodeType":"Block","src":"3036:52:10","statements":[{"expression":{"arguments":[{"id":1257,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1241,"src":"3071:5:10","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1256,"name":"toShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1180,"src":"3057:13:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$returns$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"function (string memory) pure returns (ShortString)"}},"id":1258,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3057:20:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"functionReturnParameters":1248,"id":1259,"nodeType":"Return","src":"3050:27:10"}]}}]},"documentation":{"id":1239,"nodeType":"StructuredDocumentation","src":"2779:103:10","text":" @dev Encode a string into a `ShortString`, or write it to storage if it is too long."},"id":1278,"implemented":true,"kind":"function","modifiers":[],"name":"toShortStringWithFallback","nameLocation":"2896:25:10","nodeType":"FunctionDefinition","parameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1241,"mutability":"mutable","name":"value","nameLocation":"2936:5:10","nodeType":"VariableDeclaration","scope":1278,"src":"2922:19:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1240,"name":"string","nodeType":"ElementaryTypeName","src":"2922:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1243,"mutability":"mutable","name":"store","nameLocation":"2958:5:10","nodeType":"VariableDeclaration","scope":1278,"src":"2943:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1242,"name":"string","nodeType":"ElementaryTypeName","src":"2943:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2921:43:10"},"returnParameters":{"id":1248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1247,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1278,"src":"2983:11:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2051126","typeString":"ShortString"},"typeName":{"id":1246,"nodeType":"UserDefinedTypeName","pathNode":{"id":1245,"name":"ShortString","nameLocations":["2983:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"2983:11:10"},"referencedDeclaration":1126,"src":"2983:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2061126","typeString":"ShortString"}},"visibility":"internal"}],"src":"2982:13:10"},"scope":1337,"src":"2887:340:10","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1304,"nodeType":"Block","src":"3477:158:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1294,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1291,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"3510:5:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2071126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2081126","typeString":"ShortString"}],"expression":{"id":1289,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"3491:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"type(ShortString)"}},"id":1290,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3503:6:10","memberName":"unwrap","nodeType":"MemberAccess","src":"3491:18:10","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueTypeMATH_PLACEHOLDER_2111126_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":1292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3491:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1293,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"3520:17:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3491:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1302,"nodeType":"Block","src":"3592:37:10","statements":[{"expression":{"id":1300,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1284,"src":"3613:5:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}},"functionReturnParameters":1288,"id":1301,"nodeType":"Return","src":"3606:12:10"}]},"id":1303,"nodeType":"IfStatement","src":"3487:142:10","trueBody":{"id":1299,"nodeType":"Block","src":"3539:47:10","statements":[{"expression":{"arguments":[{"id":1296,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1282,"src":"3569:5:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2141126","typeString":"ShortString"}],"id":1295,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1206,"src":"3560:8:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$1126_$returns$_t_string_memory_ptr_$","typeString":"function (ShortString) pure returns (string memory)"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3560:15:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1288,"id":1298,"nodeType":"Return","src":"3553:22:10"}]}}]},"documentation":{"id":1279,"nodeType":"StructuredDocumentation","src":"3233:130:10","text":" @dev Decode a string that was encoded to `ShortString` or written to storage using {toShortStringWithFallback}."},"id":1305,"implemented":true,"kind":"function","modifiers":[],"name":"toStringWithFallback","nameLocation":"3377:20:10","nodeType":"FunctionDefinition","parameters":{"id":1285,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1282,"mutability":"mutable","name":"value","nameLocation":"3410:5:10","nodeType":"VariableDeclaration","scope":1305,"src":"3398:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"},"typeName":{"id":1281,"nodeType":"UserDefinedTypeName","pathNode":{"id":1280,"name":"ShortString","nameLocations":["3398:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"3398:11:10"},"referencedDeclaration":1126,"src":"3398:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2181126","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":1284,"mutability":"mutable","name":"store","nameLocation":"3432:5:10","nodeType":"VariableDeclaration","scope":1305,"src":"3417:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1283,"name":"string","nodeType":"ElementaryTypeName","src":"3417:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3397:41:10"},"returnParameters":{"id":1288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1287,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1305,"src":"3462:13:10","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1286,"name":"string","nodeType":"ElementaryTypeName","src":"3462:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3461:15:10"},"scope":1337,"src":"3368:267:10","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1335,"nodeType":"Block","src":"4125:174:10","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1318,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1309,"src":"4158:5:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2191126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2201126","typeString":"ShortString"}],"expression":{"id":1316,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"4139:11:10","typeDescriptions":{"typeIdentifier":"t_type$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"type(ShortString)"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4151:6:10","memberName":"unwrap","nodeType":"MemberAccess","src":"4139:18:10","typeDescriptions":{"typeIdentifier":"t_function_unwrap_pure$_t_userDefinedValueTypeMATH_PLACEHOLDER_2231126_$returns$_t_bytes32_$","typeString":"function (ShortString) pure returns (bytes32)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4139:25:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":1320,"name":"FALLBACK_SENTINEL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1130,"src":"4168:17:10","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4139:46:10","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":1333,"nodeType":"Block","src":"4242:51:10","statements":[{"expression":{"expression":{"arguments":[{"id":1329,"name":"store","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1311,"src":"4269:5:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage_ptr","typeString":"string storage pointer"}],"id":1328,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4263:5:10","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1327,"name":"bytes","nodeType":"ElementaryTypeName","src":"4263:5:10","typeDescriptions":{}}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4263:12:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes storage pointer"}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4276:6:10","memberName":"length","nodeType":"MemberAccess","src":"4263:19:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1315,"id":1332,"nodeType":"Return","src":"4256:26:10"}]},"id":1334,"nodeType":"IfStatement","src":"4135:158:10","trueBody":{"id":1326,"nodeType":"Block","src":"4187:49:10","statements":[{"expression":{"arguments":[{"id":1323,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1309,"src":"4219:5:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2271126","typeString":"ShortString"}],"id":1322,"name":"byteLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1238,"src":"4208:10:10","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$1126_$returns$_t_uint256_$","typeString":"function (ShortString) pure returns (uint256)"}},"id":1324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4208:17:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1315,"id":1325,"nodeType":"Return","src":"4201:24:10"}]}}]},"documentation":{"id":1306,"nodeType":"StructuredDocumentation","src":"3641:374:10","text":" @dev Return the length of a string that was encoded to `ShortString` or written to storage using\n {toShortStringWithFallback}.\n WARNING: This will return the \"byte length\" of the string. This may not reflect the actual length in terms of\n actual characters as the UTF-8 encoding of a single character can span over multiple bytes."},"id":1336,"implemented":true,"kind":"function","modifiers":[],"name":"byteLengthWithFallback","nameLocation":"4029:22:10","nodeType":"FunctionDefinition","parameters":{"id":1312,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1309,"mutability":"mutable","name":"value","nameLocation":"4064:5:10","nodeType":"VariableDeclaration","scope":1336,"src":"4052:17:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"},"typeName":{"id":1308,"nodeType":"UserDefinedTypeName","pathNode":{"id":1307,"name":"ShortString","nameLocations":["4052:11:10"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"4052:11:10"},"referencedDeclaration":1126,"src":"4052:11:10","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_2311126","typeString":"ShortString"}},"visibility":"internal"},{"constant":false,"id":1311,"mutability":"mutable","name":"store","nameLocation":"4086:5:10","nodeType":"VariableDeclaration","scope":1336,"src":"4071:20:10","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1310,"name":"string","nodeType":"ElementaryTypeName","src":"4071:6:10","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4051:41:10"},"returnParameters":{"id":1315,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1314,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1336,"src":"4116:7:10","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1313,"name":"uint256","nodeType":"ElementaryTypeName","src":"4116:7:10","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4115:9:10"},"scope":1337,"src":"4020:279:10","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1338,"src":"1255:3046:10","usedErrors":[1134,1136],"usedEvents":[]}],"src":"106:4196:10"},"id":10},"@openzeppelin/contracts/utils/StorageSlot.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/StorageSlot.sol","exportedSymbols":{"StorageSlot":[1461]},"id":1462,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1339,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"193:24:11"},{"abstract":false,"baseContracts":[],"canonicalName":"StorageSlot","contractDependencies":[],"contractKind":"library","documentation":{"id":1340,"nodeType":"StructuredDocumentation","src":"219:1187:11","text":" @dev Library for reading and writing primitive types to specific storage slots.\n Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts.\n This library helps with reading and writing to such slots without the need for inline assembly.\n The functions in this library return Slot structs that contain a `value` member that can be used to read or write.\n Example usage to set ERC-1967 implementation slot:\n ```solidity\n contract ERC1967 {\n     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.\n     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;\n     function _getImplementation() internal view returns (address) {\n         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;\n     }\n     function _setImplementation(address newImplementation) internal {\n         require(newImplementation.code.length > 0);\n         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;\n     }\n }\n ```\n TIP: Consider using this library along with {SlotDerivation}."},"fullyImplemented":true,"id":1461,"linearizedBaseContracts":[1461],"name":"StorageSlot","nameLocation":"1415:11:11","nodeType":"ContractDefinition","nodes":[{"canonicalName":"StorageSlot.AddressSlot","id":1343,"members":[{"constant":false,"id":1342,"mutability":"mutable","name":"value","nameLocation":"1470:5:11","nodeType":"VariableDeclaration","scope":1343,"src":"1462:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1341,"name":"address","nodeType":"ElementaryTypeName","src":"1462:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"name":"AddressSlot","nameLocation":"1440:11:11","nodeType":"StructDefinition","scope":1461,"src":"1433:49:11","visibility":"public"},{"canonicalName":"StorageSlot.BooleanSlot","id":1346,"members":[{"constant":false,"id":1345,"mutability":"mutable","name":"value","nameLocation":"1522:5:11","nodeType":"VariableDeclaration","scope":1346,"src":"1517:10:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1344,"name":"bool","nodeType":"ElementaryTypeName","src":"1517:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"name":"BooleanSlot","nameLocation":"1495:11:11","nodeType":"StructDefinition","scope":1461,"src":"1488:46:11","visibility":"public"},{"canonicalName":"StorageSlot.Bytes32Slot","id":1349,"members":[{"constant":false,"id":1348,"mutability":"mutable","name":"value","nameLocation":"1577:5:11","nodeType":"VariableDeclaration","scope":1349,"src":"1569:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1347,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1569:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"name":"Bytes32Slot","nameLocation":"1547:11:11","nodeType":"StructDefinition","scope":1461,"src":"1540:49:11","visibility":"public"},{"canonicalName":"StorageSlot.Uint256Slot","id":1352,"members":[{"constant":false,"id":1351,"mutability":"mutable","name":"value","nameLocation":"1632:5:11","nodeType":"VariableDeclaration","scope":1352,"src":"1624:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1350,"name":"uint256","nodeType":"ElementaryTypeName","src":"1624:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Uint256Slot","nameLocation":"1602:11:11","nodeType":"StructDefinition","scope":1461,"src":"1595:49:11","visibility":"public"},{"canonicalName":"StorageSlot.Int256Slot","id":1355,"members":[{"constant":false,"id":1354,"mutability":"mutable","name":"value","nameLocation":"1685:5:11","nodeType":"VariableDeclaration","scope":1355,"src":"1678:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1353,"name":"int256","nodeType":"ElementaryTypeName","src":"1678:6:11","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"name":"Int256Slot","nameLocation":"1657:10:11","nodeType":"StructDefinition","scope":1461,"src":"1650:47:11","visibility":"public"},{"canonicalName":"StorageSlot.StringSlot","id":1358,"members":[{"constant":false,"id":1357,"mutability":"mutable","name":"value","nameLocation":"1738:5:11","nodeType":"VariableDeclaration","scope":1358,"src":"1731:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1356,"name":"string","nodeType":"ElementaryTypeName","src":"1731:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"name":"StringSlot","nameLocation":"1710:10:11","nodeType":"StructDefinition","scope":1461,"src":"1703:47:11","visibility":"public"},{"canonicalName":"StorageSlot.BytesSlot","id":1361,"members":[{"constant":false,"id":1360,"mutability":"mutable","name":"value","nameLocation":"1789:5:11","nodeType":"VariableDeclaration","scope":1361,"src":"1783:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1359,"name":"bytes","nodeType":"ElementaryTypeName","src":"1783:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"name":"BytesSlot","nameLocation":"1763:9:11","nodeType":"StructDefinition","scope":1461,"src":"1756:45:11","visibility":"public"},{"body":{"id":1371,"nodeType":"Block","src":"1983:79:11","statements":[{"AST":{"nativeSrc":"2018:38:11","nodeType":"YulBlock","src":"2018:38:11","statements":[{"nativeSrc":"2032:14:11","nodeType":"YulAssignment","src":"2032:14:11","value":{"name":"slot","nativeSrc":"2042:4:11","nodeType":"YulIdentifier","src":"2042:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"2032:6:11","nodeType":"YulIdentifier","src":"2032:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1368,"isOffset":false,"isSlot":true,"src":"2032:6:11","suffix":"slot","valueSize":1},{"declaration":1364,"isOffset":false,"isSlot":false,"src":"2042:4:11","valueSize":1}],"flags":["memory-safe"],"id":1370,"nodeType":"InlineAssembly","src":"1993:63:11"}]},"documentation":{"id":1362,"nodeType":"StructuredDocumentation","src":"1807:87:11","text":" @dev Returns an `AddressSlot` with member `value` located at `slot`."},"id":1372,"implemented":true,"kind":"function","modifiers":[],"name":"getAddressSlot","nameLocation":"1908:14:11","nodeType":"FunctionDefinition","parameters":{"id":1365,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1364,"mutability":"mutable","name":"slot","nameLocation":"1931:4:11","nodeType":"VariableDeclaration","scope":1372,"src":"1923:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1363,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1923:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1922:14:11"},"returnParameters":{"id":1369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1368,"mutability":"mutable","name":"r","nameLocation":"1980:1:11","nodeType":"VariableDeclaration","scope":1372,"src":"1960:21:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2321343_storage_ptr","typeString":"struct StorageSlot.AddressSlot"},"typeName":{"id":1367,"nodeType":"UserDefinedTypeName","pathNode":{"id":1366,"name":"AddressSlot","nameLocations":["1960:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":1343,"src":"1960:11:11"},"referencedDeclaration":1343,"src":"1960:11:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2331343_storage_ptr","typeString":"struct StorageSlot.AddressSlot"}},"visibility":"internal"}],"src":"1959:23:11"},"scope":1461,"src":"1899:163:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1382,"nodeType":"Block","src":"2243:79:11","statements":[{"AST":{"nativeSrc":"2278:38:11","nodeType":"YulBlock","src":"2278:38:11","statements":[{"nativeSrc":"2292:14:11","nodeType":"YulAssignment","src":"2292:14:11","value":{"name":"slot","nativeSrc":"2302:4:11","nodeType":"YulIdentifier","src":"2302:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"2292:6:11","nodeType":"YulIdentifier","src":"2292:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1379,"isOffset":false,"isSlot":true,"src":"2292:6:11","suffix":"slot","valueSize":1},{"declaration":1375,"isOffset":false,"isSlot":false,"src":"2302:4:11","valueSize":1}],"flags":["memory-safe"],"id":1381,"nodeType":"InlineAssembly","src":"2253:63:11"}]},"documentation":{"id":1373,"nodeType":"StructuredDocumentation","src":"2068:86:11","text":" @dev Returns a `BooleanSlot` with member `value` located at `slot`."},"id":1383,"implemented":true,"kind":"function","modifiers":[],"name":"getBooleanSlot","nameLocation":"2168:14:11","nodeType":"FunctionDefinition","parameters":{"id":1376,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1375,"mutability":"mutable","name":"slot","nameLocation":"2191:4:11","nodeType":"VariableDeclaration","scope":1383,"src":"2183:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1374,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2183:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2182:14:11"},"returnParameters":{"id":1380,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1379,"mutability":"mutable","name":"r","nameLocation":"2240:1:11","nodeType":"VariableDeclaration","scope":1383,"src":"2220:21:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2341346_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"},"typeName":{"id":1378,"nodeType":"UserDefinedTypeName","pathNode":{"id":1377,"name":"BooleanSlot","nameLocations":["2220:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":1346,"src":"2220:11:11"},"referencedDeclaration":1346,"src":"2220:11:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2351346_storage_ptr","typeString":"struct StorageSlot.BooleanSlot"}},"visibility":"internal"}],"src":"2219:23:11"},"scope":1461,"src":"2159:163:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1393,"nodeType":"Block","src":"2503:79:11","statements":[{"AST":{"nativeSrc":"2538:38:11","nodeType":"YulBlock","src":"2538:38:11","statements":[{"nativeSrc":"2552:14:11","nodeType":"YulAssignment","src":"2552:14:11","value":{"name":"slot","nativeSrc":"2562:4:11","nodeType":"YulIdentifier","src":"2562:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"2552:6:11","nodeType":"YulIdentifier","src":"2552:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1390,"isOffset":false,"isSlot":true,"src":"2552:6:11","suffix":"slot","valueSize":1},{"declaration":1386,"isOffset":false,"isSlot":false,"src":"2562:4:11","valueSize":1}],"flags":["memory-safe"],"id":1392,"nodeType":"InlineAssembly","src":"2513:63:11"}]},"documentation":{"id":1384,"nodeType":"StructuredDocumentation","src":"2328:86:11","text":" @dev Returns a `Bytes32Slot` with member `value` located at `slot`."},"id":1394,"implemented":true,"kind":"function","modifiers":[],"name":"getBytes32Slot","nameLocation":"2428:14:11","nodeType":"FunctionDefinition","parameters":{"id":1387,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1386,"mutability":"mutable","name":"slot","nameLocation":"2451:4:11","nodeType":"VariableDeclaration","scope":1394,"src":"2443:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1385,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2443:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2442:14:11"},"returnParameters":{"id":1391,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1390,"mutability":"mutable","name":"r","nameLocation":"2500:1:11","nodeType":"VariableDeclaration","scope":1394,"src":"2480:21:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2361349_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"},"typeName":{"id":1389,"nodeType":"UserDefinedTypeName","pathNode":{"id":1388,"name":"Bytes32Slot","nameLocations":["2480:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":1349,"src":"2480:11:11"},"referencedDeclaration":1349,"src":"2480:11:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2371349_storage_ptr","typeString":"struct StorageSlot.Bytes32Slot"}},"visibility":"internal"}],"src":"2479:23:11"},"scope":1461,"src":"2419:163:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1404,"nodeType":"Block","src":"2763:79:11","statements":[{"AST":{"nativeSrc":"2798:38:11","nodeType":"YulBlock","src":"2798:38:11","statements":[{"nativeSrc":"2812:14:11","nodeType":"YulAssignment","src":"2812:14:11","value":{"name":"slot","nativeSrc":"2822:4:11","nodeType":"YulIdentifier","src":"2822:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"2812:6:11","nodeType":"YulIdentifier","src":"2812:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1401,"isOffset":false,"isSlot":true,"src":"2812:6:11","suffix":"slot","valueSize":1},{"declaration":1397,"isOffset":false,"isSlot":false,"src":"2822:4:11","valueSize":1}],"flags":["memory-safe"],"id":1403,"nodeType":"InlineAssembly","src":"2773:63:11"}]},"documentation":{"id":1395,"nodeType":"StructuredDocumentation","src":"2588:86:11","text":" @dev Returns a `Uint256Slot` with member `value` located at `slot`."},"id":1405,"implemented":true,"kind":"function","modifiers":[],"name":"getUint256Slot","nameLocation":"2688:14:11","nodeType":"FunctionDefinition","parameters":{"id":1398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1397,"mutability":"mutable","name":"slot","nameLocation":"2711:4:11","nodeType":"VariableDeclaration","scope":1405,"src":"2703:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1396,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2703:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2702:14:11"},"returnParameters":{"id":1402,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1401,"mutability":"mutable","name":"r","nameLocation":"2760:1:11","nodeType":"VariableDeclaration","scope":1405,"src":"2740:21:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2381352_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"},"typeName":{"id":1400,"nodeType":"UserDefinedTypeName","pathNode":{"id":1399,"name":"Uint256Slot","nameLocations":["2740:11:11"],"nodeType":"IdentifierPath","referencedDeclaration":1352,"src":"2740:11:11"},"referencedDeclaration":1352,"src":"2740:11:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2391352_storage_ptr","typeString":"struct StorageSlot.Uint256Slot"}},"visibility":"internal"}],"src":"2739:23:11"},"scope":1461,"src":"2679:163:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1415,"nodeType":"Block","src":"3020:79:11","statements":[{"AST":{"nativeSrc":"3055:38:11","nodeType":"YulBlock","src":"3055:38:11","statements":[{"nativeSrc":"3069:14:11","nodeType":"YulAssignment","src":"3069:14:11","value":{"name":"slot","nativeSrc":"3079:4:11","nodeType":"YulIdentifier","src":"3079:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"3069:6:11","nodeType":"YulIdentifier","src":"3069:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1412,"isOffset":false,"isSlot":true,"src":"3069:6:11","suffix":"slot","valueSize":1},{"declaration":1408,"isOffset":false,"isSlot":false,"src":"3079:4:11","valueSize":1}],"flags":["memory-safe"],"id":1414,"nodeType":"InlineAssembly","src":"3030:63:11"}]},"documentation":{"id":1406,"nodeType":"StructuredDocumentation","src":"2848:85:11","text":" @dev Returns a `Int256Slot` with member `value` located at `slot`."},"id":1416,"implemented":true,"kind":"function","modifiers":[],"name":"getInt256Slot","nameLocation":"2947:13:11","nodeType":"FunctionDefinition","parameters":{"id":1409,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1408,"mutability":"mutable","name":"slot","nameLocation":"2969:4:11","nodeType":"VariableDeclaration","scope":1416,"src":"2961:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1407,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2961:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2960:14:11"},"returnParameters":{"id":1413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1412,"mutability":"mutable","name":"r","nameLocation":"3017:1:11","nodeType":"VariableDeclaration","scope":1416,"src":"2998:20:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2401355_storage_ptr","typeString":"struct StorageSlot.Int256Slot"},"typeName":{"id":1411,"nodeType":"UserDefinedTypeName","pathNode":{"id":1410,"name":"Int256Slot","nameLocations":["2998:10:11"],"nodeType":"IdentifierPath","referencedDeclaration":1355,"src":"2998:10:11"},"referencedDeclaration":1355,"src":"2998:10:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2411355_storage_ptr","typeString":"struct StorageSlot.Int256Slot"}},"visibility":"internal"}],"src":"2997:22:11"},"scope":1461,"src":"2938:161:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1426,"nodeType":"Block","src":"3277:79:11","statements":[{"AST":{"nativeSrc":"3312:38:11","nodeType":"YulBlock","src":"3312:38:11","statements":[{"nativeSrc":"3326:14:11","nodeType":"YulAssignment","src":"3326:14:11","value":{"name":"slot","nativeSrc":"3336:4:11","nodeType":"YulIdentifier","src":"3336:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"3326:6:11","nodeType":"YulIdentifier","src":"3326:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1423,"isOffset":false,"isSlot":true,"src":"3326:6:11","suffix":"slot","valueSize":1},{"declaration":1419,"isOffset":false,"isSlot":false,"src":"3336:4:11","valueSize":1}],"flags":["memory-safe"],"id":1425,"nodeType":"InlineAssembly","src":"3287:63:11"}]},"documentation":{"id":1417,"nodeType":"StructuredDocumentation","src":"3105:85:11","text":" @dev Returns a `StringSlot` with member `value` located at `slot`."},"id":1427,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3204:13:11","nodeType":"FunctionDefinition","parameters":{"id":1420,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1419,"mutability":"mutable","name":"slot","nameLocation":"3226:4:11","nodeType":"VariableDeclaration","scope":1427,"src":"3218:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1418,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3218:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3217:14:11"},"returnParameters":{"id":1424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1423,"mutability":"mutable","name":"r","nameLocation":"3274:1:11","nodeType":"VariableDeclaration","scope":1427,"src":"3255:20:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2421358_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1422,"nodeType":"UserDefinedTypeName","pathNode":{"id":1421,"name":"StringSlot","nameLocations":["3255:10:11"],"nodeType":"IdentifierPath","referencedDeclaration":1358,"src":"3255:10:11"},"referencedDeclaration":1358,"src":"3255:10:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2431358_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3254:22:11"},"scope":1461,"src":"3195:161:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1437,"nodeType":"Block","src":"3558:85:11","statements":[{"AST":{"nativeSrc":"3593:44:11","nodeType":"YulBlock","src":"3593:44:11","statements":[{"nativeSrc":"3607:20:11","nodeType":"YulAssignment","src":"3607:20:11","value":{"name":"store.slot","nativeSrc":"3617:10:11","nodeType":"YulIdentifier","src":"3617:10:11"},"variableNames":[{"name":"r.slot","nativeSrc":"3607:6:11","nodeType":"YulIdentifier","src":"3607:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1434,"isOffset":false,"isSlot":true,"src":"3607:6:11","suffix":"slot","valueSize":1},{"declaration":1430,"isOffset":false,"isSlot":true,"src":"3617:10:11","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":1436,"nodeType":"InlineAssembly","src":"3568:69:11"}]},"documentation":{"id":1428,"nodeType":"StructuredDocumentation","src":"3362:101:11","text":" @dev Returns an `StringSlot` representation of the string storage pointer `store`."},"id":1438,"implemented":true,"kind":"function","modifiers":[],"name":"getStringSlot","nameLocation":"3477:13:11","nodeType":"FunctionDefinition","parameters":{"id":1431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1430,"mutability":"mutable","name":"store","nameLocation":"3506:5:11","nodeType":"VariableDeclaration","scope":1438,"src":"3491:20:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"},"typeName":{"id":1429,"name":"string","nodeType":"ElementaryTypeName","src":"3491:6:11","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3490:22:11"},"returnParameters":{"id":1435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1434,"mutability":"mutable","name":"r","nameLocation":"3555:1:11","nodeType":"VariableDeclaration","scope":1438,"src":"3536:20:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2441358_storage_ptr","typeString":"struct StorageSlot.StringSlot"},"typeName":{"id":1433,"nodeType":"UserDefinedTypeName","pathNode":{"id":1432,"name":"StringSlot","nameLocations":["3536:10:11"],"nodeType":"IdentifierPath","referencedDeclaration":1358,"src":"3536:10:11"},"referencedDeclaration":1358,"src":"3536:10:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2451358_storage_ptr","typeString":"struct StorageSlot.StringSlot"}},"visibility":"internal"}],"src":"3535:22:11"},"scope":1461,"src":"3468:175:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1448,"nodeType":"Block","src":"3818:79:11","statements":[{"AST":{"nativeSrc":"3853:38:11","nodeType":"YulBlock","src":"3853:38:11","statements":[{"nativeSrc":"3867:14:11","nodeType":"YulAssignment","src":"3867:14:11","value":{"name":"slot","nativeSrc":"3877:4:11","nodeType":"YulIdentifier","src":"3877:4:11"},"variableNames":[{"name":"r.slot","nativeSrc":"3867:6:11","nodeType":"YulIdentifier","src":"3867:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1445,"isOffset":false,"isSlot":true,"src":"3867:6:11","suffix":"slot","valueSize":1},{"declaration":1441,"isOffset":false,"isSlot":false,"src":"3877:4:11","valueSize":1}],"flags":["memory-safe"],"id":1447,"nodeType":"InlineAssembly","src":"3828:63:11"}]},"documentation":{"id":1439,"nodeType":"StructuredDocumentation","src":"3649:84:11","text":" @dev Returns a `BytesSlot` with member `value` located at `slot`."},"id":1449,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"3747:12:11","nodeType":"FunctionDefinition","parameters":{"id":1442,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1441,"mutability":"mutable","name":"slot","nameLocation":"3768:4:11","nodeType":"VariableDeclaration","scope":1449,"src":"3760:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1440,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3760:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3759:14:11"},"returnParameters":{"id":1446,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1445,"mutability":"mutable","name":"r","nameLocation":"3815:1:11","nodeType":"VariableDeclaration","scope":1449,"src":"3797:19:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2461361_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":1444,"nodeType":"UserDefinedTypeName","pathNode":{"id":1443,"name":"BytesSlot","nameLocations":["3797:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1361,"src":"3797:9:11"},"referencedDeclaration":1361,"src":"3797:9:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2471361_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"3796:21:11"},"scope":1461,"src":"3738:159:11","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1459,"nodeType":"Block","src":"4094:85:11","statements":[{"AST":{"nativeSrc":"4129:44:11","nodeType":"YulBlock","src":"4129:44:11","statements":[{"nativeSrc":"4143:20:11","nodeType":"YulAssignment","src":"4143:20:11","value":{"name":"store.slot","nativeSrc":"4153:10:11","nodeType":"YulIdentifier","src":"4153:10:11"},"variableNames":[{"name":"r.slot","nativeSrc":"4143:6:11","nodeType":"YulIdentifier","src":"4143:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1456,"isOffset":false,"isSlot":true,"src":"4143:6:11","suffix":"slot","valueSize":1},{"declaration":1452,"isOffset":false,"isSlot":true,"src":"4153:10:11","suffix":"slot","valueSize":1}],"flags":["memory-safe"],"id":1458,"nodeType":"InlineAssembly","src":"4104:69:11"}]},"documentation":{"id":1450,"nodeType":"StructuredDocumentation","src":"3903:99:11","text":" @dev Returns an `BytesSlot` representation of the bytes storage pointer `store`."},"id":1460,"implemented":true,"kind":"function","modifiers":[],"name":"getBytesSlot","nameLocation":"4016:12:11","nodeType":"FunctionDefinition","parameters":{"id":1453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1452,"mutability":"mutable","name":"store","nameLocation":"4043:5:11","nodeType":"VariableDeclaration","scope":1460,"src":"4029:19:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"},"typeName":{"id":1451,"name":"bytes","nodeType":"ElementaryTypeName","src":"4029:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4028:21:11"},"returnParameters":{"id":1457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1456,"mutability":"mutable","name":"r","nameLocation":"4091:1:11","nodeType":"VariableDeclaration","scope":1460,"src":"4073:19:11","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2481361_storage_ptr","typeString":"struct StorageSlot.BytesSlot"},"typeName":{"id":1455,"nodeType":"UserDefinedTypeName","pathNode":{"id":1454,"name":"BytesSlot","nameLocations":["4073:9:11"],"nodeType":"IdentifierPath","referencedDeclaration":1361,"src":"4073:9:11"},"referencedDeclaration":1361,"src":"4073:9:11","typeDescriptions":{"typeIdentifier":"t_structMATH_PLACEHOLDER_2491361_storage_ptr","typeString":"struct StorageSlot.BytesSlot"}},"visibility":"internal"}],"src":"4072:21:11"},"scope":1461,"src":"4007:172:11","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":1462,"src":"1407:2774:11","usedErrors":[],"usedEvents":[]}],"src":"193:3989:11"},"id":11},"@openzeppelin/contracts/utils/Strings.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","exportedSymbols":{"Math":[5145],"SafeCast":[6910],"SignedMath":[7054],"Strings":[2863]},"id":2864,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1463,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"101:24:12"},{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","file":"./math/Math.sol","id":1465,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2864,"sourceUnit":5146,"src":"127:37:12","symbolAliases":[{"foreign":{"id":1464,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"135:4:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./math/SafeCast.sol","id":1467,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2864,"sourceUnit":6911,"src":"165:45:12","symbolAliases":[{"foreign":{"id":1466,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"173:8:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","file":"./math/SignedMath.sol","id":1469,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2864,"sourceUnit":7055,"src":"211:49:12","symbolAliases":[{"foreign":{"id":1468,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7054,"src":"219:10:12","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Strings","contractDependencies":[],"contractKind":"library","documentation":{"id":1470,"nodeType":"StructuredDocumentation","src":"262:34:12","text":" @dev String operations."},"fullyImplemented":true,"id":2863,"linearizedBaseContracts":[2863],"name":"Strings","nameLocation":"305:7:12","nodeType":"ContractDefinition","nodes":[{"global":false,"id":1472,"libraryName":{"id":1471,"name":"SafeCast","nameLocations":["325:8:12"],"nodeType":"IdentifierPath","referencedDeclaration":6910,"src":"325:8:12"},"nodeType":"UsingForDirective","src":"319:21:12"},{"constant":true,"id":1475,"mutability":"constant","name":"HEX_DIGITS","nameLocation":"371:10:12","nodeType":"VariableDeclaration","scope":2863,"src":"346:56:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"},"typeName":{"id":1473,"name":"bytes16","nodeType":"ElementaryTypeName","src":"346:7:12","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"value":{"hexValue":"30313233343536373839616263646566","id":1474,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"384:18:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f","typeString":"literal_string \"0123456789abcdef\""},"value":"0123456789abcdef"},"visibility":"private"},{"constant":true,"id":1478,"mutability":"constant","name":"ADDRESS_LENGTH","nameLocation":"431:14:12","nodeType":"VariableDeclaration","scope":2863,"src":"408:42:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1476,"name":"uint8","nodeType":"ElementaryTypeName","src":"408:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"value":{"hexValue":"3230","id":1477,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"448:2:12","typeDescriptions":{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},"value":"20"},"visibility":"private"},{"constant":true,"id":1514,"mutability":"constant","name":"SPECIAL_CHARS_LOOKUP","nameLocation":"481:20:12","nodeType":"VariableDeclaration","scope":2863,"src":"456:302:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1479,"name":"uint256","nodeType":"ElementaryTypeName","src":"456:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"},"id":1513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_17179883264_by_1","typeString":"int_const 17179883264"},"id":1508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_14080_by_1","typeString":"int_const 14080"},"id":1503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_5888_by_1","typeString":"int_const 5888"},"id":1498,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_1792_by_1","typeString":"int_const 1792"},"id":1493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_rational_768_by_1","typeString":"int_const 768"},"id":1488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":1482,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"513:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783038","id":1481,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"518:4:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"513:9:12","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":1483,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"512:11:12","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":1486,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1484,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"552:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783039","id":1485,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"557:4:12","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"552:9:12","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}}],"id":1487,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"551:11:12","typeDescriptions":{"typeIdentifier":"t_rational_512_by_1","typeString":"int_const 512"}},"src":"512:50:12","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":1491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1489,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"585:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783061","id":1490,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"590:4:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"585:9:12","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}}],"id":1492,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"584:11:12","typeDescriptions":{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}},"src":"512:83:12","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":1496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"622:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783063","id":1495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"627:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"622:9:12","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}}],"id":1497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"621:11:12","typeDescriptions":{"typeIdentifier":"t_rational_4096_by_1","typeString":"int_const 4096"}},"src":"512:120:12","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":1501,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"661:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783064","id":1500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"666:4:12","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"661:9:12","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}}],"id":1502,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"660:11:12","typeDescriptions":{"typeIdentifier":"t_rational_8192_by_1","typeString":"int_const 8192"}},"src":"512:159:12","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":1506,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"706:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783232","id":1505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"711:4:12","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"706:9:12","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}}],"id":1507,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"705:11:12","typeDescriptions":{"typeIdentifier":"t_rational_17179869184_by_1","typeString":"int_const 17179869184"}},"src":"512:204:12","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":1511,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":1509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"748:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"30783563","id":1510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"753:4:12","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"748:9:12","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}}],"id":1512,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"747:11:12","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521099596496896_by_1","typeString":"int_const 4951760157141521099596496896"}},"src":"512:246:12","typeDescriptions":{"typeIdentifier":"t_rational_4951760157141521116776380160_by_1","typeString":"int_const 4951760157141521116776380160"}},"visibility":"private"},{"documentation":{"id":1515,"nodeType":"StructuredDocumentation","src":"778:81:12","text":" @dev The `value` string doesn't fit in the specified `length`."},"errorSelector":"e22e27eb","id":1521,"name":"StringsInsufficientHexLength","nameLocation":"870:28:12","nodeType":"ErrorDefinition","parameters":{"id":1520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1517,"mutability":"mutable","name":"value","nameLocation":"907:5:12","nodeType":"VariableDeclaration","scope":1521,"src":"899:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1516,"name":"uint256","nodeType":"ElementaryTypeName","src":"899:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1519,"mutability":"mutable","name":"length","nameLocation":"922:6:12","nodeType":"VariableDeclaration","scope":1521,"src":"914:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1518,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"898:31:12"},"src":"864:66:12"},{"documentation":{"id":1522,"nodeType":"StructuredDocumentation","src":"936:108:12","text":" @dev The string being parsed contains characters that are not in scope of the given base."},"errorSelector":"94e2737e","id":1524,"name":"StringsInvalidChar","nameLocation":"1055:18:12","nodeType":"ErrorDefinition","parameters":{"id":1523,"nodeType":"ParameterList","parameters":[],"src":"1073:2:12"},"src":"1049:27:12"},{"documentation":{"id":1525,"nodeType":"StructuredDocumentation","src":"1082:84:12","text":" @dev The string being parsed is not a properly formatted address."},"errorSelector":"1d15ae44","id":1527,"name":"StringsInvalidAddressFormat","nameLocation":"1177:27:12","nodeType":"ErrorDefinition","parameters":{"id":1526,"nodeType":"ParameterList","parameters":[],"src":"1204:2:12"},"src":"1171:36:12"},{"body":{"id":1574,"nodeType":"Block","src":"1379:561:12","statements":[{"id":1573,"nodeType":"UncheckedBlock","src":"1389:545:12","statements":[{"assignments":[1536],"declarations":[{"constant":false,"id":1536,"mutability":"mutable","name":"length","nameLocation":"1421:6:12","nodeType":"VariableDeclaration","scope":1573,"src":"1413:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1535,"name":"uint256","nodeType":"ElementaryTypeName","src":"1413:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1543,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1539,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"1441:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1537,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"1430:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5145_$","typeString":"type(library Math)"}},"id":1538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1435:5:12","memberName":"log10","nodeType":"MemberAccess","referencedDeclaration":4977,"src":"1430:10:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1540,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1430:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1450:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1430:21:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1413:38:12"},{"assignments":[1545],"declarations":[{"constant":false,"id":1545,"mutability":"mutable","name":"buffer","nameLocation":"1479:6:12","nodeType":"VariableDeclaration","scope":1573,"src":"1465:20:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1544,"name":"string","nodeType":"ElementaryTypeName","src":"1465:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"id":1550,"initialValue":{"arguments":[{"id":1548,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1536,"src":"1499:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1488:10:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"},"typeName":{"id":1546,"name":"string","nodeType":"ElementaryTypeName","src":"1492:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1488:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"nodeType":"VariableDeclarationStatement","src":"1465:41:12"},{"assignments":[1552],"declarations":[{"constant":false,"id":1552,"mutability":"mutable","name":"ptr","nameLocation":"1528:3:12","nodeType":"VariableDeclaration","scope":1573,"src":"1520:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1551,"name":"uint256","nodeType":"ElementaryTypeName","src":"1520:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1553,"nodeType":"VariableDeclarationStatement","src":"1520:11:12"},{"AST":{"nativeSrc":"1570:67:12","nodeType":"YulBlock","src":"1570:67:12","statements":[{"nativeSrc":"1588:35:12","nodeType":"YulAssignment","src":"1588:35:12","value":{"arguments":[{"name":"buffer","nativeSrc":"1599:6:12","nodeType":"YulIdentifier","src":"1599:6:12"},{"arguments":[{"kind":"number","nativeSrc":"1611:2:12","nodeType":"YulLiteral","src":"1611:2:12","type":"","value":"32"},{"name":"length","nativeSrc":"1615:6:12","nodeType":"YulIdentifier","src":"1615:6:12"}],"functionName":{"name":"add","nativeSrc":"1607:3:12","nodeType":"YulIdentifier","src":"1607:3:12"},"nativeSrc":"1607:15:12","nodeType":"YulFunctionCall","src":"1607:15:12"}],"functionName":{"name":"add","nativeSrc":"1595:3:12","nodeType":"YulIdentifier","src":"1595:3:12"},"nativeSrc":"1595:28:12","nodeType":"YulFunctionCall","src":"1595:28:12"},"variableNames":[{"name":"ptr","nativeSrc":"1588:3:12","nodeType":"YulIdentifier","src":"1588:3:12"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1545,"isOffset":false,"isSlot":false,"src":"1599:6:12","valueSize":1},{"declaration":1536,"isOffset":false,"isSlot":false,"src":"1615:6:12","valueSize":1},{"declaration":1552,"isOffset":false,"isSlot":false,"src":"1588:3:12","valueSize":1}],"flags":["memory-safe"],"id":1554,"nodeType":"InlineAssembly","src":"1545:92:12"},{"body":{"id":1569,"nodeType":"Block","src":"1663:234:12","statements":[{"expression":{"id":1557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":false,"src":"1681:5:12","subExpression":{"id":1556,"name":"ptr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1552,"src":"1681:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1558,"nodeType":"ExpressionStatement","src":"1681:5:12"},{"AST":{"nativeSrc":"1729:86:12","nodeType":"YulBlock","src":"1729:86:12","statements":[{"expression":{"arguments":[{"name":"ptr","nativeSrc":"1759:3:12","nodeType":"YulIdentifier","src":"1759:3:12"},{"arguments":[{"arguments":[{"name":"value","nativeSrc":"1773:5:12","nodeType":"YulIdentifier","src":"1773:5:12"},{"kind":"number","nativeSrc":"1780:2:12","nodeType":"YulLiteral","src":"1780:2:12","type":"","value":"10"}],"functionName":{"name":"mod","nativeSrc":"1769:3:12","nodeType":"YulIdentifier","src":"1769:3:12"},"nativeSrc":"1769:14:12","nodeType":"YulFunctionCall","src":"1769:14:12"},{"name":"HEX_DIGITS","nativeSrc":"1785:10:12","nodeType":"YulIdentifier","src":"1785:10:12"}],"functionName":{"name":"byte","nativeSrc":"1764:4:12","nodeType":"YulIdentifier","src":"1764:4:12"},"nativeSrc":"1764:32:12","nodeType":"YulFunctionCall","src":"1764:32:12"}],"functionName":{"name":"mstore8","nativeSrc":"1751:7:12","nodeType":"YulIdentifier","src":"1751:7:12"},"nativeSrc":"1751:46:12","nodeType":"YulFunctionCall","src":"1751:46:12"},"nativeSrc":"1751:46:12","nodeType":"YulExpressionStatement","src":"1751:46:12"}]},"evmVersion":"paris","externalReferences":[{"declaration":1475,"isOffset":false,"isSlot":false,"src":"1785:10:12","valueSize":1},{"declaration":1552,"isOffset":false,"isSlot":false,"src":"1759:3:12","valueSize":1},{"declaration":1530,"isOffset":false,"isSlot":false,"src":"1773:5:12","valueSize":1}],"flags":["memory-safe"],"id":1559,"nodeType":"InlineAssembly","src":"1704:111:12"},{"expression":{"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"1832:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"hexValue":"3130","id":1561,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1841:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"1832:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1563,"nodeType":"ExpressionStatement","src":"1832:11:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1564,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1530,"src":"1865:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":1565,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1874:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1865:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1568,"nodeType":"IfStatement","src":"1861:21:12","trueBody":{"id":1567,"nodeType":"Break","src":"1877:5:12"}}]},"condition":{"hexValue":"74727565","id":1555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"1657:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"id":1570,"nodeType":"WhileStatement","src":"1650:247:12"},{"expression":{"id":1571,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"1917:6:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1534,"id":1572,"nodeType":"Return","src":"1910:13:12"}]}]},"documentation":{"id":1528,"nodeType":"StructuredDocumentation","src":"1213:90:12","text":" @dev Converts a `uint256` to its ASCII `string` decimal representation."},"id":1575,"implemented":true,"kind":"function","modifiers":[],"name":"toString","nameLocation":"1317:8:12","nodeType":"FunctionDefinition","parameters":{"id":1531,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1530,"mutability":"mutable","name":"value","nameLocation":"1334:5:12","nodeType":"VariableDeclaration","scope":1575,"src":"1326:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1529,"name":"uint256","nodeType":"ElementaryTypeName","src":"1326:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1325:15:12"},"returnParameters":{"id":1534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1533,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1575,"src":"1364:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1532,"name":"string","nodeType":"ElementaryTypeName","src":"1364:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"1363:15:12"},"scope":2863,"src":"1308:632:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1600,"nodeType":"Block","src":"2116:92:12","statements":[{"expression":{"arguments":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":1588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1586,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"2147:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":1587,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2155:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"2147:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"hexValue":"","id":1590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2165:2:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""},"id":1591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"2147:20:12","trueExpression":{"hexValue":"2d","id":1589,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2159:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"},"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[{"arguments":[{"id":1595,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1578,"src":"2193:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"expression":{"id":1593,"name":"SignedMath","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7054,"src":"2178:10:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_2567054_$","typeString":"type(library SignedMath)"}},"id":1594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2189:3:12","memberName":"abs","nodeType":"MemberAccess","referencedDeclaration":7053,"src":"2178:14:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_int256_$returns$_t_uint256_$","typeString":"function (int256) pure returns (uint256)"}},"id":1596,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2178:21:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1592,"name":"toString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1575,"src":"2169:8:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":1597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2169:31:12","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":1584,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2133:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1583,"name":"string","nodeType":"ElementaryTypeName","src":"2133:6:12","typeDescriptions":{}}},"id":1585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2140:6:12","memberName":"concat","nodeType":"MemberAccess","src":"2133:13:12","typeDescriptions":{"typeIdentifier":"t_function_stringconcat_pure$__$returns$_t_string_memory_ptr_$","typeString":"function () pure returns (string memory)"}},"id":1598,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2133:68:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1582,"id":1599,"nodeType":"Return","src":"2126:75:12"}]},"documentation":{"id":1576,"nodeType":"StructuredDocumentation","src":"1946:89:12","text":" @dev Converts a `int256` to its ASCII `string` decimal representation."},"id":1601,"implemented":true,"kind":"function","modifiers":[],"name":"toStringSigned","nameLocation":"2049:14:12","nodeType":"FunctionDefinition","parameters":{"id":1579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1578,"mutability":"mutable","name":"value","nameLocation":"2071:5:12","nodeType":"VariableDeclaration","scope":1601,"src":"2064:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":1577,"name":"int256","nodeType":"ElementaryTypeName","src":"2064:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"2063:14:12"},"returnParameters":{"id":1582,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1581,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1601,"src":"2101:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1580,"name":"string","nodeType":"ElementaryTypeName","src":"2101:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2100:15:12"},"scope":2863,"src":"2040:168:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1620,"nodeType":"Block","src":"2387:100:12","statements":[{"id":1619,"nodeType":"UncheckedBlock","src":"2397:84:12","statements":[{"expression":{"arguments":[{"id":1610,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"2440:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1613,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1604,"src":"2459:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":1611,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"2447:4:12","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_2655145_$","typeString":"type(library Math)"}},"id":1612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2452:6:12","memberName":"log256","nodeType":"MemberAccess","referencedDeclaration":5088,"src":"2447:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":1614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2447:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2468:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2447:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1609,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1621,1704,1724],"referencedDeclaration":1704,"src":"2428:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2428:42:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1608,"id":1618,"nodeType":"Return","src":"2421:49:12"}]}]},"documentation":{"id":1602,"nodeType":"StructuredDocumentation","src":"2214:94:12","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."},"id":1621,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2322:11:12","nodeType":"FunctionDefinition","parameters":{"id":1605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1604,"mutability":"mutable","name":"value","nameLocation":"2342:5:12","nodeType":"VariableDeclaration","scope":1621,"src":"2334:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2334:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2333:15:12"},"returnParameters":{"id":1608,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1607,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1621,"src":"2372:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1606,"name":"string","nodeType":"ElementaryTypeName","src":"2372:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2371:15:12"},"scope":2863,"src":"2313:174:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1703,"nodeType":"Block","src":"2700:435:12","statements":[{"assignments":[1632],"declarations":[{"constant":false,"id":1632,"mutability":"mutable","name":"localValue","nameLocation":"2718:10:12","nodeType":"VariableDeclaration","scope":1703,"src":"2710:18:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1631,"name":"uint256","nodeType":"ElementaryTypeName","src":"2710:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1634,"initialValue":{"id":1633,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"2731:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2710:26:12"},{"assignments":[1636],"declarations":[{"constant":false,"id":1636,"mutability":"mutable","name":"buffer","nameLocation":"2759:6:12","nodeType":"VariableDeclaration","scope":1703,"src":"2746:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1635,"name":"bytes","nodeType":"ElementaryTypeName","src":"2746:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1645,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2778:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1640,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"2782:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2778:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"32","id":1642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2791:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"2778:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1638,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2768:9:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":1637,"name":"bytes","nodeType":"ElementaryTypeName","src":"2772:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":1644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2768:25:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"2746:47:12"},{"expression":{"id":1650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1646,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"2803:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1648,"indexExpression":{"hexValue":"30","id":1647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2810:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2803:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":1649,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2815:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d","typeString":"literal_string \"0\""},"value":"0"},"src":"2803:15:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1651,"nodeType":"ExpressionStatement","src":"2803:15:12"},{"expression":{"id":1656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1652,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"2828:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1654,"indexExpression":{"hexValue":"31","id":1653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2835:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2828:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"78","id":1655,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2840:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83","typeString":"literal_string \"x\""},"value":"x"},"src":"2828:15:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1657,"nodeType":"ExpressionStatement","src":"2828:15:12"},{"body":{"id":1686,"nodeType":"Block","src":"2898:95:12","statements":[{"expression":{"id":1680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1672,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"2912:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1674,"indexExpression":{"id":1673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"2919:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2912:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":1675,"name":"HEX_DIGITS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1475,"src":"2924:10:12","typeDescriptions":{"typeIdentifier":"t_bytes16","typeString":"bytes16"}},"id":1679,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1676,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"2935:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1677,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2948:3:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"2935:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2924:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"2912:40:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1681,"nodeType":"ExpressionStatement","src":"2912:40:12"},{"expression":{"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1682,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"2966:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1683,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2981:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"2966:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1685,"nodeType":"ExpressionStatement","src":"2966:16:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"2886:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2890:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2886:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1687,"initializationExpression":{"assignments":[1659],"declarations":[{"constant":false,"id":1659,"mutability":"mutable","name":"i","nameLocation":"2866:1:12","nodeType":"VariableDeclaration","scope":1687,"src":"2858:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1658,"name":"uint256","nodeType":"ElementaryTypeName","src":"2858:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1665,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1664,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":1660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2870:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":1661,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"2874:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2870:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":1663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2883:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2870:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2858:26:12"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"2893:3:12","subExpression":{"id":1669,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1659,"src":"2895:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1671,"nodeType":"ExpressionStatement","src":"2893:3:12"},"nodeType":"ForStatement","src":"2853:140:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1688,"name":"localValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1632,"src":"3006:10:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3020:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3006:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1697,"nodeType":"IfStatement","src":"3002:96:12","trueBody":{"id":1696,"nodeType":"Block","src":"3023:75:12","statements":[{"errorCall":{"arguments":[{"id":1692,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1624,"src":"3073:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1693,"name":"length","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1626,"src":"3080:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1691,"name":"StringsInsufficientHexLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1521,"src":"3044:28:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":1694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3044:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1695,"nodeType":"RevertStatement","src":"3037:50:12"}]}},{"expression":{"arguments":[{"id":1700,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1636,"src":"3121:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3114:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1698,"name":"string","nodeType":"ElementaryTypeName","src":"3114:6:12","typeDescriptions":{}}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3114:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1630,"id":1702,"nodeType":"Return","src":"3107:21:12"}]},"documentation":{"id":1622,"nodeType":"StructuredDocumentation","src":"2493:112:12","text":" @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."},"id":1704,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"2619:11:12","nodeType":"FunctionDefinition","parameters":{"id":1627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1624,"mutability":"mutable","name":"value","nameLocation":"2639:5:12","nodeType":"VariableDeclaration","scope":1704,"src":"2631:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1623,"name":"uint256","nodeType":"ElementaryTypeName","src":"2631:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1626,"mutability":"mutable","name":"length","nameLocation":"2654:6:12","nodeType":"VariableDeclaration","scope":1704,"src":"2646:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1625,"name":"uint256","nodeType":"ElementaryTypeName","src":"2646:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2630:31:12"},"returnParameters":{"id":1630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1704,"src":"2685:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1628,"name":"string","nodeType":"ElementaryTypeName","src":"2685:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"2684:15:12"},"scope":2863,"src":"2610:525:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1723,"nodeType":"Block","src":"3367:75:12","statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"id":1717,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1707,"src":"3412:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1716,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3404:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":1715,"name":"uint160","nodeType":"ElementaryTypeName","src":"3404:7:12","typeDescriptions":{}}},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3404:13:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":1714,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3396:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1713,"name":"uint256","nodeType":"ElementaryTypeName","src":"3396:7:12","typeDescriptions":{}}},"id":1719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3396:22:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1720,"name":"ADDRESS_LENGTH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1478,"src":"3420:14:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":1712,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1621,1704,1724],"referencedDeclaration":1704,"src":"3384:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256,uint256) pure returns (string memory)"}},"id":1721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3384:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1711,"id":1722,"nodeType":"Return","src":"3377:58:12"}]},"documentation":{"id":1705,"nodeType":"StructuredDocumentation","src":"3141:148:12","text":" @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal\n representation."},"id":1724,"implemented":true,"kind":"function","modifiers":[],"name":"toHexString","nameLocation":"3303:11:12","nodeType":"FunctionDefinition","parameters":{"id":1708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1707,"mutability":"mutable","name":"addr","nameLocation":"3323:4:12","nodeType":"VariableDeclaration","scope":1724,"src":"3315:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1706,"name":"address","nodeType":"ElementaryTypeName","src":"3315:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3314:14:12"},"returnParameters":{"id":1711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1724,"src":"3352:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1709,"name":"string","nodeType":"ElementaryTypeName","src":"3352:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3351:15:12"},"scope":2863,"src":"3294:148:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1788,"nodeType":"Block","src":"3699:642:12","statements":[{"assignments":[1733],"declarations":[{"constant":false,"id":1733,"mutability":"mutable","name":"buffer","nameLocation":"3722:6:12","nodeType":"VariableDeclaration","scope":1788,"src":"3709:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1732,"name":"bytes","nodeType":"ElementaryTypeName","src":"3709:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1740,"initialValue":{"arguments":[{"arguments":[{"id":1737,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1727,"src":"3749:4:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1736,"name":"toHexString","nodeType":"Identifier","overloadedDeclarations":[1621,1704,1724],"referencedDeclaration":1724,"src":"3737:11:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_string_memory_ptr_$","typeString":"function (address) pure returns (string memory)"}},"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3737:17:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1735,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3731:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1734,"name":"bytes","nodeType":"ElementaryTypeName","src":"3731:5:12","typeDescriptions":{}}},"id":1739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3731:24:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"3709:46:12"},{"assignments":[1742],"declarations":[{"constant":false,"id":1742,"mutability":"mutable","name":"hashValue","nameLocation":"3848:9:12","nodeType":"VariableDeclaration","scope":1788,"src":"3840:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1741,"name":"uint256","nodeType":"ElementaryTypeName","src":"3840:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1743,"nodeType":"VariableDeclarationStatement","src":"3840:17:12"},{"AST":{"nativeSrc":"3892:78:12","nodeType":"YulBlock","src":"3892:78:12","statements":[{"nativeSrc":"3906:54:12","nodeType":"YulAssignment","src":"3906:54:12","value":{"arguments":[{"kind":"number","nativeSrc":"3923:2:12","nodeType":"YulLiteral","src":"3923:2:12","type":"","value":"96"},{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"3941:6:12","nodeType":"YulIdentifier","src":"3941:6:12"},{"kind":"number","nativeSrc":"3949:4:12","nodeType":"YulLiteral","src":"3949:4:12","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"3937:3:12","nodeType":"YulIdentifier","src":"3937:3:12"},"nativeSrc":"3937:17:12","nodeType":"YulFunctionCall","src":"3937:17:12"},{"kind":"number","nativeSrc":"3956:2:12","nodeType":"YulLiteral","src":"3956:2:12","type":"","value":"40"}],"functionName":{"name":"keccak256","nativeSrc":"3927:9:12","nodeType":"YulIdentifier","src":"3927:9:12"},"nativeSrc":"3927:32:12","nodeType":"YulFunctionCall","src":"3927:32:12"}],"functionName":{"name":"shr","nativeSrc":"3919:3:12","nodeType":"YulIdentifier","src":"3919:3:12"},"nativeSrc":"3919:41:12","nodeType":"YulFunctionCall","src":"3919:41:12"},"variableNames":[{"name":"hashValue","nativeSrc":"3906:9:12","nodeType":"YulIdentifier","src":"3906:9:12"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1733,"isOffset":false,"isSlot":false,"src":"3941:6:12","valueSize":1},{"declaration":1742,"isOffset":false,"isSlot":false,"src":"3906:9:12","valueSize":1}],"flags":["memory-safe"],"id":1744,"nodeType":"InlineAssembly","src":"3867:103:12"},{"body":{"id":1781,"nodeType":"Block","src":"4013:291:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1759,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1755,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"4119:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"hexValue":"307866","id":1756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4131:3:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"4119:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"37","id":1758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4137:1:12","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"4119:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"baseExpression":{"id":1762,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4148:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1764,"indexExpression":{"id":1763,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"4155:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4148:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1761,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4142:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":1760,"name":"uint8","nodeType":"ElementaryTypeName","src":"4142:5:12","typeDescriptions":{}}},"id":1765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4142:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":1766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4161:2:12","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"4142:21:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4119:44:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1776,"nodeType":"IfStatement","src":"4115:150:12","trueBody":{"id":1775,"nodeType":"Block","src":"4165:100:12","statements":[{"expression":{"id":1773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1769,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4233:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1771,"indexExpression":{"id":1770,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"4240:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4233:9:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"^=","rightHandSide":{"hexValue":"30783230","id":1772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4246:4:12","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"4233:17:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":1774,"nodeType":"ExpressionStatement","src":"4233:17:12"}]}},{"expression":{"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1777,"name":"hashValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1742,"src":"4278:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":1778,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4292:1:12","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"4278:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1780,"nodeType":"ExpressionStatement","src":"4278:15:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1749,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"4001:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"31","id":1750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4005:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4001:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1782,"initializationExpression":{"assignments":[1746],"declarations":[{"constant":false,"id":1746,"mutability":"mutable","name":"i","nameLocation":"3993:1:12","nodeType":"VariableDeclaration","scope":1782,"src":"3985:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1745,"name":"uint256","nodeType":"ElementaryTypeName","src":"3985:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1748,"initialValue":{"hexValue":"3431","id":1747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3997:2:12","typeDescriptions":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"value":"41"},"nodeType":"VariableDeclarationStatement","src":"3985:14:12"},"isSimpleCounterLoop":false,"loopExpression":{"expression":{"id":1753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"--","prefix":true,"src":"4008:3:12","subExpression":{"id":1752,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1746,"src":"4010:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1754,"nodeType":"ExpressionStatement","src":"4008:3:12"},"nodeType":"ForStatement","src":"3980:324:12"},{"expression":{"arguments":[{"id":1785,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1733,"src":"4327:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4320:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":1783,"name":"string","nodeType":"ElementaryTypeName","src":"4320:6:12","typeDescriptions":{}}},"id":1786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4320:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":1731,"id":1787,"nodeType":"Return","src":"4313:21:12"}]},"documentation":{"id":1725,"nodeType":"StructuredDocumentation","src":"3448:165:12","text":" @dev Converts an `address` with fixed length of 20 bytes to its checksummed ASCII `string` hexadecimal\n representation, according to EIP-55."},"id":1789,"implemented":true,"kind":"function","modifiers":[],"name":"toChecksumHexString","nameLocation":"3627:19:12","nodeType":"FunctionDefinition","parameters":{"id":1728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1727,"mutability":"mutable","name":"addr","nameLocation":"3655:4:12","nodeType":"VariableDeclaration","scope":1789,"src":"3647:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1726,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3646:14:12"},"returnParameters":{"id":1731,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1730,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1789,"src":"3684:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1729,"name":"string","nodeType":"ElementaryTypeName","src":"3684:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3683:15:12"},"scope":2863,"src":"3618:723:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1825,"nodeType":"Block","src":"4496:104:12","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":1801,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"4519:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1800,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4513:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1799,"name":"bytes","nodeType":"ElementaryTypeName","src":"4513:5:12","typeDescriptions":{}}},"id":1802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4513:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4522:6:12","memberName":"length","nodeType":"MemberAccess","src":"4513:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"arguments":[{"id":1806,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1794,"src":"4538:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1805,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4532:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1804,"name":"bytes","nodeType":"ElementaryTypeName","src":"4532:5:12","typeDescriptions":{}}},"id":1807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4532:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4541:6:12","memberName":"length","nodeType":"MemberAccess","src":"4532:15:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4513:34:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1813,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1792,"src":"4567:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1812,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4561:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1811,"name":"bytes","nodeType":"ElementaryTypeName","src":"4561:5:12","typeDescriptions":{}}},"id":1814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4561:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1810,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4551:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4551:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"arguments":[{"id":1819,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1794,"src":"4590:1:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4584:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1817,"name":"bytes","nodeType":"ElementaryTypeName","src":"4584:5:12","typeDescriptions":{}}},"id":1820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4584:8:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1816,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4574:9:12","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4574:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4551:42:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4513:80:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1798,"id":1824,"nodeType":"Return","src":"4506:87:12"}]},"documentation":{"id":1790,"nodeType":"StructuredDocumentation","src":"4347:66:12","text":" @dev Returns true if the two strings are equal."},"id":1826,"implemented":true,"kind":"function","modifiers":[],"name":"equal","nameLocation":"4427:5:12","nodeType":"FunctionDefinition","parameters":{"id":1795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1792,"mutability":"mutable","name":"a","nameLocation":"4447:1:12","nodeType":"VariableDeclaration","scope":1826,"src":"4433:15:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1791,"name":"string","nodeType":"ElementaryTypeName","src":"4433:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1794,"mutability":"mutable","name":"b","nameLocation":"4464:1:12","nodeType":"VariableDeclaration","scope":1826,"src":"4450:15:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1793,"name":"string","nodeType":"ElementaryTypeName","src":"4450:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4432:34:12"},"returnParameters":{"id":1798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1797,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1826,"src":"4490:4:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1796,"name":"bool","nodeType":"ElementaryTypeName","src":"4490:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4489:6:12"},"scope":2863,"src":"4418:182:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1844,"nodeType":"Block","src":"4897:64:12","statements":[{"expression":{"arguments":[{"id":1835,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"4924:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4931:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1839,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"4940:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1838,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4934:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1837,"name":"bytes","nodeType":"ElementaryTypeName","src":"4934:5:12","typeDescriptions":{}}},"id":1840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4934:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4947:6:12","memberName":"length","nodeType":"MemberAccess","src":"4934:19:12","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":1834,"name":"parseUint","nodeType":"Identifier","overloadedDeclarations":[1845,1876],"referencedDeclaration":1876,"src":"4914:9:12","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":1842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4914:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1833,"id":1843,"nodeType":"Return","src":"4907:47:12"}]},"documentation":{"id":1827,"nodeType":"StructuredDocumentation","src":"4606:214:12","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":1845,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"4834:9:12","nodeType":"FunctionDefinition","parameters":{"id":1830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1829,"mutability":"mutable","name":"input","nameLocation":"4858:5:12","nodeType":"VariableDeclaration","scope":1845,"src":"4844:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1828,"name":"string","nodeType":"ElementaryTypeName","src":"4844:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4843:21:12"},"returnParameters":{"id":1833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1845,"src":"4888:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1831,"name":"uint256","nodeType":"ElementaryTypeName","src":"4888:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4887:9:12"},"scope":2863,"src":"4825:136:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1875,"nodeType":"Block","src":"5366:153:12","statements":[{"assignments":[1858,1860],"declarations":[{"constant":false,"id":1858,"mutability":"mutable","name":"success","nameLocation":"5382:7:12","nodeType":"VariableDeclaration","scope":1875,"src":"5377:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1857,"name":"bool","nodeType":"ElementaryTypeName","src":"5377:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1860,"mutability":"mutable","name":"value","nameLocation":"5399:5:12","nodeType":"VariableDeclaration","scope":1875,"src":"5391:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1859,"name":"uint256","nodeType":"ElementaryTypeName","src":"5391:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1866,"initialValue":{"arguments":[{"id":1862,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1848,"src":"5421:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1863,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1850,"src":"5428:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1864,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1852,"src":"5435:3:12","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":1861,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[1897,1934],"referencedDeclaration":1934,"src":"5408:12:12","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":1865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5408:31:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"5376:63:12"},{"condition":{"id":1868,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"5453:8:12","subExpression":{"id":1867,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1858,"src":"5454:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1872,"nodeType":"IfStatement","src":"5449:41:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":1869,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"5470:18:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":1870,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5470:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":1871,"nodeType":"RevertStatement","src":"5463:27:12"}},{"expression":{"id":1873,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1860,"src":"5507:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1856,"id":1874,"nodeType":"Return","src":"5500:12:12"}]},"documentation":{"id":1846,"nodeType":"StructuredDocumentation","src":"4967:294:12","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":1876,"implemented":true,"kind":"function","modifiers":[],"name":"parseUint","nameLocation":"5275:9:12","nodeType":"FunctionDefinition","parameters":{"id":1853,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1848,"mutability":"mutable","name":"input","nameLocation":"5299:5:12","nodeType":"VariableDeclaration","scope":1876,"src":"5285:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1847,"name":"string","nodeType":"ElementaryTypeName","src":"5285:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1850,"mutability":"mutable","name":"begin","nameLocation":"5314:5:12","nodeType":"VariableDeclaration","scope":1876,"src":"5306:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1849,"name":"uint256","nodeType":"ElementaryTypeName","src":"5306:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1852,"mutability":"mutable","name":"end","nameLocation":"5329:3:12","nodeType":"VariableDeclaration","scope":1876,"src":"5321:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1851,"name":"uint256","nodeType":"ElementaryTypeName","src":"5321:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5284:49:12"},"returnParameters":{"id":1856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1855,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1876,"src":"5357:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1854,"name":"uint256","nodeType":"ElementaryTypeName","src":"5357:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5356:9:12"},"scope":2863,"src":"5266:253:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1896,"nodeType":"Block","src":"5840:83:12","statements":[{"expression":{"arguments":[{"id":1887,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"5886:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":1888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5893:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":1891,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1879,"src":"5902:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1890,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5896:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1889,"name":"bytes","nodeType":"ElementaryTypeName","src":"5896:5:12","typeDescriptions":{}}},"id":1892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5896:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1893,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5909:6:12","memberName":"length","nodeType":"MemberAccess","src":"5896:19:12","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":1886,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2004,"src":"5857:28:12","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":1894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5857:59:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1885,"id":1895,"nodeType":"Return","src":"5850:66:12"}]},"documentation":{"id":1877,"nodeType":"StructuredDocumentation","src":"5525:215:12","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":1897,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"5754:12:12","nodeType":"FunctionDefinition","parameters":{"id":1880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1879,"mutability":"mutable","name":"input","nameLocation":"5781:5:12","nodeType":"VariableDeclaration","scope":1897,"src":"5767:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1878,"name":"string","nodeType":"ElementaryTypeName","src":"5767:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5766:21:12"},"returnParameters":{"id":1885,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1882,"mutability":"mutable","name":"success","nameLocation":"5816:7:12","nodeType":"VariableDeclaration","scope":1897,"src":"5811:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1881,"name":"bool","nodeType":"ElementaryTypeName","src":"5811:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1884,"mutability":"mutable","name":"value","nameLocation":"5833:5:12","nodeType":"VariableDeclaration","scope":1897,"src":"5825:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1883,"name":"uint256","nodeType":"ElementaryTypeName","src":"5825:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5810:29:12"},"scope":2863,"src":"5745:178:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":1933,"nodeType":"Block","src":"6325:144:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1911,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6339:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":1914,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"6351:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6345:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1912,"name":"bytes","nodeType":"ElementaryTypeName","src":"6345:5:12","typeDescriptions":{}}},"id":1915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6345:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6358:6:12","memberName":"length","nodeType":"MemberAccess","src":"6345:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6339:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1918,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"6368:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":1919,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6376:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6368:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"6339:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1926,"nodeType":"IfStatement","src":"6335:63:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"6389:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6396:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1924,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6388:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1910,"id":1925,"nodeType":"Return","src":"6381:17:12"}},{"expression":{"arguments":[{"id":1928,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1900,"src":"6444:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":1929,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1902,"src":"6451:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1930,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1904,"src":"6458:3:12","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":1927,"name":"_tryParseUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2004,"src":"6415:28:12","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":1931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6415:47:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1910,"id":1932,"nodeType":"Return","src":"6408:54:12"}]},"documentation":{"id":1898,"nodeType":"StructuredDocumentation","src":"5929:238:12","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":1934,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseUint","nameLocation":"6181:12:12","nodeType":"FunctionDefinition","parameters":{"id":1905,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1900,"mutability":"mutable","name":"input","nameLocation":"6217:5:12","nodeType":"VariableDeclaration","scope":1934,"src":"6203:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1899,"name":"string","nodeType":"ElementaryTypeName","src":"6203:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1902,"mutability":"mutable","name":"begin","nameLocation":"6240:5:12","nodeType":"VariableDeclaration","scope":1934,"src":"6232:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1901,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1904,"mutability":"mutable","name":"end","nameLocation":"6263:3:12","nodeType":"VariableDeclaration","scope":1934,"src":"6255:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1903,"name":"uint256","nodeType":"ElementaryTypeName","src":"6255:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6193:79:12"},"returnParameters":{"id":1910,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1907,"mutability":"mutable","name":"success","nameLocation":"6301:7:12","nodeType":"VariableDeclaration","scope":1934,"src":"6296:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1906,"name":"bool","nodeType":"ElementaryTypeName","src":"6296:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1909,"mutability":"mutable","name":"value","nameLocation":"6318:5:12","nodeType":"VariableDeclaration","scope":1934,"src":"6310:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1908,"name":"uint256","nodeType":"ElementaryTypeName","src":"6310:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6295:29:12"},"scope":2863,"src":"6172:297:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2003,"nodeType":"Block","src":"6872:347:12","statements":[{"assignments":[1949],"declarations":[{"constant":false,"id":1949,"mutability":"mutable","name":"buffer","nameLocation":"6895:6:12","nodeType":"VariableDeclaration","scope":2003,"src":"6882:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1948,"name":"bytes","nodeType":"ElementaryTypeName","src":"6882:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1954,"initialValue":{"arguments":[{"id":1952,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1937,"src":"6910:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":1951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6904:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":1950,"name":"bytes","nodeType":"ElementaryTypeName","src":"6904:5:12","typeDescriptions":{}}},"id":1953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6904:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"6882:34:12"},{"assignments":[1956],"declarations":[{"constant":false,"id":1956,"mutability":"mutable","name":"result","nameLocation":"6935:6:12","nodeType":"VariableDeclaration","scope":2003,"src":"6927:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1955,"name":"uint256","nodeType":"ElementaryTypeName","src":"6927:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1958,"initialValue":{"hexValue":"30","id":1957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6944:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"6927:18:12"},{"body":{"id":1997,"nodeType":"Block","src":"6993:189:12","statements":[{"assignments":[1970],"declarations":[{"constant":false,"id":1970,"mutability":"mutable","name":"chr","nameLocation":"7013:3:12","nodeType":"VariableDeclaration","scope":1997,"src":"7007:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":1969,"name":"uint8","nodeType":"ElementaryTypeName","src":"7007:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":1980,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":1975,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1949,"src":"7062:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1976,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"7070:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1974,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"7039:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7039:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7032:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":1972,"name":"bytes1","nodeType":"ElementaryTypeName","src":"7032:6:12","typeDescriptions":{}}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7032:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":1971,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"7019:12:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":1979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7019:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"7007:67:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":1983,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1981,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1970,"src":"7092:3:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"39","id":1982,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7098:1:12","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"9"},"src":"7092:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1988,"nodeType":"IfStatement","src":"7088:30:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":1984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7109:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":1985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7116:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":1986,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"7108:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":1947,"id":1987,"nodeType":"Return","src":"7101:17:12"}},{"expression":{"id":1991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1989,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"7132:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3130","id":1990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7142:2:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"7132:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1992,"nodeType":"ExpressionStatement","src":"7132:12:12"},{"expression":{"id":1995,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1993,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"7158:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":1994,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1970,"src":"7168:3:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"7158:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1996,"nodeType":"ExpressionStatement","src":"7158:13:12"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1963,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"6979:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1964,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1941,"src":"6983:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6979:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1998,"initializationExpression":{"assignments":[1960],"declarations":[{"constant":false,"id":1960,"mutability":"mutable","name":"i","nameLocation":"6968:1:12","nodeType":"VariableDeclaration","scope":1998,"src":"6960:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1959,"name":"uint256","nodeType":"ElementaryTypeName","src":"6960:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1962,"initialValue":{"id":1961,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1939,"src":"6972:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6960:17:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":1967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"6988:3:12","subExpression":{"id":1966,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1960,"src":"6990:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1968,"nodeType":"ExpressionStatement","src":"6988:3:12"},"nodeType":"ForStatement","src":"6955:227:12"},{"expression":{"components":[{"hexValue":"74727565","id":1999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7199:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2000,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1956,"src":"7205:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2001,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"7198:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":1947,"id":2002,"nodeType":"Return","src":"7191:21:12"}]},"documentation":{"id":1935,"nodeType":"StructuredDocumentation","src":"6475:224:12","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":2004,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseUintUncheckedBounds","nameLocation":"6713:28:12","nodeType":"FunctionDefinition","parameters":{"id":1942,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1937,"mutability":"mutable","name":"input","nameLocation":"6765:5:12","nodeType":"VariableDeclaration","scope":2004,"src":"6751:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":1936,"name":"string","nodeType":"ElementaryTypeName","src":"6751:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":1939,"mutability":"mutable","name":"begin","nameLocation":"6788:5:12","nodeType":"VariableDeclaration","scope":2004,"src":"6780:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1938,"name":"uint256","nodeType":"ElementaryTypeName","src":"6780:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":1941,"mutability":"mutable","name":"end","nameLocation":"6811:3:12","nodeType":"VariableDeclaration","scope":2004,"src":"6803:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1940,"name":"uint256","nodeType":"ElementaryTypeName","src":"6803:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6741:79:12"},"returnParameters":{"id":1947,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1944,"mutability":"mutable","name":"success","nameLocation":"6848:7:12","nodeType":"VariableDeclaration","scope":2004,"src":"6843:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1943,"name":"bool","nodeType":"ElementaryTypeName","src":"6843:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":1946,"mutability":"mutable","name":"value","nameLocation":"6865:5:12","nodeType":"VariableDeclaration","scope":2004,"src":"6857:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1945,"name":"uint256","nodeType":"ElementaryTypeName","src":"6857:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6842:29:12"},"scope":2863,"src":"6704:515:12","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2022,"nodeType":"Block","src":"7516:63:12","statements":[{"expression":{"arguments":[{"id":2013,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2007,"src":"7542:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2014,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7549:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2017,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2007,"src":"7558:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7552:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2015,"name":"bytes","nodeType":"ElementaryTypeName","src":"7552:5:12","typeDescriptions":{}}},"id":2018,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7552:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7565:6:12","memberName":"length","nodeType":"MemberAccess","src":"7552:19:12","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":2012,"name":"parseInt","nodeType":"Identifier","overloadedDeclarations":[2023,2054],"referencedDeclaration":2054,"src":"7533:8:12","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":2020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7533:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2011,"id":2021,"nodeType":"Return","src":"7526:46:12"}]},"documentation":{"id":2005,"nodeType":"StructuredDocumentation","src":"7225:216:12","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":2023,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7455:8:12","nodeType":"FunctionDefinition","parameters":{"id":2008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2007,"mutability":"mutable","name":"input","nameLocation":"7478:5:12","nodeType":"VariableDeclaration","scope":2023,"src":"7464:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2006,"name":"string","nodeType":"ElementaryTypeName","src":"7464:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7463:21:12"},"returnParameters":{"id":2011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2023,"src":"7508:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2009,"name":"int256","nodeType":"ElementaryTypeName","src":"7508:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7507:8:12"},"scope":2863,"src":"7446:133:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2053,"nodeType":"Block","src":"7984:151:12","statements":[{"assignments":[2036,2038],"declarations":[{"constant":false,"id":2036,"mutability":"mutable","name":"success","nameLocation":"8000:7:12","nodeType":"VariableDeclaration","scope":2053,"src":"7995:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2035,"name":"bool","nodeType":"ElementaryTypeName","src":"7995:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2038,"mutability":"mutable","name":"value","nameLocation":"8016:5:12","nodeType":"VariableDeclaration","scope":2053,"src":"8009:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2037,"name":"int256","nodeType":"ElementaryTypeName","src":"8009:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":2044,"initialValue":{"arguments":[{"id":2040,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2026,"src":"8037:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2041,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2028,"src":"8044:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2042,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2030,"src":"8051:3:12","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":2039,"name":"tryParseInt","nodeType":"Identifier","overloadedDeclarations":[2075,2117],"referencedDeclaration":2117,"src":"8025:11:12","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":2043,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8025:30:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"nodeType":"VariableDeclarationStatement","src":"7994:61:12"},{"condition":{"id":2046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8069:8:12","subExpression":{"id":2045,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2036,"src":"8070:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2050,"nodeType":"IfStatement","src":"8065:41:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2047,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"8086:18:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8086:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2049,"nodeType":"RevertStatement","src":"8079:27:12"}},{"expression":{"id":2051,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2038,"src":"8123:5:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":2034,"id":2052,"nodeType":"Return","src":"8116:12:12"}]},"documentation":{"id":2024,"nodeType":"StructuredDocumentation","src":"7585:296:12","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":2054,"implemented":true,"kind":"function","modifiers":[],"name":"parseInt","nameLocation":"7895:8:12","nodeType":"FunctionDefinition","parameters":{"id":2031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2026,"mutability":"mutable","name":"input","nameLocation":"7918:5:12","nodeType":"VariableDeclaration","scope":2054,"src":"7904:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2025,"name":"string","nodeType":"ElementaryTypeName","src":"7904:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2028,"mutability":"mutable","name":"begin","nameLocation":"7933:5:12","nodeType":"VariableDeclaration","scope":2054,"src":"7925:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2027,"name":"uint256","nodeType":"ElementaryTypeName","src":"7925:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2030,"mutability":"mutable","name":"end","nameLocation":"7948:3:12","nodeType":"VariableDeclaration","scope":2054,"src":"7940:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2029,"name":"uint256","nodeType":"ElementaryTypeName","src":"7940:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7903:49:12"},"returnParameters":{"id":2034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2054,"src":"7976:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2032,"name":"int256","nodeType":"ElementaryTypeName","src":"7976:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"7975:8:12"},"scope":2863,"src":"7886:249:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2074,"nodeType":"Block","src":"8526:82:12","statements":[{"expression":{"arguments":[{"id":2065,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"8571:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8578:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2069,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2057,"src":"8587:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8581:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2067,"name":"bytes","nodeType":"ElementaryTypeName","src":"8581:5:12","typeDescriptions":{}}},"id":2070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8581:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8594:6:12","memberName":"length","nodeType":"MemberAccess","src":"8581:19:12","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":2064,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"8543:27:12","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":2072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8543:58:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":2063,"id":2073,"nodeType":"Return","src":"8536:65:12"}]},"documentation":{"id":2055,"nodeType":"StructuredDocumentation","src":"8141:287:12","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":2075,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8442:11:12","nodeType":"FunctionDefinition","parameters":{"id":2058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2057,"mutability":"mutable","name":"input","nameLocation":"8468:5:12","nodeType":"VariableDeclaration","scope":2075,"src":"8454:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2056,"name":"string","nodeType":"ElementaryTypeName","src":"8454:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8453:21:12"},"returnParameters":{"id":2063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2060,"mutability":"mutable","name":"success","nameLocation":"8503:7:12","nodeType":"VariableDeclaration","scope":2075,"src":"8498:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2059,"name":"bool","nodeType":"ElementaryTypeName","src":"8498:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2062,"mutability":"mutable","name":"value","nameLocation":"8519:5:12","nodeType":"VariableDeclaration","scope":2075,"src":"8512:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2061,"name":"int256","nodeType":"ElementaryTypeName","src":"8512:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"8497:28:12"},"scope":2863,"src":"8433:175:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"constant":true,"id":2080,"mutability":"constant","name":"ABS_MIN_INT256","nameLocation":"8639:14:12","nodeType":"VariableDeclaration","scope":2863,"src":"8614:50:12","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2076,"name":"uint256","nodeType":"ElementaryTypeName","src":"8614:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"commonType":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"},"id":2079,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8656:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"323535","id":2078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8661:3:12","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"8656:8:12","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819968_by_1","typeString":"int_const 5789...(69 digits omitted)...9968"}},"visibility":"private"},{"body":{"id":2116,"nodeType":"Block","src":"9130:143:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2094,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"9144:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2097,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"9156:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2096,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9150:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2095,"name":"bytes","nodeType":"ElementaryTypeName","src":"9150:5:12","typeDescriptions":{}}},"id":2098,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9150:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2099,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9163:6:12","memberName":"length","nodeType":"MemberAccess","src":"9150:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9144:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2101,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"9173:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2102,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"9181:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9173:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9144:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2109,"nodeType":"IfStatement","src":"9140:63:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2105,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"9194:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2106,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9201:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2107,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"9193:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2093,"id":2108,"nodeType":"Return","src":"9186:17:12"}},{"expression":{"arguments":[{"id":2111,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2083,"src":"9248:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2112,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2085,"src":"9255:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2113,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2087,"src":"9262:3:12","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":2110,"name":"_tryParseIntUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2238,"src":"9220:27:12","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":2114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9220:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":2093,"id":2115,"nodeType":"Return","src":"9213:53:12"}]},"documentation":{"id":2081,"nodeType":"StructuredDocumentation","src":"8671:303:12","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":2117,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseInt","nameLocation":"8988:11:12","nodeType":"FunctionDefinition","parameters":{"id":2088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2083,"mutability":"mutable","name":"input","nameLocation":"9023:5:12","nodeType":"VariableDeclaration","scope":2117,"src":"9009:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2082,"name":"string","nodeType":"ElementaryTypeName","src":"9009:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2085,"mutability":"mutable","name":"begin","nameLocation":"9046:5:12","nodeType":"VariableDeclaration","scope":2117,"src":"9038:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2084,"name":"uint256","nodeType":"ElementaryTypeName","src":"9038:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2087,"mutability":"mutable","name":"end","nameLocation":"9069:3:12","nodeType":"VariableDeclaration","scope":2117,"src":"9061:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2086,"name":"uint256","nodeType":"ElementaryTypeName","src":"9061:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8999:79:12"},"returnParameters":{"id":2093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2090,"mutability":"mutable","name":"success","nameLocation":"9107:7:12","nodeType":"VariableDeclaration","scope":2117,"src":"9102:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2089,"name":"bool","nodeType":"ElementaryTypeName","src":"9102:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2092,"mutability":"mutable","name":"value","nameLocation":"9123:5:12","nodeType":"VariableDeclaration","scope":2117,"src":"9116:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2091,"name":"int256","nodeType":"ElementaryTypeName","src":"9116:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9101:28:12"},"scope":2863,"src":"8979:294:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2237,"nodeType":"Block","src":"9673:812:12","statements":[{"assignments":[2132],"declarations":[{"constant":false,"id":2132,"mutability":"mutable","name":"buffer","nameLocation":"9696:6:12","nodeType":"VariableDeclaration","scope":2237,"src":"9683:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2131,"name":"bytes","nodeType":"ElementaryTypeName","src":"9683:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2137,"initialValue":{"arguments":[{"id":2135,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"9711:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9705:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2133,"name":"bytes","nodeType":"ElementaryTypeName","src":"9705:5:12","typeDescriptions":{}}},"id":2136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9705:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"9683:34:12"},{"assignments":[2139],"declarations":[{"constant":false,"id":2139,"mutability":"mutable","name":"sign","nameLocation":"9781:4:12","nodeType":"VariableDeclaration","scope":2237,"src":"9774:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2138,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9774:6:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":2155,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2140,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"9788:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2141,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"9797:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9788:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"arguments":[{"id":2150,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2132,"src":"9845:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2151,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"9853:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2149,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"9822:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9822:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9815:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2147,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9815:6:12","typeDescriptions":{}}},"id":2153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9815:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9788:72:12","trueExpression":{"arguments":[{"hexValue":"30","id":2145,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9810:1:12","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":2144,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9803:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2143,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9803:6:12","typeDescriptions":{}}},"id":2146,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9803:9:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"9774:86:12"},{"assignments":[2157],"declarations":[{"constant":false,"id":2157,"mutability":"mutable","name":"positiveSign","nameLocation":"9946:12:12","nodeType":"VariableDeclaration","scope":2237,"src":"9941:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2156,"name":"bool","nodeType":"ElementaryTypeName","src":"9941:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2164,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2163,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2158,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"9961:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2b","id":2161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9976:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""},"value":"+"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_728b8dbbe730d9acd55e30e768e6a28a04bea0c61b88108287c2c87d79c98bb8","typeString":"literal_string \"+\""}],"id":2160,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9969:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2159,"name":"bytes1","nodeType":"ElementaryTypeName","src":"9969:6:12","typeDescriptions":{}}},"id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9969:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"9961:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9941:39:12"},{"assignments":[2166],"declarations":[{"constant":false,"id":2166,"mutability":"mutable","name":"negativeSign","nameLocation":"9995:12:12","nodeType":"VariableDeclaration","scope":2237,"src":"9990:17:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2165,"name":"bool","nodeType":"ElementaryTypeName","src":"9990:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2173,"initialValue":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2167,"name":"sign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2139,"src":"10010:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"2d","id":2170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"10025:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""},"value":"-"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d3b8281179950f98149eefdb158d0e1acb56f56e8e343aa9fefafa7e36959561","typeString":"literal_string \"-\""}],"id":2169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10018:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2168,"name":"bytes1","nodeType":"ElementaryTypeName","src":"10018:6:12","typeDescriptions":{}}},"id":2171,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10018:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"10010:19:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"9990:39:12"},{"assignments":[2175],"declarations":[{"constant":false,"id":2175,"mutability":"mutable","name":"offset","nameLocation":"10047:6:12","nodeType":"VariableDeclaration","scope":2237,"src":"10039:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2174,"name":"uint256","nodeType":"ElementaryTypeName","src":"10039:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2182,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2178,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2176,"name":"positiveSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2157,"src":"10057:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"id":2177,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"10073:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10057:28:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2179,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10056:30:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10087:6:12","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"10056:37:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":2181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10056:39:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10039:56:12"},{"assignments":[2184,2186],"declarations":[{"constant":false,"id":2184,"mutability":"mutable","name":"absSuccess","nameLocation":"10112:10:12","nodeType":"VariableDeclaration","scope":2237,"src":"10107:15:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2183,"name":"bool","nodeType":"ElementaryTypeName","src":"10107:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2186,"mutability":"mutable","name":"absValue","nameLocation":"10132:8:12","nodeType":"VariableDeclaration","scope":2237,"src":"10124:16:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2185,"name":"uint256","nodeType":"ElementaryTypeName","src":"10124:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2194,"initialValue":{"arguments":[{"id":2188,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2120,"src":"10157:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2191,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2189,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2122,"src":"10164:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2190,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2175,"src":"10172:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10164:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2192,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2124,"src":"10180:3:12","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":2187,"name":"tryParseUint","nodeType":"Identifier","overloadedDeclarations":[1897,1934],"referencedDeclaration":1934,"src":"10144:12:12","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":2193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10144:40:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"10106:78:12"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2195,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10199:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2196,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"10213:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2197,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"10224:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10213:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10199:39:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2215,"name":"absSuccess","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"10341:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":2216,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"10355:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10341:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2218,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"10371:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2219,"name":"ABS_MIN_INT256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2080,"src":"10383:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10371:26:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"10341:56:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2231,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10469:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2232,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10476:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2233,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10468:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2130,"id":2234,"nodeType":"Return","src":"10461:17:12"},"id":2235,"nodeType":"IfStatement","src":"10337:141:12","trueBody":{"id":2230,"nodeType":"Block","src":"10399:56:12","statements":[{"expression":{"components":[{"hexValue":"74727565","id":2222,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10421:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"expression":{"arguments":[{"id":2225,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10432:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2224,"name":"int256","nodeType":"ElementaryTypeName","src":"10432:6:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":2223,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10427:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2226,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10427:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10440:3:12","memberName":"min","nodeType":"MemberAccess","src":"10427:16:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2228,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"10420:24:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":2130,"id":2229,"nodeType":"Return","src":"10413:31:12"}]}},"id":2236,"nodeType":"IfStatement","src":"10195:283:12","trueBody":{"id":2214,"nodeType":"Block","src":"10240:91:12","statements":[{"expression":{"components":[{"hexValue":"74727565","id":2200,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"10262:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"condition":{"id":2201,"name":"negativeSign","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2166,"src":"10268:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"arguments":[{"id":2209,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"10310:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10303:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2207,"name":"int256","nodeType":"ElementaryTypeName","src":"10303:6:12","typeDescriptions":{}}},"id":2210,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10303:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"id":2211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"10268:51:12","trueExpression":{"id":2206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"10283:17:12","subExpression":{"arguments":[{"id":2204,"name":"absValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2186,"src":"10291:8:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10284:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":2202,"name":"int256","nodeType":"ElementaryTypeName","src":"10284:6:12","typeDescriptions":{}}},"id":2205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10284:16:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":2212,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"10261:59:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_int256_$","typeString":"tuple(bool,int256)"}},"functionReturnParameters":2130,"id":2213,"nodeType":"Return","src":"10254:66:12"}]}}]},"documentation":{"id":2118,"nodeType":"StructuredDocumentation","src":"9279:223:12","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":2238,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseIntUncheckedBounds","nameLocation":"9516:27:12","nodeType":"FunctionDefinition","parameters":{"id":2125,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2120,"mutability":"mutable","name":"input","nameLocation":"9567:5:12","nodeType":"VariableDeclaration","scope":2238,"src":"9553:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2119,"name":"string","nodeType":"ElementaryTypeName","src":"9553:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2122,"mutability":"mutable","name":"begin","nameLocation":"9590:5:12","nodeType":"VariableDeclaration","scope":2238,"src":"9582:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2121,"name":"uint256","nodeType":"ElementaryTypeName","src":"9582:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2124,"mutability":"mutable","name":"end","nameLocation":"9613:3:12","nodeType":"VariableDeclaration","scope":2238,"src":"9605:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2123,"name":"uint256","nodeType":"ElementaryTypeName","src":"9605:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9543:79:12"},"returnParameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2127,"mutability":"mutable","name":"success","nameLocation":"9650:7:12","nodeType":"VariableDeclaration","scope":2238,"src":"9645:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2126,"name":"bool","nodeType":"ElementaryTypeName","src":"9645:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2129,"mutability":"mutable","name":"value","nameLocation":"9666:5:12","nodeType":"VariableDeclaration","scope":2238,"src":"9659:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":2128,"name":"int256","nodeType":"ElementaryTypeName","src":"9659:6:12","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"9644:28:12"},"scope":2863,"src":"9507:978:12","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2256,"nodeType":"Block","src":"10830:67:12","statements":[{"expression":{"arguments":[{"id":2247,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"10860:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2248,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10867:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2251,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2241,"src":"10876:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2250,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10870:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2249,"name":"bytes","nodeType":"ElementaryTypeName","src":"10870:5:12","typeDescriptions":{}}},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10870:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2253,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10883:6:12","memberName":"length","nodeType":"MemberAccess","src":"10870:19:12","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":2246,"name":"parseHexUint","nodeType":"Identifier","overloadedDeclarations":[2257,2288],"referencedDeclaration":2288,"src":"10847:12:12","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":2254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10847:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2245,"id":2255,"nodeType":"Return","src":"10840:50:12"}]},"documentation":{"id":2239,"nodeType":"StructuredDocumentation","src":"10491:259:12","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":2257,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"10764:12:12","nodeType":"FunctionDefinition","parameters":{"id":2242,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2241,"mutability":"mutable","name":"input","nameLocation":"10791:5:12","nodeType":"VariableDeclaration","scope":2257,"src":"10777:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2240,"name":"string","nodeType":"ElementaryTypeName","src":"10777:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"10776:21:12"},"returnParameters":{"id":2245,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2244,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2257,"src":"10821:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2243,"name":"uint256","nodeType":"ElementaryTypeName","src":"10821:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10820:9:12"},"scope":2863,"src":"10755:142:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2287,"nodeType":"Block","src":"11318:156:12","statements":[{"assignments":[2270,2272],"declarations":[{"constant":false,"id":2270,"mutability":"mutable","name":"success","nameLocation":"11334:7:12","nodeType":"VariableDeclaration","scope":2287,"src":"11329:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2269,"name":"bool","nodeType":"ElementaryTypeName","src":"11329:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2272,"mutability":"mutable","name":"value","nameLocation":"11351:5:12","nodeType":"VariableDeclaration","scope":2287,"src":"11343:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2271,"name":"uint256","nodeType":"ElementaryTypeName","src":"11343:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2278,"initialValue":{"arguments":[{"id":2274,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2260,"src":"11376:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2275,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2262,"src":"11383:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2276,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2264,"src":"11390:3:12","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":"tryParseHexUint","nodeType":"Identifier","overloadedDeclarations":[2309,2346],"referencedDeclaration":2346,"src":"11360:15:12","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":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11360:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11328:66:12"},{"condition":{"id":2280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"11408:8:12","subExpression":{"id":2279,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2270,"src":"11409:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2284,"nodeType":"IfStatement","src":"11404:41:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2281,"name":"StringsInvalidChar","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1524,"src":"11425:18:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11425:20:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2283,"nodeType":"RevertStatement","src":"11418:27:12"}},{"expression":{"id":2285,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"11462:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":2268,"id":2286,"nodeType":"Return","src":"11455:12:12"}]},"documentation":{"id":2258,"nodeType":"StructuredDocumentation","src":"10903:307:12","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":2288,"implemented":true,"kind":"function","modifiers":[],"name":"parseHexUint","nameLocation":"11224:12:12","nodeType":"FunctionDefinition","parameters":{"id":2265,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2260,"mutability":"mutable","name":"input","nameLocation":"11251:5:12","nodeType":"VariableDeclaration","scope":2288,"src":"11237:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2259,"name":"string","nodeType":"ElementaryTypeName","src":"11237:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2262,"mutability":"mutable","name":"begin","nameLocation":"11266:5:12","nodeType":"VariableDeclaration","scope":2288,"src":"11258:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2261,"name":"uint256","nodeType":"ElementaryTypeName","src":"11258:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2264,"mutability":"mutable","name":"end","nameLocation":"11281:3:12","nodeType":"VariableDeclaration","scope":2288,"src":"11273:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2263,"name":"uint256","nodeType":"ElementaryTypeName","src":"11273:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11236:49:12"},"returnParameters":{"id":2268,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2267,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2288,"src":"11309:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2266,"name":"uint256","nodeType":"ElementaryTypeName","src":"11309:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11308:9:12"},"scope":2863,"src":"11215:259:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2308,"nodeType":"Block","src":"11801:86:12","statements":[{"expression":{"arguments":[{"id":2299,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2291,"src":"11850:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11857:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2303,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2291,"src":"11866:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11860:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2301,"name":"bytes","nodeType":"ElementaryTypeName","src":"11860:5:12","typeDescriptions":{}}},"id":2304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11860:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11873:6:12","memberName":"length","nodeType":"MemberAccess","src":"11860:19:12","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":2298,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"11818:31:12","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":2306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11818:62:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2297,"id":2307,"nodeType":"Return","src":"11811:69:12"}]},"documentation":{"id":2289,"nodeType":"StructuredDocumentation","src":"11480:218:12","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":2309,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"11712:15:12","nodeType":"FunctionDefinition","parameters":{"id":2292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2291,"mutability":"mutable","name":"input","nameLocation":"11742:5:12","nodeType":"VariableDeclaration","scope":2309,"src":"11728:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2290,"name":"string","nodeType":"ElementaryTypeName","src":"11728:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"11727:21:12"},"returnParameters":{"id":2297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2294,"mutability":"mutable","name":"success","nameLocation":"11777:7:12","nodeType":"VariableDeclaration","scope":2309,"src":"11772:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2293,"name":"bool","nodeType":"ElementaryTypeName","src":"11772:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2296,"mutability":"mutable","name":"value","nameLocation":"11794:5:12","nodeType":"VariableDeclaration","scope":2309,"src":"11786:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2295,"name":"uint256","nodeType":"ElementaryTypeName","src":"11786:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11771:29:12"},"scope":2863,"src":"11703:184:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2345,"nodeType":"Block","src":"12295:147:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2323,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"12309:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2326,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"12321:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12315:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2324,"name":"bytes","nodeType":"ElementaryTypeName","src":"12315:5:12","typeDescriptions":{}}},"id":2327,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12315:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2328,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12328:6:12","memberName":"length","nodeType":"MemberAccess","src":"12315:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12309:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2332,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2330,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2314,"src":"12338:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2331,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"12346:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12338:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12309:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2338,"nodeType":"IfStatement","src":"12305:63:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2334,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12359:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12366:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2336,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"12358:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2322,"id":2337,"nodeType":"Return","src":"12351:17:12"}},{"expression":{"arguments":[{"id":2340,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2312,"src":"12417:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2341,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2314,"src":"12424:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2342,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2316,"src":"12431:3:12","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":2339,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"12385:31:12","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":2343,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12385:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2322,"id":2344,"nodeType":"Return","src":"12378:57:12"}]},"documentation":{"id":2310,"nodeType":"StructuredDocumentation","src":"11893:241:12","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":2346,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseHexUint","nameLocation":"12148:15:12","nodeType":"FunctionDefinition","parameters":{"id":2317,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2312,"mutability":"mutable","name":"input","nameLocation":"12187:5:12","nodeType":"VariableDeclaration","scope":2346,"src":"12173:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2311,"name":"string","nodeType":"ElementaryTypeName","src":"12173:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2314,"mutability":"mutable","name":"begin","nameLocation":"12210:5:12","nodeType":"VariableDeclaration","scope":2346,"src":"12202:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2313,"name":"uint256","nodeType":"ElementaryTypeName","src":"12202:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2316,"mutability":"mutable","name":"end","nameLocation":"12233:3:12","nodeType":"VariableDeclaration","scope":2346,"src":"12225:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2315,"name":"uint256","nodeType":"ElementaryTypeName","src":"12225:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12163:79:12"},"returnParameters":{"id":2322,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2319,"mutability":"mutable","name":"success","nameLocation":"12271:7:12","nodeType":"VariableDeclaration","scope":2346,"src":"12266:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2318,"name":"bool","nodeType":"ElementaryTypeName","src":"12266:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2321,"mutability":"mutable","name":"value","nameLocation":"12288:5:12","nodeType":"VariableDeclaration","scope":2346,"src":"12280:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2320,"name":"uint256","nodeType":"ElementaryTypeName","src":"12280:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12265:29:12"},"scope":2863,"src":"12139:303:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2448,"nodeType":"Block","src":"12851:881:12","statements":[{"assignments":[2361],"declarations":[{"constant":false,"id":2361,"mutability":"mutable","name":"buffer","nameLocation":"12874:6:12","nodeType":"VariableDeclaration","scope":2448,"src":"12861:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2360,"name":"bytes","nodeType":"ElementaryTypeName","src":"12861:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2366,"initialValue":{"arguments":[{"id":2364,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2349,"src":"12889:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12883:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2362,"name":"bytes","nodeType":"ElementaryTypeName","src":"12883:5:12","typeDescriptions":{}}},"id":2365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12883:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"12861:34:12"},{"assignments":[2368],"declarations":[{"constant":false,"id":2368,"mutability":"mutable","name":"hasPrefix","nameLocation":"12948:9:12","nodeType":"VariableDeclaration","scope":2448,"src":"12943:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2367,"name":"bool","nodeType":"ElementaryTypeName","src":"12943:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2388,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2387,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2373,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2369,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"12961:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2372,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2370,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"12967:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2371,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12975:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12967:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12961:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2374,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"12960:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2378,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2361,"src":"13011:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2379,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"13019:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2377,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"12988:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12988:37:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2376,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12981:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2375,"name":"bytes2","nodeType":"ElementaryTypeName","src":"12981:6:12","typeDescriptions":{}}},"id":2381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12981:45:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":2384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13037:4:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":2383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13030:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2382,"name":"bytes2","nodeType":"ElementaryTypeName","src":"13030:6:12","typeDescriptions":{}}},"id":2385,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13030:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"12981:61:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12960:82:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12943:99:12"},{"assignments":[2390],"declarations":[{"constant":false,"id":2390,"mutability":"mutable","name":"offset","nameLocation":"13131:6:12","nodeType":"VariableDeclaration","scope":2448,"src":"13123:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2389,"name":"uint256","nodeType":"ElementaryTypeName","src":"13123:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2396,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2395,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2391,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2368,"src":"13140:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13150:6:12","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"13140:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13140:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":2394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13161:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"13140:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13123:39:12"},{"assignments":[2398],"declarations":[{"constant":false,"id":2398,"mutability":"mutable","name":"result","nameLocation":"13181:6:12","nodeType":"VariableDeclaration","scope":2448,"src":"13173:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2397,"name":"uint256","nodeType":"ElementaryTypeName","src":"13173:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2400,"initialValue":{"hexValue":"30","id":2399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13190:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13173:18:12"},{"body":{"id":2442,"nodeType":"Block","src":"13248:447:12","statements":[{"assignments":[2414],"declarations":[{"constant":false,"id":2414,"mutability":"mutable","name":"chr","nameLocation":"13268:3:12","nodeType":"VariableDeclaration","scope":2442,"src":"13262:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2413,"name":"uint8","nodeType":"ElementaryTypeName","src":"13262:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2424,"initialValue":{"arguments":[{"arguments":[{"arguments":[{"id":2419,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2361,"src":"13317:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2420,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"13325:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2418,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"13294:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13294:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2417,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13287:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2416,"name":"bytes1","nodeType":"ElementaryTypeName","src":"13287:6:12","typeDescriptions":{}}},"id":2422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13287:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2415,"name":"_tryParseChr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2684,"src":"13274:12:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes1_$returns$_t_uint8_$","typeString":"function (bytes1) pure returns (uint8)"}},"id":2423,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13274:55:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"13262:67:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2425,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"13347:3:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3135","id":2426,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13353:2:12","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"15"},"src":"13347:8:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2432,"nodeType":"IfStatement","src":"13343:31:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2428,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13365:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":2429,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13372:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":2430,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"13364:10:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":2359,"id":2431,"nodeType":"Return","src":"13357:17:12"}},{"expression":{"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2433,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"13388:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"hexValue":"3136","id":2434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13398:2:12","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"13388:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2436,"nodeType":"ExpressionStatement","src":"13388:12:12"},{"id":2441,"nodeType":"UncheckedBlock","src":"13414:271:12","statements":[{"expression":{"id":2439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2437,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"13657:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":2438,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2414,"src":"13667:3:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"13657:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2440,"nodeType":"ExpressionStatement","src":"13657:13:12"}]}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2407,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"13234:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":2408,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"13238:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13234:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2443,"initializationExpression":{"assignments":[2402],"declarations":[{"constant":false,"id":2402,"mutability":"mutable","name":"i","nameLocation":"13214:1:12","nodeType":"VariableDeclaration","scope":2443,"src":"13206:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2401,"name":"uint256","nodeType":"ElementaryTypeName","src":"13206:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2406,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2403,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2351,"src":"13218:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":2404,"name":"offset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2390,"src":"13226:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13218:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13206:26:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"13243:3:12","subExpression":{"id":2410,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2402,"src":"13245:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2412,"nodeType":"ExpressionStatement","src":"13243:3:12"},"nodeType":"ForStatement","src":"13201:494:12"},{"expression":{"components":[{"hexValue":"74727565","id":2444,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13712:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},{"id":2445,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2398,"src":"13718:6:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2446,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13711:14:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"functionReturnParameters":2359,"id":2447,"nodeType":"Return","src":"13704:21:12"}]},"documentation":{"id":2347,"nodeType":"StructuredDocumentation","src":"12448:227:12","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":2449,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseHexUintUncheckedBounds","nameLocation":"12689:31:12","nodeType":"FunctionDefinition","parameters":{"id":2354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2349,"mutability":"mutable","name":"input","nameLocation":"12744:5:12","nodeType":"VariableDeclaration","scope":2449,"src":"12730:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2348,"name":"string","nodeType":"ElementaryTypeName","src":"12730:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2351,"mutability":"mutable","name":"begin","nameLocation":"12767:5:12","nodeType":"VariableDeclaration","scope":2449,"src":"12759:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2350,"name":"uint256","nodeType":"ElementaryTypeName","src":"12759:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2353,"mutability":"mutable","name":"end","nameLocation":"12790:3:12","nodeType":"VariableDeclaration","scope":2449,"src":"12782:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2352,"name":"uint256","nodeType":"ElementaryTypeName","src":"12782:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12720:79:12"},"returnParameters":{"id":2359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2356,"mutability":"mutable","name":"success","nameLocation":"12827:7:12","nodeType":"VariableDeclaration","scope":2449,"src":"12822:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2355,"name":"bool","nodeType":"ElementaryTypeName","src":"12822:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2358,"mutability":"mutable","name":"value","nameLocation":"12844:5:12","nodeType":"VariableDeclaration","scope":2449,"src":"12836:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2357,"name":"uint256","nodeType":"ElementaryTypeName","src":"12836:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12821:29:12"},"scope":2863,"src":"12680:1052:12","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2467,"nodeType":"Block","src":"14030:67:12","statements":[{"expression":{"arguments":[{"id":2458,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2452,"src":"14060:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14067:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2462,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2452,"src":"14076:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2461,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14070:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2460,"name":"bytes","nodeType":"ElementaryTypeName","src":"14070:5:12","typeDescriptions":{}}},"id":2463,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14070:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14083:6:12","memberName":"length","nodeType":"MemberAccess","src":"14070:19:12","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":2457,"name":"parseAddress","nodeType":"Identifier","overloadedDeclarations":[2468,2499],"referencedDeclaration":2499,"src":"14047:12:12","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":2465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14047:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2456,"id":2466,"nodeType":"Return","src":"14040:50:12"}]},"documentation":{"id":2450,"nodeType":"StructuredDocumentation","src":"13738:212:12","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":2468,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"13964:12:12","nodeType":"FunctionDefinition","parameters":{"id":2453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2452,"mutability":"mutable","name":"input","nameLocation":"13991:5:12","nodeType":"VariableDeclaration","scope":2468,"src":"13977:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2451,"name":"string","nodeType":"ElementaryTypeName","src":"13977:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"13976:21:12"},"returnParameters":{"id":2456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2455,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2468,"src":"14021:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2454,"name":"address","nodeType":"ElementaryTypeName","src":"14021:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14020:9:12"},"scope":2863,"src":"13955:142:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2498,"nodeType":"Block","src":"14470:165:12","statements":[{"assignments":[2481,2483],"declarations":[{"constant":false,"id":2481,"mutability":"mutable","name":"success","nameLocation":"14486:7:12","nodeType":"VariableDeclaration","scope":2498,"src":"14481:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2480,"name":"bool","nodeType":"ElementaryTypeName","src":"14481:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2483,"mutability":"mutable","name":"value","nameLocation":"14503:5:12","nodeType":"VariableDeclaration","scope":2498,"src":"14495:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2482,"name":"address","nodeType":"ElementaryTypeName","src":"14495:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2489,"initialValue":{"arguments":[{"id":2485,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2471,"src":"14528:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2486,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2473,"src":"14535:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2487,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2475,"src":"14542:3:12","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":2484,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[2520,2624],"referencedDeclaration":2624,"src":"14512:15:12","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":2488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14512:34:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"nodeType":"VariableDeclarationStatement","src":"14480:66:12"},{"condition":{"id":2491,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14560:8:12","subExpression":{"id":2490,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2481,"src":"14561:7:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2495,"nodeType":"IfStatement","src":"14556:50:12","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":2492,"name":"StringsInvalidAddressFormat","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1527,"src":"14577:27:12","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":2493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14577:29:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":2494,"nodeType":"RevertStatement","src":"14570:36:12"}},{"expression":{"id":2496,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2483,"src":"14623:5:12","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2479,"id":2497,"nodeType":"Return","src":"14616:12:12"}]},"documentation":{"id":2469,"nodeType":"StructuredDocumentation","src":"14103:259:12","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":2499,"implemented":true,"kind":"function","modifiers":[],"name":"parseAddress","nameLocation":"14376:12:12","nodeType":"FunctionDefinition","parameters":{"id":2476,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2471,"mutability":"mutable","name":"input","nameLocation":"14403:5:12","nodeType":"VariableDeclaration","scope":2499,"src":"14389:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2470,"name":"string","nodeType":"ElementaryTypeName","src":"14389:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2473,"mutability":"mutable","name":"begin","nameLocation":"14418:5:12","nodeType":"VariableDeclaration","scope":2499,"src":"14410:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2472,"name":"uint256","nodeType":"ElementaryTypeName","src":"14410:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2475,"mutability":"mutable","name":"end","nameLocation":"14433:3:12","nodeType":"VariableDeclaration","scope":2499,"src":"14425:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2474,"name":"uint256","nodeType":"ElementaryTypeName","src":"14425:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14388:49:12"},"returnParameters":{"id":2479,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2478,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2499,"src":"14461:7:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"14461:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14460:9:12"},"scope":2863,"src":"14367:268:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2519,"nodeType":"Block","src":"14942:70:12","statements":[{"expression":{"arguments":[{"id":2510,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2502,"src":"14975:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"hexValue":"30","id":2511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14982:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"expression":{"arguments":[{"id":2514,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2502,"src":"14991:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2513,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14985:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2512,"name":"bytes","nodeType":"ElementaryTypeName","src":"14985:5:12","typeDescriptions":{}}},"id":2515,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14985:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2516,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14998:6:12","memberName":"length","nodeType":"MemberAccess","src":"14985:19:12","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":2509,"name":"tryParseAddress","nodeType":"Identifier","overloadedDeclarations":[2520,2624],"referencedDeclaration":2624,"src":"14959:15:12","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":2517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14959:46:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2508,"id":2518,"nodeType":"Return","src":"14952:53:12"}]},"documentation":{"id":2500,"nodeType":"StructuredDocumentation","src":"14641:198:12","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":2520,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"14853:15:12","nodeType":"FunctionDefinition","parameters":{"id":2503,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2502,"mutability":"mutable","name":"input","nameLocation":"14883:5:12","nodeType":"VariableDeclaration","scope":2520,"src":"14869:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2501,"name":"string","nodeType":"ElementaryTypeName","src":"14869:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"14868:21:12"},"returnParameters":{"id":2508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2505,"mutability":"mutable","name":"success","nameLocation":"14918:7:12","nodeType":"VariableDeclaration","scope":2520,"src":"14913:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2504,"name":"bool","nodeType":"ElementaryTypeName","src":"14913:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2507,"mutability":"mutable","name":"value","nameLocation":"14935:5:12","nodeType":"VariableDeclaration","scope":2520,"src":"14927:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2506,"name":"address","nodeType":"ElementaryTypeName","src":"14927:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14912:29:12"},"scope":2863,"src":"14844:168:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2623,"nodeType":"Block","src":"15405:733:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2534,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"15419:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":2537,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"15431:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15425:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2535,"name":"bytes","nodeType":"ElementaryTypeName","src":"15425:5:12","typeDescriptions":{}}},"id":2538,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15425:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15438:6:12","memberName":"length","nodeType":"MemberAccess","src":"15425:19:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15419:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2541,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"15448:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":2542,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"15456:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15448:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15419:40:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2552,"nodeType":"IfStatement","src":"15415:72:12","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":2545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15469:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15484:1:12","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":2547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15476:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2546,"name":"address","nodeType":"ElementaryTypeName","src":"15476:7:12","typeDescriptions":{}}},"id":2549,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15476:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2550,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"15468:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2533,"id":2551,"nodeType":"Return","src":"15461:26:12"}},{"assignments":[2554],"declarations":[{"constant":false,"id":2554,"mutability":"mutable","name":"hasPrefix","nameLocation":"15503:9:12","nodeType":"VariableDeclaration","scope":2623,"src":"15498:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2553,"name":"bool","nodeType":"ElementaryTypeName","src":"15498:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":2577,"initialValue":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2576,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2555,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"15516:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2558,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2556,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"15522:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":2557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15530:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15522:9:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15516:15:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2560,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"15515:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_bytes2","typeString":"bytes2"},"id":2575,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":2566,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"15572:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2565,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15566:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2564,"name":"bytes","nodeType":"ElementaryTypeName","src":"15566:5:12","typeDescriptions":{}}},"id":2567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15566:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2568,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"15580:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2563,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"15543:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15543:43:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15536:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2561,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15536:6:12","typeDescriptions":{}}},"id":2570,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15536:51:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"3078","id":2573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15598:4:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""},"value":"0x"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_39bef1777deb3dfb14f64b9f81ced092c501fee72f90e93d03bb95ee89df9837","typeString":"literal_string \"0x\""}],"id":2572,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15591:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes2_$","typeString":"type(bytes2)"},"typeName":{"id":2571,"name":"bytes2","nodeType":"ElementaryTypeName","src":"15591:6:12","typeDescriptions":{}}},"id":2574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15591:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes2","typeString":"bytes2"}},"src":"15536:67:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"15515:88:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"15498:105:12"},{"assignments":[2579],"declarations":[{"constant":false,"id":2579,"mutability":"mutable","name":"expectedLength","nameLocation":"15692:14:12","nodeType":"VariableDeclaration","scope":2623,"src":"15684:22:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2578,"name":"uint256","nodeType":"ElementaryTypeName","src":"15684:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2587,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3430","id":2580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15709:2:12","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":2581,"name":"hasPrefix","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2554,"src":"15714:9:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15724:6:12","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"15714:16:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$attached_to$_t_bool_$","typeString":"function (bool) pure returns (uint256)"}},"id":2583,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15714:18:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"hexValue":"32","id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15735:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15714:22:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15709:27:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15684:52:12"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2588,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"15801:3:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2589,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"15807:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15801:11:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":2591,"name":"expectedLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2579,"src":"15816:14:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15801:29:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2621,"nodeType":"Block","src":"16081:51:12","statements":[{"expression":{"components":[{"hexValue":"66616c7365","id":2614,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"16103:5:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":2617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16118:1:12","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":2616,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16110:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2615,"name":"address","nodeType":"ElementaryTypeName","src":"16110:7:12","typeDescriptions":{}}},"id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2619,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"16102:19:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2533,"id":2620,"nodeType":"Return","src":"16095:26:12"}]},"id":2622,"nodeType":"IfStatement","src":"15797:335:12","trueBody":{"id":2613,"nodeType":"Block","src":"15832:243:12","statements":[{"assignments":[2594,2596],"declarations":[{"constant":false,"id":2594,"mutability":"mutable","name":"s","nameLocation":"15953:1:12","nodeType":"VariableDeclaration","scope":2613,"src":"15948:6:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2593,"name":"bool","nodeType":"ElementaryTypeName","src":"15948:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2596,"mutability":"mutable","name":"v","nameLocation":"15964:1:12","nodeType":"VariableDeclaration","scope":2613,"src":"15956:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2595,"name":"uint256","nodeType":"ElementaryTypeName","src":"15956:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2602,"initialValue":{"arguments":[{"id":2598,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2523,"src":"16001:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"id":2599,"name":"begin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2525,"src":"16008:5:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":2600,"name":"end","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2527,"src":"16015:3:12","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":2597,"name":"_tryParseHexUintUncheckedBounds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"15969:31:12","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":2601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15969:50:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15947:72:12"},{"expression":{"components":[{"id":2603,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2594,"src":"16041:1:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"arguments":[{"arguments":[{"id":2608,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2596,"src":"16060:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2607,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16052:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":2606,"name":"uint160","nodeType":"ElementaryTypeName","src":"16052:7:12","typeDescriptions":{}}},"id":2609,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16052:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"id":2605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16044:7:12","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2604,"name":"address","nodeType":"ElementaryTypeName","src":"16044:7:12","typeDescriptions":{}}},"id":2610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16044:19:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":2611,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16040:24:12","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_address_$","typeString":"tuple(bool,address)"}},"functionReturnParameters":2533,"id":2612,"nodeType":"Return","src":"16033:31:12"}]}}]},"documentation":{"id":2521,"nodeType":"StructuredDocumentation","src":"15018:226:12","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":2624,"implemented":true,"kind":"function","modifiers":[],"name":"tryParseAddress","nameLocation":"15258:15:12","nodeType":"FunctionDefinition","parameters":{"id":2528,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2523,"mutability":"mutable","name":"input","nameLocation":"15297:5:12","nodeType":"VariableDeclaration","scope":2624,"src":"15283:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2522,"name":"string","nodeType":"ElementaryTypeName","src":"15283:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":2525,"mutability":"mutable","name":"begin","nameLocation":"15320:5:12","nodeType":"VariableDeclaration","scope":2624,"src":"15312:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2524,"name":"uint256","nodeType":"ElementaryTypeName","src":"15312:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2527,"mutability":"mutable","name":"end","nameLocation":"15343:3:12","nodeType":"VariableDeclaration","scope":2624,"src":"15335:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2526,"name":"uint256","nodeType":"ElementaryTypeName","src":"15335:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15273:79:12"},"returnParameters":{"id":2533,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2530,"mutability":"mutable","name":"success","nameLocation":"15381:7:12","nodeType":"VariableDeclaration","scope":2624,"src":"15376:12:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2529,"name":"bool","nodeType":"ElementaryTypeName","src":"15376:4:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":2532,"mutability":"mutable","name":"value","nameLocation":"15398:5:12","nodeType":"VariableDeclaration","scope":2624,"src":"15390:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2531,"name":"address","nodeType":"ElementaryTypeName","src":"15390:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15375:29:12"},"scope":2863,"src":"15249:889:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2683,"nodeType":"Block","src":"16207:461:12","statements":[{"assignments":[2632],"declarations":[{"constant":false,"id":2632,"mutability":"mutable","name":"value","nameLocation":"16223:5:12","nodeType":"VariableDeclaration","scope":2683,"src":"16217:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2631,"name":"uint8","nodeType":"ElementaryTypeName","src":"16217:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2637,"initialValue":{"arguments":[{"id":2635,"name":"chr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"16237:3:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2634,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16231:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2633,"name":"uint8","nodeType":"ElementaryTypeName","src":"16231:5:12","typeDescriptions":{}}},"id":2636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16231:10:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16217:24:12"},{"id":2680,"nodeType":"UncheckedBlock","src":"16401:238:12","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16429:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3437","id":2639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16437:2:12","typeDescriptions":{"typeIdentifier":"t_rational_47_by_1","typeString":"int_const 47"},"value":"47"},"src":"16429:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2643,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2641,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16443:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3538","id":2642,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16451:2:12","typeDescriptions":{"typeIdentifier":"t_rational_58_by_1","typeString":"int_const 58"},"value":"58"},"src":"16443:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16429:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2649,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16489:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3936","id":2650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16497:2:12","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},"src":"16489:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2654,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2652,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16503:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"313033","id":2653,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16511:3:12","typeDescriptions":{"typeIdentifier":"t_rational_103_by_1","typeString":"int_const 103"},"value":"103"},"src":"16503:11:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16489:25:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2666,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2660,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16550:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"3634","id":2661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16558:2:12","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"16550:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2663,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16564:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"3731","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16572:2:12","typeDescriptions":{"typeIdentifier":"t_rational_71_by_1","typeString":"int_const 71"},"value":"71"},"src":"16564:10:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16550:24:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"expression":{"expression":{"arguments":[{"id":2673,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16618:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2672,"name":"uint8","nodeType":"ElementaryTypeName","src":"16618:5:12","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":2671,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16613:4:12","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":2674,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16613:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":2675,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16625:3:12","memberName":"max","nodeType":"MemberAccess","src":"16613:15:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2630,"id":2676,"nodeType":"Return","src":"16606:22:12"},"id":2677,"nodeType":"IfStatement","src":"16546:82:12","trueBody":{"expression":{"id":2669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2667,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16576:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3535","id":2668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16585:2:12","typeDescriptions":{"typeIdentifier":"t_rational_55_by_1","typeString":"int_const 55"},"value":"55"},"src":"16576:11:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2670,"nodeType":"ExpressionStatement","src":"16576:11:12"}},"id":2678,"nodeType":"IfStatement","src":"16485:143:12","trueBody":{"expression":{"id":2658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2656,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16516:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3837","id":2657,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16525:2:12","typeDescriptions":{"typeIdentifier":"t_rational_87_by_1","typeString":"int_const 87"},"value":"87"},"src":"16516:11:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2659,"nodeType":"ExpressionStatement","src":"16516:11:12"}},"id":2679,"nodeType":"IfStatement","src":"16425:203:12","trueBody":{"expression":{"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2645,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16455:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"hexValue":"3438","id":2646,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16464:2:12","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},"src":"16455:11:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":2648,"nodeType":"ExpressionStatement","src":"16455:11:12"}}]},{"expression":{"id":2681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2632,"src":"16656:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":2630,"id":2682,"nodeType":"Return","src":"16649:12:12"}]},"id":2684,"implemented":true,"kind":"function","modifiers":[],"name":"_tryParseChr","nameLocation":"16153:12:12","nodeType":"FunctionDefinition","parameters":{"id":2627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2626,"mutability":"mutable","name":"chr","nameLocation":"16173:3:12","nodeType":"VariableDeclaration","scope":2684,"src":"16166:10:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2625,"name":"bytes1","nodeType":"ElementaryTypeName","src":"16166:6:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"src":"16165:12:12"},"returnParameters":{"id":2630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2684,"src":"16200:5:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2628,"name":"uint8","nodeType":"ElementaryTypeName","src":"16200:5:12","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16199:7:12"},"scope":2863,"src":"16144:524:12","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":2849,"nodeType":"Block","src":"17334:1331:12","statements":[{"assignments":[2693],"declarations":[{"constant":false,"id":2693,"mutability":"mutable","name":"buffer","nameLocation":"17357:6:12","nodeType":"VariableDeclaration","scope":2849,"src":"17344:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2692,"name":"bytes","nodeType":"ElementaryTypeName","src":"17344:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2698,"initialValue":{"arguments":[{"id":2696,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2687,"src":"17372:5:12","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":2695,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17366:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":2694,"name":"bytes","nodeType":"ElementaryTypeName","src":"17366:5:12","typeDescriptions":{}}},"id":2697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17366:12:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17344:34:12"},{"assignments":[2700],"declarations":[{"constant":false,"id":2700,"mutability":"mutable","name":"output","nameLocation":"17401:6:12","nodeType":"VariableDeclaration","scope":2849,"src":"17388:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2699,"name":"bytes","nodeType":"ElementaryTypeName","src":"17388:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":2708,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":2703,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17420:1:12","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":2704,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"17424:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17431:6:12","memberName":"length","nodeType":"MemberAccess","src":"17424:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17420:17:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2702,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"17410:9:12","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":2701,"name":"bytes","nodeType":"ElementaryTypeName","src":"17414:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":2707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17410:28:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"17388:50:12"},{"assignments":[2710],"declarations":[{"constant":false,"id":2710,"mutability":"mutable","name":"outputLength","nameLocation":"17479:12:12","nodeType":"VariableDeclaration","scope":2849,"src":"17471:20:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2709,"name":"uint256","nodeType":"ElementaryTypeName","src":"17471:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2712,"initialValue":{"hexValue":"30","id":2711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17494:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17471:24:12"},{"body":{"id":2841,"nodeType":"Block","src":"17546:854:12","statements":[{"assignments":[2724],"declarations":[{"constant":false,"id":2724,"mutability":"mutable","name":"char","nameLocation":"17567:4:12","nodeType":"VariableDeclaration","scope":2841,"src":"17560:11:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":2723,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17560:6:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"}],"id":2732,"initialValue":{"arguments":[{"arguments":[{"id":2728,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"17604:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":2729,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"17612:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2727,"name":"_unsafeReadBytesOffset","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2862,"src":"17581:22:12","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$","typeString":"function (bytes memory,uint256) pure returns (bytes32)"}},"id":2730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17581:33:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2726,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17574:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":2725,"name":"bytes1","nodeType":"ElementaryTypeName","src":"17574:6:12","typeDescriptions":{}}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17574:41:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"VariableDeclarationStatement","src":"17560:55:12"},{"condition":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2733,"name":"SPECIAL_CHARS_LOOKUP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1514,"src":"17635:20:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":2734,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17659:1:12","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"arguments":[{"id":2737,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"17670:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":2736,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17664:5:12","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2735,"name":"uint8","nodeType":"ElementaryTypeName","src":"17664:5:12","typeDescriptions":{}}},"id":2738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17664:11:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"17659:16:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2740,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17658:18:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17635:41:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":2742,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17634:43:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":2743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17681:1:12","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17634:48:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2745,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17633:50:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2839,"nodeType":"Block","src":"18328:62:12","statements":[{"expression":{"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2832,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"18346:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2835,"indexExpression":{"id":2834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18353:14:12","subExpression":{"id":2833,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"18353:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18346:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":2836,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"18371:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"src":"18346:29:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2838,"nodeType":"ExpressionStatement","src":"18346:29:12"}]},"id":2840,"nodeType":"IfStatement","src":"17629:761:12","trueBody":{"id":2831,"nodeType":"Block","src":"17685:637:12","statements":[{"expression":{"id":2751,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2746,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"17703:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2749,"indexExpression":{"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17710:14:12","subExpression":{"id":2747,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"17710:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17703:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":2750,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17728:4:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"17703:29:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2752,"nodeType":"ExpressionStatement","src":"17703:29:12"},{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2753,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"17754:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783038","id":2754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17762:4:12","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"0x08"},"src":"17754:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2763,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"17823:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783039","id":2764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17831:4:12","typeDescriptions":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"value":"0x09"},"src":"17823:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2773,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"17892:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783061","id":2774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17900:4:12","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"0x0a"},"src":"17892:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2783,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"17961:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783063","id":2784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17969:4:12","typeDescriptions":{"typeIdentifier":"t_rational_12_by_1","typeString":"int_const 12"},"value":"0x0c"},"src":"17961:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2793,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"18030:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783064","id":2794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18038:4:12","typeDescriptions":{"typeIdentifier":"t_rational_13_by_1","typeString":"int_const 13"},"value":"0x0d"},"src":"18030:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2803,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"18099:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783563","id":2804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18107:4:12","typeDescriptions":{"typeIdentifier":"t_rational_92_by_1","typeString":"int_const 92"},"value":"0x5c"},"src":"18099:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2813,"name":"char","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2724,"src":"18169:4:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30783232","id":2814,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18177:4:12","typeDescriptions":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"value":"0x22"},"src":"18169:12:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2824,"nodeType":"IfStatement","src":"18165:143:12","trueBody":{"id":2823,"nodeType":"Block","src":"18183:125:12","statements":[{"expression":{"id":2821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2816,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"18261:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2819,"indexExpression":{"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18268:14:12","subExpression":{"id":2817,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"18268:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18261:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"22","id":2820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18286:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_6e9f33448a4153023cdaf3eb759f1afdc24aba433a3e18b683f8c04a6eaa69f0","typeString":"literal_string \"\"\""},"value":"\""},"src":"18261:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2822,"nodeType":"ExpressionStatement","src":"18261:28:12"}]}},"id":2825,"nodeType":"IfStatement","src":"18095:213:12","trueBody":{"expression":{"id":2811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2806,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"18113:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2809,"indexExpression":{"id":2808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18120:14:12","subExpression":{"id":2807,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"18120:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18113:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"5c","id":2810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18138:4:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095","typeString":"literal_string \"\\\""},"value":"\\"},"src":"18113:29:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2812,"nodeType":"ExpressionStatement","src":"18113:29:12"}},"id":2826,"nodeType":"IfStatement","src":"18026:282:12","trueBody":{"expression":{"id":2801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2796,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"18044:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2799,"indexExpression":{"id":2798,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18051:14:12","subExpression":{"id":2797,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"18051:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18044:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"72","id":2800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18069:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_414f72a4d550cad29f17d9d99a4af64b3776ec5538cd440cef0f03fef2e9e010","typeString":"literal_string \"r\""},"value":"r"},"src":"18044:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2802,"nodeType":"ExpressionStatement","src":"18044:28:12"}},"id":2827,"nodeType":"IfStatement","src":"17957:351:12","trueBody":{"expression":{"id":2791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2786,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"17975:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2789,"indexExpression":{"id":2788,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17982:14:12","subExpression":{"id":2787,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"17982:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17975:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66","id":2790,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18000:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_d1e8aeb79500496ef3dc2e57ba746a8315d048b7a664a2bf948db4fa91960483","typeString":"literal_string \"f\""},"value":"f"},"src":"17975:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2792,"nodeType":"ExpressionStatement","src":"17975:28:12"}},"id":2828,"nodeType":"IfStatement","src":"17888:420:12","trueBody":{"expression":{"id":2781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2776,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"17906:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2779,"indexExpression":{"id":2778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17913:14:12","subExpression":{"id":2777,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"17913:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17906:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"6e","id":2780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17931:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_4b4ecedb4964a40fe416b16c7bd8b46092040ec42ef0aa69e59f09872f105cf3","typeString":"literal_string \"n\""},"value":"n"},"src":"17906:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2782,"nodeType":"ExpressionStatement","src":"17906:28:12"}},"id":2829,"nodeType":"IfStatement","src":"17819:489:12","trueBody":{"expression":{"id":2771,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2766,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"17837:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2769,"indexExpression":{"id":2768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17844:14:12","subExpression":{"id":2767,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"17844:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17837:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74","id":2770,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17862:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_cac1bb71f0a97c8ac94ca9546b43178a9ad254c7b757ac07433aa6df35cd8089","typeString":"literal_string \"t\""},"value":"t"},"src":"17837:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2772,"nodeType":"ExpressionStatement","src":"17837:28:12"}},"id":2830,"nodeType":"IfStatement","src":"17750:558:12","trueBody":{"expression":{"id":2761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":2756,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"17768:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2759,"indexExpression":{"id":2758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17775:14:12","subExpression":{"id":2757,"name":"outputLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2710,"src":"17775:12:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17768:22:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"62","id":2760,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17793:3:12","typeDescriptions":{"typeIdentifier":"t_stringliteral_b5553de315e0edf504d9150af82dafa5c4667fa618ed0a6f19c69b41166c5510","typeString":"literal_string \"b\""},"value":"b"},"src":"17768:28:12","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"id":2762,"nodeType":"ExpressionStatement","src":"17768:28:12"}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2716,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"17522:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":2717,"name":"buffer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2693,"src":"17526:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17533:6:12","memberName":"length","nodeType":"MemberAccess","src":"17526:13:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17522:17:12","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2842,"initializationExpression":{"assignments":[2714],"declarations":[{"constant":false,"id":2714,"mutability":"mutable","name":"i","nameLocation":"17519:1:12","nodeType":"VariableDeclaration","scope":2842,"src":"17511:9:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2713,"name":"uint256","nodeType":"ElementaryTypeName","src":"17511:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2715,"nodeType":"VariableDeclarationStatement","src":"17511:9:12"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":2721,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"17541:3:12","subExpression":{"id":2720,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2714,"src":"17543:1:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2722,"nodeType":"ExpressionStatement","src":"17541:3:12"},"nodeType":"ForStatement","src":"17506:894:12"},{"AST":{"nativeSrc":"18498:129:12","nodeType":"YulBlock","src":"18498:129:12","statements":[{"expression":{"arguments":[{"name":"output","nativeSrc":"18519:6:12","nodeType":"YulIdentifier","src":"18519:6:12"},{"name":"outputLength","nativeSrc":"18527:12:12","nodeType":"YulIdentifier","src":"18527:12:12"}],"functionName":{"name":"mstore","nativeSrc":"18512:6:12","nodeType":"YulIdentifier","src":"18512:6:12"},"nativeSrc":"18512:28:12","nodeType":"YulFunctionCall","src":"18512:28:12"},"nativeSrc":"18512:28:12","nodeType":"YulExpressionStatement","src":"18512:28:12"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"18560:4:12","nodeType":"YulLiteral","src":"18560:4:12","type":"","value":"0x40"},{"arguments":[{"name":"output","nativeSrc":"18570:6:12","nodeType":"YulIdentifier","src":"18570:6:12"},{"arguments":[{"kind":"number","nativeSrc":"18582:1:12","nodeType":"YulLiteral","src":"18582:1:12","type":"","value":"5"},{"arguments":[{"kind":"number","nativeSrc":"18589:1:12","nodeType":"YulLiteral","src":"18589:1:12","type":"","value":"5"},{"arguments":[{"name":"outputLength","nativeSrc":"18596:12:12","nodeType":"YulIdentifier","src":"18596:12:12"},{"kind":"number","nativeSrc":"18610:2:12","nodeType":"YulLiteral","src":"18610:2:12","type":"","value":"63"}],"functionName":{"name":"add","nativeSrc":"18592:3:12","nodeType":"YulIdentifier","src":"18592:3:12"},"nativeSrc":"18592:21:12","nodeType":"YulFunctionCall","src":"18592:21:12"}],"functionName":{"name":"shr","nativeSrc":"18585:3:12","nodeType":"YulIdentifier","src":"18585:3:12"},"nativeSrc":"18585:29:12","nodeType":"YulFunctionCall","src":"18585:29:12"}],"functionName":{"name":"shl","nativeSrc":"18578:3:12","nodeType":"YulIdentifier","src":"18578:3:12"},"nativeSrc":"18578:37:12","nodeType":"YulFunctionCall","src":"18578:37:12"}],"functionName":{"name":"add","nativeSrc":"18566:3:12","nodeType":"YulIdentifier","src":"18566:3:12"},"nativeSrc":"18566:50:12","nodeType":"YulFunctionCall","src":"18566:50:12"}],"functionName":{"name":"mstore","nativeSrc":"18553:6:12","nodeType":"YulIdentifier","src":"18553:6:12"},"nativeSrc":"18553:64:12","nodeType":"YulFunctionCall","src":"18553:64:12"},"nativeSrc":"18553:64:12","nodeType":"YulExpressionStatement","src":"18553:64:12"}]},"evmVersion":"paris","externalReferences":[{"declaration":2700,"isOffset":false,"isSlot":false,"src":"18519:6:12","valueSize":1},{"declaration":2700,"isOffset":false,"isSlot":false,"src":"18570:6:12","valueSize":1},{"declaration":2710,"isOffset":false,"isSlot":false,"src":"18527:12:12","valueSize":1},{"declaration":2710,"isOffset":false,"isSlot":false,"src":"18596:12:12","valueSize":1}],"flags":["memory-safe"],"id":2843,"nodeType":"InlineAssembly","src":"18473:154:12"},{"expression":{"arguments":[{"id":2846,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2700,"src":"18651:6:12","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18644:6:12","typeDescriptions":{"typeIdentifier":"t_type$_t_string_storage_ptr_$","typeString":"type(string storage pointer)"},"typeName":{"id":2844,"name":"string","nodeType":"ElementaryTypeName","src":"18644:6:12","typeDescriptions":{}}},"id":2847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18644:14:12","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":2691,"id":2848,"nodeType":"Return","src":"18637:21:12"}]},"documentation":{"id":2685,"nodeType":"StructuredDocumentation","src":"16674:576:12","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":2850,"implemented":true,"kind":"function","modifiers":[],"name":"escapeJSON","nameLocation":"17264:10:12","nodeType":"FunctionDefinition","parameters":{"id":2688,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2687,"mutability":"mutable","name":"input","nameLocation":"17289:5:12","nodeType":"VariableDeclaration","scope":2850,"src":"17275:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2686,"name":"string","nodeType":"ElementaryTypeName","src":"17275:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17274:21:12"},"returnParameters":{"id":2691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2690,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2850,"src":"17319:13:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":2689,"name":"string","nodeType":"ElementaryTypeName","src":"17319:6:12","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"17318:15:12"},"scope":2863,"src":"17255:1410:12","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2861,"nodeType":"Block","src":"19050:225:12","statements":[{"AST":{"nativeSrc":"19199:70:12","nodeType":"YulBlock","src":"19199:70:12","statements":[{"nativeSrc":"19213:46:12","nodeType":"YulAssignment","src":"19213:46:12","value":{"arguments":[{"arguments":[{"name":"buffer","nativeSrc":"19232:6:12","nodeType":"YulIdentifier","src":"19232:6:12"},{"arguments":[{"kind":"number","nativeSrc":"19244:4:12","nodeType":"YulLiteral","src":"19244:4:12","type":"","value":"0x20"},{"name":"offset","nativeSrc":"19250:6:12","nodeType":"YulIdentifier","src":"19250:6:12"}],"functionName":{"name":"add","nativeSrc":"19240:3:12","nodeType":"YulIdentifier","src":"19240:3:12"},"nativeSrc":"19240:17:12","nodeType":"YulFunctionCall","src":"19240:17:12"}],"functionName":{"name":"add","nativeSrc":"19228:3:12","nodeType":"YulIdentifier","src":"19228:3:12"},"nativeSrc":"19228:30:12","nodeType":"YulFunctionCall","src":"19228:30:12"}],"functionName":{"name":"mload","nativeSrc":"19222:5:12","nodeType":"YulIdentifier","src":"19222:5:12"},"nativeSrc":"19222:37:12","nodeType":"YulFunctionCall","src":"19222:37:12"},"variableNames":[{"name":"value","nativeSrc":"19213:5:12","nodeType":"YulIdentifier","src":"19213:5:12"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2853,"isOffset":false,"isSlot":false,"src":"19232:6:12","valueSize":1},{"declaration":2855,"isOffset":false,"isSlot":false,"src":"19250:6:12","valueSize":1},{"declaration":2858,"isOffset":false,"isSlot":false,"src":"19213:5:12","valueSize":1}],"flags":["memory-safe"],"id":2860,"nodeType":"InlineAssembly","src":"19174:95:12"}]},"documentation":{"id":2851,"nodeType":"StructuredDocumentation","src":"18671:268:12","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":2862,"implemented":true,"kind":"function","modifiers":[],"name":"_unsafeReadBytesOffset","nameLocation":"18953:22:12","nodeType":"FunctionDefinition","parameters":{"id":2856,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2853,"mutability":"mutable","name":"buffer","nameLocation":"18989:6:12","nodeType":"VariableDeclaration","scope":2862,"src":"18976:19:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2852,"name":"bytes","nodeType":"ElementaryTypeName","src":"18976:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2855,"mutability":"mutable","name":"offset","nameLocation":"19005:6:12","nodeType":"VariableDeclaration","scope":2862,"src":"18997:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2854,"name":"uint256","nodeType":"ElementaryTypeName","src":"18997:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18975:37:12"},"returnParameters":{"id":2859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2858,"mutability":"mutable","name":"value","nameLocation":"19043:5:12","nodeType":"VariableDeclaration","scope":2862,"src":"19035:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2857,"name":"bytes32","nodeType":"ElementaryTypeName","src":"19035:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"19034:15:12"},"scope":2863,"src":"18944:331:12","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":2864,"src":"297:18980:12","usedErrors":[1521,1524,1527],"usedEvents":[]}],"src":"101:19177:12"},"id":12},"@openzeppelin/contracts/utils/cryptography/ECDSA.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/ECDSA.sol","exportedSymbols":{"ECDSA":[3211]},"id":3212,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":2865,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"112:24:13"},{"abstract":false,"baseContracts":[],"canonicalName":"ECDSA","contractDependencies":[],"contractKind":"library","documentation":{"id":2866,"nodeType":"StructuredDocumentation","src":"138:205:13","text":" @dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n These functions can be used to verify that a message was signed by the holder\n of the private keys of a given address."},"fullyImplemented":true,"id":3211,"linearizedBaseContracts":[3211],"name":"ECDSA","nameLocation":"352:5:13","nodeType":"ContractDefinition","nodes":[{"canonicalName":"ECDSA.RecoverError","id":2871,"members":[{"id":2867,"name":"NoError","nameLocation":"392:7:13","nodeType":"EnumValue","src":"392:7:13"},{"id":2868,"name":"InvalidSignature","nameLocation":"409:16:13","nodeType":"EnumValue","src":"409:16:13"},{"id":2869,"name":"InvalidSignatureLength","nameLocation":"435:22:13","nodeType":"EnumValue","src":"435:22:13"},{"id":2870,"name":"InvalidSignatureS","nameLocation":"467:17:13","nodeType":"EnumValue","src":"467:17:13"}],"name":"RecoverError","nameLocation":"369:12:13","nodeType":"EnumDefinition","src":"364:126:13"},{"documentation":{"id":2872,"nodeType":"StructuredDocumentation","src":"496:63:13","text":" @dev The signature derives the `address(0)`."},"errorSelector":"f645eedf","id":2874,"name":"ECDSAInvalidSignature","nameLocation":"570:21:13","nodeType":"ErrorDefinition","parameters":{"id":2873,"nodeType":"ParameterList","parameters":[],"src":"591:2:13"},"src":"564:30:13"},{"documentation":{"id":2875,"nodeType":"StructuredDocumentation","src":"600:60:13","text":" @dev The signature has an invalid length."},"errorSelector":"fce698f7","id":2879,"name":"ECDSAInvalidSignatureLength","nameLocation":"671:27:13","nodeType":"ErrorDefinition","parameters":{"id":2878,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2877,"mutability":"mutable","name":"length","nameLocation":"707:6:13","nodeType":"VariableDeclaration","scope":2879,"src":"699:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2876,"name":"uint256","nodeType":"ElementaryTypeName","src":"699:7:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"698:16:13"},"src":"665:50:13"},{"documentation":{"id":2880,"nodeType":"StructuredDocumentation","src":"721:85:13","text":" @dev The signature has an S value that is in the upper half order."},"errorSelector":"d78bce0c","id":2884,"name":"ECDSAInvalidSignatureS","nameLocation":"817:22:13","nodeType":"ErrorDefinition","parameters":{"id":2883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2882,"mutability":"mutable","name":"s","nameLocation":"848:1:13","nodeType":"VariableDeclaration","scope":2884,"src":"840:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2881,"name":"bytes32","nodeType":"ElementaryTypeName","src":"840:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"839:11:13"},"src":"811:40:13"},{"body":{"id":2936,"nodeType":"Block","src":"2285:622:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2902,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2899,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"2299:9:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2309:6:13","memberName":"length","nodeType":"MemberAccess","src":"2299:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"3635","id":2901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2319:2:13","typeDescriptions":{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},"value":"65"},"src":"2299:22:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":2934,"nodeType":"Block","src":"2793:108:13","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":2923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2823:1:13","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":2922,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2815:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2921,"name":"address","nodeType":"ElementaryTypeName","src":"2815:7:13","typeDescriptions":{}}},"id":2924,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2815:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2925,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"2827:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enumMATH_PLACEHOLDER_4752871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":2926,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2840:22:13","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2869,"src":"2827:35:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"expression":{"id":2929,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2889,"src":"2872:9:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2882:6:13","memberName":"length","nodeType":"MemberAccess","src":"2872:16:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2928,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2864:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2927,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2864:7:13","typeDescriptions":{}}},"id":2931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":2932,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2814:76:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_4792871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2898,"id":2933,"nodeType":"Return","src":"2807:83:13"}]},"id":2935,"nodeType":"IfStatement","src":"2295:606:13","trueBody":{"id":2920,"nodeType":"Block","src":"2323:464:13","statements":[{"assignments":[2904],"declarations":[{"constant":false,"id":2904,"mutability":"mutable","name":"r","nameLocation":"2345:1:13","nodeType":"VariableDeclaration","scope":2920,"src":"2337:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2903,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2337:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2905,"nodeType":"VariableDeclarationStatement","src":"2337:9:13"},{"assignments":[2907],"declarations":[{"constant":false,"id":2907,"mutability":"mutable","name":"s","nameLocation":"2368:1:13","nodeType":"VariableDeclaration","scope":2920,"src":"2360:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2906,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2360:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2908,"nodeType":"VariableDeclarationStatement","src":"2360:9:13"},{"assignments":[2910],"declarations":[{"constant":false,"id":2910,"mutability":"mutable","name":"v","nameLocation":"2389:1:13","nodeType":"VariableDeclaration","scope":2920,"src":"2383:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2909,"name":"uint8","nodeType":"ElementaryTypeName","src":"2383:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":2911,"nodeType":"VariableDeclarationStatement","src":"2383:7:13"},{"AST":{"nativeSrc":"2560:171:13","nodeType":"YulBlock","src":"2560:171:13","statements":[{"nativeSrc":"2578:32:13","nodeType":"YulAssignment","src":"2578:32:13","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2593:9:13","nodeType":"YulIdentifier","src":"2593:9:13"},{"kind":"number","nativeSrc":"2604:4:13","nodeType":"YulLiteral","src":"2604:4:13","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"2589:3:13","nodeType":"YulIdentifier","src":"2589:3:13"},"nativeSrc":"2589:20:13","nodeType":"YulFunctionCall","src":"2589:20:13"}],"functionName":{"name":"mload","nativeSrc":"2583:5:13","nodeType":"YulIdentifier","src":"2583:5:13"},"nativeSrc":"2583:27:13","nodeType":"YulFunctionCall","src":"2583:27:13"},"variableNames":[{"name":"r","nativeSrc":"2578:1:13","nodeType":"YulIdentifier","src":"2578:1:13"}]},{"nativeSrc":"2627:32:13","nodeType":"YulAssignment","src":"2627:32:13","value":{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2642:9:13","nodeType":"YulIdentifier","src":"2642:9:13"},{"kind":"number","nativeSrc":"2653:4:13","nodeType":"YulLiteral","src":"2653:4:13","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"2638:3:13","nodeType":"YulIdentifier","src":"2638:3:13"},"nativeSrc":"2638:20:13","nodeType":"YulFunctionCall","src":"2638:20:13"}],"functionName":{"name":"mload","nativeSrc":"2632:5:13","nodeType":"YulIdentifier","src":"2632:5:13"},"nativeSrc":"2632:27:13","nodeType":"YulFunctionCall","src":"2632:27:13"},"variableNames":[{"name":"s","nativeSrc":"2627:1:13","nodeType":"YulIdentifier","src":"2627:1:13"}]},{"nativeSrc":"2676:41:13","nodeType":"YulAssignment","src":"2676:41:13","value":{"arguments":[{"kind":"number","nativeSrc":"2686:1:13","nodeType":"YulLiteral","src":"2686:1:13","type":"","value":"0"},{"arguments":[{"arguments":[{"name":"signature","nativeSrc":"2699:9:13","nodeType":"YulIdentifier","src":"2699:9:13"},{"kind":"number","nativeSrc":"2710:4:13","nodeType":"YulLiteral","src":"2710:4:13","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"2695:3:13","nodeType":"YulIdentifier","src":"2695:3:13"},"nativeSrc":"2695:20:13","nodeType":"YulFunctionCall","src":"2695:20:13"}],"functionName":{"name":"mload","nativeSrc":"2689:5:13","nodeType":"YulIdentifier","src":"2689:5:13"},"nativeSrc":"2689:27:13","nodeType":"YulFunctionCall","src":"2689:27:13"}],"functionName":{"name":"byte","nativeSrc":"2681:4:13","nodeType":"YulIdentifier","src":"2681:4:13"},"nativeSrc":"2681:36:13","nodeType":"YulFunctionCall","src":"2681:36:13"},"variableNames":[{"name":"v","nativeSrc":"2676:1:13","nodeType":"YulIdentifier","src":"2676:1:13"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2904,"isOffset":false,"isSlot":false,"src":"2578:1:13","valueSize":1},{"declaration":2907,"isOffset":false,"isSlot":false,"src":"2627:1:13","valueSize":1},{"declaration":2889,"isOffset":false,"isSlot":false,"src":"2593:9:13","valueSize":1},{"declaration":2889,"isOffset":false,"isSlot":false,"src":"2642:9:13","valueSize":1},{"declaration":2889,"isOffset":false,"isSlot":false,"src":"2699:9:13","valueSize":1},{"declaration":2910,"isOffset":false,"isSlot":false,"src":"2676:1:13","valueSize":1}],"flags":["memory-safe"],"id":2912,"nodeType":"InlineAssembly","src":"2535:196:13"},{"expression":{"arguments":[{"id":2914,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2887,"src":"2762:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2915,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2910,"src":"2768:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":2916,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2904,"src":"2771:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2917,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2907,"src":"2774:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2913,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2937,3017,3125],"referencedDeclaration":3125,"src":"2751:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2871_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2751:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_4872871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2898,"id":2919,"nodeType":"Return","src":"2744:32:13"}]}}]},"documentation":{"id":2885,"nodeType":"StructuredDocumentation","src":"857:1267:13","text":" @dev Returns the address that signed a hashed message (`hash`) with `signature` or an error. This will not\n return address(0) without also returning an error description. Errors are documented using an enum (error type)\n and a bytes32 providing additional information about the error.\n If no error is returned, then the address can be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it.\n Documentation for signature generation:\n - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js]\n - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers]"},"id":2937,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"2138:10:13","nodeType":"FunctionDefinition","parameters":{"id":2890,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2887,"mutability":"mutable","name":"hash","nameLocation":"2166:4:13","nodeType":"VariableDeclaration","scope":2937,"src":"2158:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2886,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2158:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2889,"mutability":"mutable","name":"signature","nameLocation":"2193:9:13","nodeType":"VariableDeclaration","scope":2937,"src":"2180:22:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2888,"name":"bytes","nodeType":"ElementaryTypeName","src":"2180:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2148:60:13"},"returnParameters":{"id":2898,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2892,"mutability":"mutable","name":"recovered","nameLocation":"2240:9:13","nodeType":"VariableDeclaration","scope":2937,"src":"2232:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2891,"name":"address","nodeType":"ElementaryTypeName","src":"2232:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2895,"mutability":"mutable","name":"err","nameLocation":"2264:3:13","nodeType":"VariableDeclaration","scope":2937,"src":"2251:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_4892871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2894,"nodeType":"UserDefinedTypeName","pathNode":{"id":2893,"name":"RecoverError","nameLocations":["2251:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"2251:12:13"},"referencedDeclaration":2871,"src":"2251:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_4902871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2897,"mutability":"mutable","name":"errArg","nameLocation":"2277:6:13","nodeType":"VariableDeclaration","scope":2937,"src":"2269:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2896,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2269:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2231:53:13"},"scope":3211,"src":"2129:778:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":2966,"nodeType":"Block","src":"3801:168:13","statements":[{"assignments":[2948,2951,2953],"declarations":[{"constant":false,"id":2948,"mutability":"mutable","name":"recovered","nameLocation":"3820:9:13","nodeType":"VariableDeclaration","scope":2966,"src":"3812:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2947,"name":"address","nodeType":"ElementaryTypeName","src":"3812:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2951,"mutability":"mutable","name":"error","nameLocation":"3844:5:13","nodeType":"VariableDeclaration","scope":2966,"src":"3831:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_4912871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2950,"nodeType":"UserDefinedTypeName","pathNode":{"id":2949,"name":"RecoverError","nameLocations":["3831:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"3831:12:13"},"referencedDeclaration":2871,"src":"3831:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_4922871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2953,"mutability":"mutable","name":"errorArg","nameLocation":"3859:8:13","nodeType":"VariableDeclaration","scope":2966,"src":"3851:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2952,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3851:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2958,"initialValue":{"arguments":[{"id":2955,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2940,"src":"3882:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2956,"name":"signature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2942,"src":"3888:9:13","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":2954,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2937,3017,3125],"referencedDeclaration":2937,"src":"3871:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$_t_enum$_RecoverError_$2871_$_t_bytes32_$","typeString":"function (bytes32,bytes memory) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":2957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3871:27:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_4982871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"3811:87:13"},{"expression":{"arguments":[{"id":2960,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2951,"src":"3920:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5002871","typeString":"enum ECDSA.RecoverError"}},{"id":2961,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2953,"src":"3927:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5012871","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2959,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"3908:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2871_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":2962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3908:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2963,"nodeType":"ExpressionStatement","src":"3908:28:13"},{"expression":{"id":2964,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2948,"src":"3953:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2946,"id":2965,"nodeType":"Return","src":"3946:16:13"}]},"documentation":{"id":2938,"nodeType":"StructuredDocumentation","src":"2913:796:13","text":" @dev Returns the address that signed a hashed message (`hash`) with\n `signature`. This address can then be used for verification purposes.\n The `ecrecover` EVM precompile allows for malleable (non-unique) signatures:\n this function rejects them by requiring the `s` value to be in the lower\n half order, and the `v` value to be either 27 or 28.\n IMPORTANT: `hash` _must_ be the result of a hash operation for the\n verification to be secure: it is possible to craft signatures that\n recover to arbitrary addresses for non-hashed data. A safe way to ensure\n this is by receiving a hash of the original message (which may otherwise\n be too long), and then calling {MessageHashUtils-toEthSignedMessageHash} on it."},"id":2967,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"3723:7:13","nodeType":"FunctionDefinition","parameters":{"id":2943,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2940,"mutability":"mutable","name":"hash","nameLocation":"3739:4:13","nodeType":"VariableDeclaration","scope":2967,"src":"3731:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2939,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3731:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2942,"mutability":"mutable","name":"signature","nameLocation":"3758:9:13","nodeType":"VariableDeclaration","scope":2967,"src":"3745:22:13","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2941,"name":"bytes","nodeType":"ElementaryTypeName","src":"3745:5:13","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3730:38:13"},"returnParameters":{"id":2946,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2945,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2967,"src":"3792:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2944,"name":"address","nodeType":"ElementaryTypeName","src":"3792:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3791:9:13"},"scope":3211,"src":"3714:255:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3016,"nodeType":"Block","src":"4348:342:13","statements":[{"id":3015,"nodeType":"UncheckedBlock","src":"4358:326:13","statements":[{"assignments":[2985],"declarations":[{"constant":false,"id":2985,"mutability":"mutable","name":"s","nameLocation":"4390:1:13","nodeType":"VariableDeclaration","scope":3015,"src":"4382:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2984,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4382:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":2992,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":2991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2986,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2974,"src":"4394:2:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"arguments":[{"hexValue":"307837666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666","id":2989,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4407:66:13","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"},"value":"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57896044618658097711785492504343953926634992332820282019728792003956564819967_by_1","typeString":"int_const 5789...(69 digits omitted)...9967"}],"id":2988,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4399:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2987,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4399:7:13","typeDescriptions":{}}},"id":2990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4399:75:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"4394:80:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"4382:92:13"},{"assignments":[2994],"declarations":[{"constant":false,"id":2994,"mutability":"mutable","name":"v","nameLocation":"4591:1:13","nodeType":"VariableDeclaration","scope":3015,"src":"4585:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":2993,"name":"uint8","nodeType":"ElementaryTypeName","src":"4585:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":3007,"initialValue":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2999,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2974,"src":"4610:2:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4602:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2997,"name":"uint256","nodeType":"ElementaryTypeName","src":"4602:7:13","typeDescriptions":{}}},"id":3000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4602:11:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":3001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4617:3:13","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"4602:18:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3003,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4601:20:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"3237","id":3004,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4624:2:13","typeDescriptions":{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},"value":"27"},"src":"4601:25:13","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2996,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4595:5:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":2995,"name":"uint8","nodeType":"ElementaryTypeName","src":"4595:5:13","typeDescriptions":{}}},"id":3006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4595:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"4585:42:13"},{"expression":{"arguments":[{"id":3009,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2970,"src":"4659:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3010,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2994,"src":"4665:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3011,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2972,"src":"4668:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3012,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2985,"src":"4671:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3008,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2937,3017,3125],"referencedDeclaration":3125,"src":"4648:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2871_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":3013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4648:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5152871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":2983,"id":3014,"nodeType":"Return","src":"4641:32:13"}]}]},"documentation":{"id":2968,"nodeType":"StructuredDocumentation","src":"3975:205:13","text":" @dev Overload of {ECDSA-tryRecover} that receives the `r` and `vs` short-signature fields separately.\n See https://eips.ethereum.org/EIPS/eip-2098[ERC-2098 short signatures]"},"id":3017,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"4194:10:13","nodeType":"FunctionDefinition","parameters":{"id":2975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2970,"mutability":"mutable","name":"hash","nameLocation":"4222:4:13","nodeType":"VariableDeclaration","scope":3017,"src":"4214:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2969,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4214:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2972,"mutability":"mutable","name":"r","nameLocation":"4244:1:13","nodeType":"VariableDeclaration","scope":3017,"src":"4236:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2971,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4236:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2974,"mutability":"mutable","name":"vs","nameLocation":"4263:2:13","nodeType":"VariableDeclaration","scope":3017,"src":"4255:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2973,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4255:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4204:67:13"},"returnParameters":{"id":2983,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2977,"mutability":"mutable","name":"recovered","nameLocation":"4303:9:13","nodeType":"VariableDeclaration","scope":3017,"src":"4295:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2976,"name":"address","nodeType":"ElementaryTypeName","src":"4295:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2980,"mutability":"mutable","name":"err","nameLocation":"4327:3:13","nodeType":"VariableDeclaration","scope":3017,"src":"4314:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5172871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":2979,"nodeType":"UserDefinedTypeName","pathNode":{"id":2978,"name":"RecoverError","nameLocations":["4314:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"4314:12:13"},"referencedDeclaration":2871,"src":"4314:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5182871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":2982,"mutability":"mutable","name":"errArg","nameLocation":"4340:6:13","nodeType":"VariableDeclaration","scope":3017,"src":"4332:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2981,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4332:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4294:53:13"},"scope":3211,"src":"4185:505:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3049,"nodeType":"Block","src":"4903:164:13","statements":[{"assignments":[3030,3033,3035],"declarations":[{"constant":false,"id":3030,"mutability":"mutable","name":"recovered","nameLocation":"4922:9:13","nodeType":"VariableDeclaration","scope":3049,"src":"4914:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3029,"name":"address","nodeType":"ElementaryTypeName","src":"4914:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"error","nameLocation":"4946:5:13","nodeType":"VariableDeclaration","scope":3049,"src":"4933:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5192871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3032,"nodeType":"UserDefinedTypeName","pathNode":{"id":3031,"name":"RecoverError","nameLocations":["4933:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"4933:12:13"},"referencedDeclaration":2871,"src":"4933:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5202871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":3035,"mutability":"mutable","name":"errorArg","nameLocation":"4961:8:13","nodeType":"VariableDeclaration","scope":3049,"src":"4953:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3034,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4953:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3041,"initialValue":{"arguments":[{"id":3037,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3020,"src":"4984:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3038,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3022,"src":"4990:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3039,"name":"vs","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3024,"src":"4993:2:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3036,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2937,3017,3125],"referencedDeclaration":3017,"src":"4973:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enumMATH_PLACEHOLDER_5242871_$_t_bytes32_$","typeString":"function (bytes32,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":3040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4973:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5272871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"4913:83:13"},{"expression":{"arguments":[{"id":3043,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3033,"src":"5018:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5292871","typeString":"enum ECDSA.RecoverError"}},{"id":3044,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3035,"src":"5025:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5302871","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3042,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"5006:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2871_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":3045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5006:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3046,"nodeType":"ExpressionStatement","src":"5006:28:13"},{"expression":{"id":3047,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3030,"src":"5051:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3028,"id":3048,"nodeType":"Return","src":"5044:16:13"}]},"documentation":{"id":3018,"nodeType":"StructuredDocumentation","src":"4696:116:13","text":" @dev Overload of {ECDSA-recover} that receives the `r and `vs` short-signature fields separately."},"id":3050,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"4826:7:13","nodeType":"FunctionDefinition","parameters":{"id":3025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3020,"mutability":"mutable","name":"hash","nameLocation":"4842:4:13","nodeType":"VariableDeclaration","scope":3050,"src":"4834:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3019,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4834:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3022,"mutability":"mutable","name":"r","nameLocation":"4856:1:13","nodeType":"VariableDeclaration","scope":3050,"src":"4848:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3021,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4848:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3024,"mutability":"mutable","name":"vs","nameLocation":"4867:2:13","nodeType":"VariableDeclaration","scope":3050,"src":"4859:10:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3023,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4859:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4833:37:13"},"returnParameters":{"id":3028,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3027,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3050,"src":"4894:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3026,"name":"address","nodeType":"ElementaryTypeName","src":"4894:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4893:9:13"},"scope":3211,"src":"4817:250:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3124,"nodeType":"Block","src":"5382:1372:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3071,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"6278:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3070,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6270:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3069,"name":"uint256","nodeType":"ElementaryTypeName","src":"6270:7:13","typeDescriptions":{}}},"id":3072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6270:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","id":3073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6283:66:13","typeDescriptions":{"typeIdentifier":"t_rational_57896044618658097711785492504343953926418782139537452191302581570759080747168_by_1","typeString":"int_const 5789...(69 digits omitted)...7168"},"value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"src":"6270:79:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3085,"nodeType":"IfStatement","src":"6266:164:13","trueBody":{"id":3084,"nodeType":"Block","src":"6351:79:13","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3077,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6381:1:13","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":3076,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6373:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3075,"name":"address","nodeType":"ElementaryTypeName","src":"6373:7:13","typeDescriptions":{}}},"id":3078,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3079,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"6385:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3080,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6398:17:13","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2870,"src":"6385:30:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},{"id":3081,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"6417:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3082,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6372:47:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5402871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":3068,"id":3083,"nodeType":"Return","src":"6365:54:13"}]}},{"assignments":[3087],"declarations":[{"constant":false,"id":3087,"mutability":"mutable","name":"signer","nameLocation":"6532:6:13","nodeType":"VariableDeclaration","scope":3124,"src":"6524:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3086,"name":"address","nodeType":"ElementaryTypeName","src":"6524:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3094,"initialValue":{"arguments":[{"id":3089,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3053,"src":"6551:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3090,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3055,"src":"6557:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3091,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3057,"src":"6560:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3092,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3059,"src":"6563:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3088,"name":"ecrecover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-6,"src":"6541:9:13","typeDescriptions":{"typeIdentifier":"t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)"}},"id":3093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6541:24:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6524:41:13"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3100,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3095,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"6579:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6597:1:13","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":3097,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6589:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3096,"name":"address","nodeType":"ElementaryTypeName","src":"6589:7:13","typeDescriptions":{}}},"id":3099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6589:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6579:20:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3114,"nodeType":"IfStatement","src":"6575:113:13","trueBody":{"id":3113,"nodeType":"Block","src":"6601:87:13","statements":[{"expression":{"components":[{"arguments":[{"hexValue":"30","id":3103,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6631:1:13","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":3102,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6623:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3101,"name":"address","nodeType":"ElementaryTypeName","src":"6623:7:13","typeDescriptions":{}}},"id":3104,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6623:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3105,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"6635:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enumMATH_PLACEHOLDER_5482871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3106,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6648:16:13","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2868,"src":"6635:29:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":3109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6674:1:13","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":3108,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6666:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3107,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6666:7:13","typeDescriptions":{}}},"id":3110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6666:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3111,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"6622:55:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5522871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":3068,"id":3112,"nodeType":"Return","src":"6615:62:13"}]}},{"expression":{"components":[{"id":3115,"name":"signer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3087,"src":"6706:6:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":3116,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"6714:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3117,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6727:7:13","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2867,"src":"6714:20:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},{"arguments":[{"hexValue":"30","id":3120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6744:1:13","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":3119,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6736:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6736:7:13","typeDescriptions":{}}},"id":3121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6736:10:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3122,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6705:42:13","typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5582871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"functionReturnParameters":3068,"id":3123,"nodeType":"Return","src":"6698:49:13"}]},"documentation":{"id":3051,"nodeType":"StructuredDocumentation","src":"5073:125:13","text":" @dev Overload of {ECDSA-tryRecover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":3125,"implemented":true,"kind":"function","modifiers":[],"name":"tryRecover","nameLocation":"5212:10:13","nodeType":"FunctionDefinition","parameters":{"id":3060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3053,"mutability":"mutable","name":"hash","nameLocation":"5240:4:13","nodeType":"VariableDeclaration","scope":3125,"src":"5232:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3052,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5232:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3055,"mutability":"mutable","name":"v","nameLocation":"5260:1:13","nodeType":"VariableDeclaration","scope":3125,"src":"5254:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3054,"name":"uint8","nodeType":"ElementaryTypeName","src":"5254:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3057,"mutability":"mutable","name":"r","nameLocation":"5279:1:13","nodeType":"VariableDeclaration","scope":3125,"src":"5271:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3056,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5271:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3059,"mutability":"mutable","name":"s","nameLocation":"5298:1:13","nodeType":"VariableDeclaration","scope":3125,"src":"5290:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3058,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5290:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5222:83:13"},"returnParameters":{"id":3068,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3062,"mutability":"mutable","name":"recovered","nameLocation":"5337:9:13","nodeType":"VariableDeclaration","scope":3125,"src":"5329:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3061,"name":"address","nodeType":"ElementaryTypeName","src":"5329:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3065,"mutability":"mutable","name":"err","nameLocation":"5361:3:13","nodeType":"VariableDeclaration","scope":3125,"src":"5348:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5602871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3064,"nodeType":"UserDefinedTypeName","pathNode":{"id":3063,"name":"RecoverError","nameLocations":["5348:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"5348:12:13"},"referencedDeclaration":2871,"src":"5348:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5612871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":3067,"mutability":"mutable","name":"errArg","nameLocation":"5374:6:13","nodeType":"VariableDeclaration","scope":3125,"src":"5366:14:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3066,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5366:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5328:53:13"},"scope":3211,"src":"5203:1551:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3160,"nodeType":"Block","src":"6981:166:13","statements":[{"assignments":[3140,3143,3145],"declarations":[{"constant":false,"id":3140,"mutability":"mutable","name":"recovered","nameLocation":"7000:9:13","nodeType":"VariableDeclaration","scope":3160,"src":"6992:17:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3139,"name":"address","nodeType":"ElementaryTypeName","src":"6992:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3143,"mutability":"mutable","name":"error","nameLocation":"7024:5:13","nodeType":"VariableDeclaration","scope":3160,"src":"7011:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5622871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3142,"nodeType":"UserDefinedTypeName","pathNode":{"id":3141,"name":"RecoverError","nameLocations":["7011:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"7011:12:13"},"referencedDeclaration":2871,"src":"7011:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5632871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":3145,"mutability":"mutable","name":"errorArg","nameLocation":"7039:8:13","nodeType":"VariableDeclaration","scope":3160,"src":"7031:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3144,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7031:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":3152,"initialValue":{"arguments":[{"id":3147,"name":"hash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3128,"src":"7062:4:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3148,"name":"v","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3130,"src":"7068:1:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"id":3149,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3132,"src":"7071:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3150,"name":"s","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3134,"src":"7074:1:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3146,"name":"tryRecover","nodeType":"Identifier","overloadedDeclarations":[2937,3017,3125],"referencedDeclaration":3125,"src":"7051:10:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$_t_enum$_RecoverError_$2871_$_t_bytes32_$","typeString":"function (bytes32,uint8,bytes32,bytes32) pure returns (address,enum ECDSA.RecoverError,bytes32)"}},"id":3151,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7051:25:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_enumMATH_PLACEHOLDER_5702871_$_t_bytes32_$","typeString":"tuple(address,enum ECDSA.RecoverError,bytes32)"}},"nodeType":"VariableDeclarationStatement","src":"6991:85:13"},{"expression":{"arguments":[{"id":3154,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3143,"src":"7098:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5722871","typeString":"enum ECDSA.RecoverError"}},{"id":3155,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3145,"src":"7105:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5732871","typeString":"enum ECDSA.RecoverError"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3153,"name":"_throwError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3210,"src":"7086:11:13","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_RecoverError_$2871_$_t_bytes32_$returns$__$","typeString":"function (enum ECDSA.RecoverError,bytes32) pure"}},"id":3156,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7086:28:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3157,"nodeType":"ExpressionStatement","src":"7086:28:13"},{"expression":{"id":3158,"name":"recovered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3140,"src":"7131:9:13","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":3138,"id":3159,"nodeType":"Return","src":"7124:16:13"}]},"documentation":{"id":3126,"nodeType":"StructuredDocumentation","src":"6760:122:13","text":" @dev Overload of {ECDSA-recover} that receives the `v`,\n `r` and `s` signature fields separately."},"id":3161,"implemented":true,"kind":"function","modifiers":[],"name":"recover","nameLocation":"6896:7:13","nodeType":"FunctionDefinition","parameters":{"id":3135,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3128,"mutability":"mutable","name":"hash","nameLocation":"6912:4:13","nodeType":"VariableDeclaration","scope":3161,"src":"6904:12:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3127,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6904:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3130,"mutability":"mutable","name":"v","nameLocation":"6924:1:13","nodeType":"VariableDeclaration","scope":3161,"src":"6918:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":3129,"name":"uint8","nodeType":"ElementaryTypeName","src":"6918:5:13","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":3132,"mutability":"mutable","name":"r","nameLocation":"6935:1:13","nodeType":"VariableDeclaration","scope":3161,"src":"6927:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6927:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3134,"mutability":"mutable","name":"s","nameLocation":"6946:1:13","nodeType":"VariableDeclaration","scope":3161,"src":"6938:9:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6938:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6903:45:13"},"returnParameters":{"id":3138,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3137,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3161,"src":"6972:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3136,"name":"address","nodeType":"ElementaryTypeName","src":"6972:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6971:9:13"},"scope":3211,"src":"6887:260:13","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3209,"nodeType":"Block","src":"7352:460:13","statements":[{"condition":{"commonType":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5782871","typeString":"enum ECDSA.RecoverError"},"id":3173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3170,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"7366:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5792871","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3171,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"7375:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7388:7:13","memberName":"NoError","nodeType":"MemberAccess","referencedDeclaration":2867,"src":"7375:20:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},"src":"7366:29:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5822871","typeString":"enum ECDSA.RecoverError"},"id":3179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3176,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"7462:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5832871","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3177,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"7471:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7484:16:13","memberName":"InvalidSignature","nodeType":"MemberAccess","referencedDeclaration":2868,"src":"7471:29:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},"src":"7462:38:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5862871","typeString":"enum ECDSA.RecoverError"},"id":3187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3184,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"7567:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5872871","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3185,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"7576:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7589:22:13","memberName":"InvalidSignatureLength","nodeType":"MemberAccess","referencedDeclaration":2869,"src":"7576:35:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},"src":"7567:44:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5902871","typeString":"enum ECDSA.RecoverError"},"id":3199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3196,"name":"error","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3165,"src":"7701:5:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_5912871","typeString":"enum ECDSA.RecoverError"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":3197,"name":"RecoverError","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2871,"src":"7710:12:13","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_RecoverError_$2871_$","typeString":"type(enum ECDSA.RecoverError)"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7723:17:13","memberName":"InvalidSignatureS","nodeType":"MemberAccess","referencedDeclaration":2870,"src":"7710:30:13","typeDescriptions":{"typeIdentifier":"t_enum$_RecoverError_$2871","typeString":"enum ECDSA.RecoverError"}},"src":"7701:39:13","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3205,"nodeType":"IfStatement","src":"7697:109:13","trueBody":{"id":3204,"nodeType":"Block","src":"7742:64:13","statements":[{"errorCall":{"arguments":[{"id":3201,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"7786:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3200,"name":"ECDSAInvalidSignatureS","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2884,"src":"7763:22:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes32_$returns$_t_error_$","typeString":"function (bytes32) pure returns (error)"}},"id":3202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7763:32:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3203,"nodeType":"RevertStatement","src":"7756:39:13"}]}},"id":3206,"nodeType":"IfStatement","src":"7563:243:13","trueBody":{"id":3195,"nodeType":"Block","src":"7613:78:13","statements":[{"errorCall":{"arguments":[{"arguments":[{"id":3191,"name":"errorArg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3167,"src":"7670:8:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7662:7:13","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3189,"name":"uint256","nodeType":"ElementaryTypeName","src":"7662:7:13","typeDescriptions":{}}},"id":3192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7662:17:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3188,"name":"ECDSAInvalidSignatureLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2879,"src":"7634:27:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":3193,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7634:46:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3194,"nodeType":"RevertStatement","src":"7627:53:13"}]}},"id":3207,"nodeType":"IfStatement","src":"7458:348:13","trueBody":{"id":3183,"nodeType":"Block","src":"7502:55:13","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":3180,"name":"ECDSAInvalidSignature","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2874,"src":"7523:21:13","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":3181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7523:23:13","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":3182,"nodeType":"RevertStatement","src":"7516:30:13"}]}},"id":3208,"nodeType":"IfStatement","src":"7362:444:13","trueBody":{"id":3175,"nodeType":"Block","src":"7397:55:13","statements":[{"functionReturnParameters":3169,"id":3174,"nodeType":"Return","src":"7411:7:13"}]}}]},"documentation":{"id":3162,"nodeType":"StructuredDocumentation","src":"7153:122:13","text":" @dev Optionally reverts with the corresponding custom error according to the `error` argument provided."},"id":3210,"implemented":true,"kind":"function","modifiers":[],"name":"_throwError","nameLocation":"7289:11:13","nodeType":"FunctionDefinition","parameters":{"id":3168,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3165,"mutability":"mutable","name":"error","nameLocation":"7314:5:13","nodeType":"VariableDeclaration","scope":3210,"src":"7301:18:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_6012871","typeString":"enum ECDSA.RecoverError"},"typeName":{"id":3164,"nodeType":"UserDefinedTypeName","pathNode":{"id":3163,"name":"RecoverError","nameLocations":["7301:12:13"],"nodeType":"IdentifierPath","referencedDeclaration":2871,"src":"7301:12:13"},"referencedDeclaration":2871,"src":"7301:12:13","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_6022871","typeString":"enum ECDSA.RecoverError"}},"visibility":"internal"},{"constant":false,"id":3167,"mutability":"mutable","name":"errorArg","nameLocation":"7329:8:13","nodeType":"VariableDeclaration","scope":3210,"src":"7321:16:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3166,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7321:7:13","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7300:38:13"},"returnParameters":{"id":3169,"nodeType":"ParameterList","parameters":[],"src":"7352:0:13"},"scope":3211,"src":"7280:532:13","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":3212,"src":"344:7470:13","usedErrors":[2874,2879,2884],"usedEvents":[]}],"src":"112:7703:13"},"id":13},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/EIP712.sol","exportedSymbols":{"EIP712":[3438],"IERC5267":[24],"MessageHashUtils":[3524],"ShortString":[1126],"ShortStrings":[1337]},"id":3439,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3213,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"113:24:14"},{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","file":"./MessageHashUtils.sol","id":3215,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3439,"sourceUnit":3525,"src":"139:56:14","symbolAliases":[{"foreign":{"id":3214,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"147:16:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/ShortStrings.sol","file":"../ShortStrings.sol","id":3218,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3439,"sourceUnit":1338,"src":"196:62:14","symbolAliases":[{"foreign":{"id":3216,"name":"ShortStrings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1337,"src":"204:12:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":3217,"name":"ShortString","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"218:11:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/interfaces/IERC5267.sol","file":"../../interfaces/IERC5267.sol","id":3220,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3439,"sourceUnit":25,"src":"259:55:14","symbolAliases":[{"foreign":{"id":3219,"name":"IERC5267","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24,"src":"267:8:14","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":true,"baseContracts":[{"baseName":{"id":3222,"name":"IERC5267","nameLocations":["1988:8:14"],"nodeType":"IdentifierPath","referencedDeclaration":24,"src":"1988:8:14"},"id":3223,"nodeType":"InheritanceSpecifier","src":"1988:8:14"}],"canonicalName":"EIP712","contractDependencies":[],"contractKind":"contract","documentation":{"id":3221,"nodeType":"StructuredDocumentation","src":"316:1643:14","text":" @dev https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data.\n The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose\n encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract\n does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to\n produce the hash of their typed data using a combination of `abi.encode` and `keccak256`.\n This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding\n scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA\n ({_hashTypedDataV4}).\n The implementation of the domain separator was designed to be as efficient as possible while still properly updating\n the chain id to protect against replay attacks on an eventual fork of the chain.\n NOTE: This contract implements the version of the encoding known as \"v4\", as implemented by the JSON RPC method\n https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask].\n NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain\n separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the\n separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\n @custom:oz-upgrades-unsafe-allow state-variable-immutable"},"fullyImplemented":true,"id":3438,"linearizedBaseContracts":[3438,24],"name":"EIP712","nameLocation":"1978:6:14","nodeType":"ContractDefinition","nodes":[{"global":false,"id":3225,"libraryName":{"id":3224,"name":"ShortStrings","nameLocations":["2009:12:14"],"nodeType":"IdentifierPath","referencedDeclaration":1337,"src":"2009:12:14"},"nodeType":"UsingForDirective","src":"2003:25:14"},{"constant":true,"id":3230,"mutability":"constant","name":"TYPE_HASH","nameLocation":"2059:9:14","nodeType":"VariableDeclaration","scope":3438,"src":"2034:140:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3226,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2034:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429","id":3228,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2089:84:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""},"value":"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f","typeString":"literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""}],"id":3227,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2079:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3229,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2079:95:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3232,"mutability":"immutable","name":"_cachedDomainSeparator","nameLocation":"2399:22:14","nodeType":"VariableDeclaration","scope":3438,"src":"2373:48:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3231,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2373:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3234,"mutability":"immutable","name":"_cachedChainId","nameLocation":"2453:14:14","nodeType":"VariableDeclaration","scope":3438,"src":"2427:40:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3233,"name":"uint256","nodeType":"ElementaryTypeName","src":"2427:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"private"},{"constant":false,"id":3236,"mutability":"immutable","name":"_cachedThis","nameLocation":"2499:11:14","nodeType":"VariableDeclaration","scope":3438,"src":"2473:37:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3235,"name":"address","nodeType":"ElementaryTypeName","src":"2473:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"constant":false,"id":3238,"mutability":"immutable","name":"_hashedName","nameLocation":"2543:11:14","nodeType":"VariableDeclaration","scope":3438,"src":"2517:37:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3237,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2517:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3240,"mutability":"immutable","name":"_hashedVersion","nameLocation":"2586:14:14","nodeType":"VariableDeclaration","scope":3438,"src":"2560:40:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3239,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2560:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":false,"id":3243,"mutability":"immutable","name":"_name","nameLocation":"2637:5:14","nodeType":"VariableDeclaration","scope":3438,"src":"2607:35:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6051126","typeString":"ShortString"},"typeName":{"id":3242,"nodeType":"UserDefinedTypeName","pathNode":{"id":3241,"name":"ShortString","nameLocations":["2607:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"2607:11:14"},"referencedDeclaration":1126,"src":"2607:11:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6061126","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":3246,"mutability":"immutable","name":"_version","nameLocation":"2678:8:14","nodeType":"VariableDeclaration","scope":3438,"src":"2648:38:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6071126","typeString":"ShortString"},"typeName":{"id":3245,"nodeType":"UserDefinedTypeName","pathNode":{"id":3244,"name":"ShortString","nameLocations":["2648:11:14"],"nodeType":"IdentifierPath","referencedDeclaration":1126,"src":"2648:11:14"},"referencedDeclaration":1126,"src":"2648:11:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6081126","typeString":"ShortString"}},"visibility":"private"},{"constant":false,"id":3248,"mutability":"mutable","name":"_nameFallback","nameLocation":"2757:13:14","nodeType":"VariableDeclaration","scope":3438,"src":"2742:28:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3247,"name":"string","nodeType":"ElementaryTypeName","src":"2742:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"constant":false,"id":3250,"mutability":"mutable","name":"_versionFallback","nameLocation":"2841:16:14","nodeType":"VariableDeclaration","scope":3438,"src":"2826:31:14","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string"},"typeName":{"id":3249,"name":"string","nodeType":"ElementaryTypeName","src":"2826:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"private"},{"body":{"id":3307,"nodeType":"Block","src":"3483:376:14","statements":[{"expression":{"id":3263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3258,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"3493:5:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6091126","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3261,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"3532:13:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3259,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3501:4:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":3260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3506:25:14","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":1278,"src":"3501:30:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueTypeMATH_PLACEHOLDER_6121126_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":3262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3501:45:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"src":"3493:53:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6151126","typeString":"ShortString"}},"id":3264,"nodeType":"ExpressionStatement","src":"3493:53:14"},{"expression":{"id":3270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3265,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"3556:8:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6161126","typeString":"ShortString"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3268,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"3601:16:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3266,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3567:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"id":3267,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3575:25:14","memberName":"toShortStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":1278,"src":"3567:33:14","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_storage_ptr_$returns$_t_userDefinedValueTypeMATH_PLACEHOLDER_6191126_$attached_to$_t_string_memory_ptr_$","typeString":"function (string memory,string storage pointer) returns (ShortString)"}},"id":3269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3567:51:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"src":"3556:62:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6221126","typeString":"ShortString"}},"id":3271,"nodeType":"ExpressionStatement","src":"3556:62:14"},{"expression":{"id":3279,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3272,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"3628:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3276,"name":"name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3253,"src":"3658:4:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3275,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3652:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3274,"name":"bytes","nodeType":"ElementaryTypeName","src":"3652:5:14","typeDescriptions":{}}},"id":3277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3652:11:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3273,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3642:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3278,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3642:22:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3628:36:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3280,"nodeType":"ExpressionStatement","src":"3628:36:14"},{"expression":{"id":3288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3281,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"3674:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"arguments":[{"id":3285,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3255,"src":"3707:7:14","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3284,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3701:5:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3283,"name":"bytes","nodeType":"ElementaryTypeName","src":"3701:5:14","typeDescriptions":{}}},"id":3286,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3701:14:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3282,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"3691:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3287,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3691:25:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3674:42:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3289,"nodeType":"ExpressionStatement","src":"3674:42:14"},{"expression":{"id":3293,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3290,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"3727:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":3291,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"3744:5:14","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3292,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3750:7:14","memberName":"chainid","nodeType":"MemberAccess","src":"3744:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3727:30:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3294,"nodeType":"ExpressionStatement","src":"3727:30:14"},{"expression":{"id":3298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3295,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"3767:22:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":3296,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"3792:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3792:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"3767:48:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3299,"nodeType":"ExpressionStatement","src":"3767:48:14"},{"expression":{"id":3305,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3300,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"3825:11:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":3303,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3847:4:14","typeDescriptions":{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6313438","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6323438","typeString":"contract EIP712"}],"id":3302,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3839:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3301,"name":"address","nodeType":"ElementaryTypeName","src":"3839:7:14","typeDescriptions":{}}},"id":3304,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3839:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3825:27:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":3306,"nodeType":"ExpressionStatement","src":"3825:27:14"}]},"documentation":{"id":3251,"nodeType":"StructuredDocumentation","src":"2864:559:14","text":" @dev Initializes the domain separator and parameter caches.\n The meaning of `name` and `version` is specified in\n https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]:\n - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol.\n - `version`: the current major version of the signing domain.\n NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart\n contract upgrade]."},"id":3308,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":3256,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3253,"mutability":"mutable","name":"name","nameLocation":"3454:4:14","nodeType":"VariableDeclaration","scope":3308,"src":"3440:18:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3252,"name":"string","nodeType":"ElementaryTypeName","src":"3440:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3255,"mutability":"mutable","name":"version","nameLocation":"3474:7:14","nodeType":"VariableDeclaration","scope":3308,"src":"3460:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3254,"name":"string","nodeType":"ElementaryTypeName","src":"3460:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"3439:43:14"},"returnParameters":{"id":3257,"nodeType":"ParameterList","parameters":[],"src":"3483:0:14"},"scope":3438,"src":"3428:431:14","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":3333,"nodeType":"Block","src":"4007:200:14","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":3324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3316,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4029:4:14","typeDescriptions":{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6343438","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6353438","typeString":"contract EIP712"}],"id":3315,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4021:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3314,"name":"address","nodeType":"ElementaryTypeName","src":"4021:7:14","typeDescriptions":{}}},"id":3317,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4021:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3318,"name":"_cachedThis","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3236,"src":"4038:11:14","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4021:28:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3320,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4053:5:14","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4059:7:14","memberName":"chainid","nodeType":"MemberAccess","src":"4053:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3322,"name":"_cachedChainId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3234,"src":"4070:14:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4053:31:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4021:63:14","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":3331,"nodeType":"Block","src":"4146:55:14","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":3328,"name":"_buildDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3355,"src":"4167:21:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3329,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4167:23:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3313,"id":3330,"nodeType":"Return","src":"4160:30:14"}]},"id":3332,"nodeType":"IfStatement","src":"4017:184:14","trueBody":{"id":3327,"nodeType":"Block","src":"4086:54:14","statements":[{"expression":{"id":3325,"name":"_cachedDomainSeparator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3232,"src":"4107:22:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3313,"id":3326,"nodeType":"Return","src":"4100:29:14"}]}}]},"documentation":{"id":3309,"nodeType":"StructuredDocumentation","src":"3865:75:14","text":" @dev Returns the domain separator for the current chain."},"id":3334,"implemented":true,"kind":"function","modifiers":[],"name":"_domainSeparatorV4","nameLocation":"3954:18:14","nodeType":"FunctionDefinition","parameters":{"id":3310,"nodeType":"ParameterList","parameters":[],"src":"3972:2:14"},"returnParameters":{"id":3313,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3312,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3334,"src":"3998:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3311,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3998:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3997:9:14"},"scope":3438,"src":"3945:262:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3354,"nodeType":"Block","src":"4277:115:14","statements":[{"expression":{"arguments":[{"arguments":[{"id":3342,"name":"TYPE_HASH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3230,"src":"4315:9:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3343,"name":"_hashedName","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3238,"src":"4326:11:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3344,"name":"_hashedVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3240,"src":"4339:14:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":3345,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4355:5:14","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3346,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4361:7:14","memberName":"chainid","nodeType":"MemberAccess","src":"4355:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3349,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4378:4:14","typeDescriptions":{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6393438","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6403438","typeString":"contract EIP712"}],"id":3348,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4370:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3347,"name":"address","nodeType":"ElementaryTypeName","src":"4370:7:14","typeDescriptions":{}}},"id":3350,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4370:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":3340,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4304:3:14","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3341,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4308:6:14","memberName":"encode","nodeType":"MemberAccess","src":"4304:10:14","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3351,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4304:80:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3339,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"4294:9:14","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4294:91:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3338,"id":3353,"nodeType":"Return","src":"4287:98:14"}]},"id":3355,"implemented":true,"kind":"function","modifiers":[],"name":"_buildDomainSeparator","nameLocation":"4222:21:14","nodeType":"FunctionDefinition","parameters":{"id":3335,"nodeType":"ParameterList","parameters":[],"src":"4243:2:14"},"returnParameters":{"id":3338,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3337,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3355,"src":"4268:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3336,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4268:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"4267:9:14"},"scope":3438,"src":"4213:179:14","stateMutability":"view","virtual":false,"visibility":"private"},{"body":{"id":3370,"nodeType":"Block","src":"5103:90:14","statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":3365,"name":"_domainSeparatorV4","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3334,"src":"5153:18:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes32_$","typeString":"function () view returns (bytes32)"}},"id":3366,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5153:20:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3367,"name":"structHash","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3358,"src":"5175:10:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":3363,"name":"MessageHashUtils","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3524,"src":"5120:16:14","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_MessageHashUtils_$3524_$","typeString":"type(library MessageHashUtils)"}},"id":3364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5137:15:14","memberName":"toTypedDataHash","nodeType":"MemberAccess","referencedDeclaration":3523,"src":"5120:32:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes32_$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32,bytes32) pure returns (bytes32)"}},"id":3368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5120:66:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3362,"id":3369,"nodeType":"Return","src":"5113:73:14"}]},"documentation":{"id":3356,"nodeType":"StructuredDocumentation","src":"4398:614:14","text":" @dev Given an already https://eips.ethereum.org/EIPS/eip-712#definition-of-hashstruct[hashed struct], this\n function returns the hash of the fully encoded EIP712 message for this domain.\n This hash can be used together with {ECDSA-recover} to obtain the signer of a message. For example:\n ```solidity\n bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(\n     keccak256(\"Mail(address to,string contents)\"),\n     mailTo,\n     keccak256(bytes(mailContents))\n )));\n address signer = ECDSA.recover(digest, signature);\n ```"},"id":3371,"implemented":true,"kind":"function","modifiers":[],"name":"_hashTypedDataV4","nameLocation":"5026:16:14","nodeType":"FunctionDefinition","parameters":{"id":3359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3358,"mutability":"mutable","name":"structHash","nameLocation":"5051:10:14","nodeType":"VariableDeclaration","scope":3371,"src":"5043:18:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3357,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5043:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5042:20:14"},"returnParameters":{"id":3362,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3361,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3371,"src":"5094:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3360,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5094:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5093:9:14"},"scope":3438,"src":"5017:176:14","stateMutability":"view","virtual":true,"visibility":"internal"},{"baseFunctions":[23],"body":{"id":3412,"nodeType":"Block","src":"5571:229:14","statements":[{"expression":{"components":[{"hexValue":"0f","id":3390,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"5602:7:14","typeDescriptions":{"typeIdentifier":"t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c","typeString":"literal_string hex\"0f\""},"value":"\u000f"},{"arguments":[],"expression":{"argumentTypes":[],"id":3391,"name":"_EIP712Name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3425,"src":"5632:11:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":3392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5632:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"arguments":[],"expression":{"argumentTypes":[],"id":3393,"name":"_EIP712Version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3437,"src":"5659:14:14","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_string_memory_ptr_$","typeString":"function () view returns (string memory)"}},"id":3394,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5659:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},{"expression":{"id":3395,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5689:5:14","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":3396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5695:7:14","memberName":"chainid","nodeType":"MemberAccess","src":"5689:13:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":3399,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5724:4:14","typeDescriptions":{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6563438","typeString":"contract EIP712"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contractMATH_PLACEHOLDER_6573438","typeString":"contract EIP712"}],"id":3398,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5716:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3397,"name":"address","nodeType":"ElementaryTypeName","src":"5716:7:14","typeDescriptions":{}}},"id":3400,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5716:13:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3403,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5751:1:14","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":3402,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5743:7:14","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3401,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5743:7:14","typeDescriptions":{}}},"id":3404,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5743:10:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":3408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5781:1:14","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":3407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"5767:13:14","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":3405,"name":"uint256","nodeType":"ElementaryTypeName","src":"5771:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3406,"nodeType":"ArrayTypeName","src":"5771:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":3409,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5767:16:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"id":3410,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5588:205:14","typeDescriptions":{"typeIdentifier":"t_tuple$_t_stringliteral_3d725c5ee53025f027da36bea8d3af3b6a3e9d2d1542d47c162631de48e66c1c_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_bytes32_$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"tuple(literal_string hex\"0f\",string memory,string memory,uint256,address,bytes32,uint256[] memory)"}},"functionReturnParameters":3389,"id":3411,"nodeType":"Return","src":"5581:212:14"}]},"documentation":{"id":3372,"nodeType":"StructuredDocumentation","src":"5199:39:14","text":" @inheritdoc IERC5267"},"functionSelector":"84b0196e","id":3413,"implemented":true,"kind":"function","modifiers":[],"name":"eip712Domain","nameLocation":"5252:12:14","nodeType":"FunctionDefinition","parameters":{"id":3373,"nodeType":"ParameterList","parameters":[],"src":"5264:2:14"},"returnParameters":{"id":3389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3375,"mutability":"mutable","name":"fields","nameLocation":"5348:6:14","nodeType":"VariableDeclaration","scope":3413,"src":"5341:13:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"typeName":{"id":3374,"name":"bytes1","nodeType":"ElementaryTypeName","src":"5341:6:14","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"visibility":"internal"},{"constant":false,"id":3377,"mutability":"mutable","name":"name","nameLocation":"5382:4:14","nodeType":"VariableDeclaration","scope":3413,"src":"5368:18:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3376,"name":"string","nodeType":"ElementaryTypeName","src":"5368:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3379,"mutability":"mutable","name":"version","nameLocation":"5414:7:14","nodeType":"VariableDeclaration","scope":3413,"src":"5400:21:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3378,"name":"string","nodeType":"ElementaryTypeName","src":"5400:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"},{"constant":false,"id":3381,"mutability":"mutable","name":"chainId","nameLocation":"5443:7:14","nodeType":"VariableDeclaration","scope":3413,"src":"5435:15:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3380,"name":"uint256","nodeType":"ElementaryTypeName","src":"5435:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3383,"mutability":"mutable","name":"verifyingContract","nameLocation":"5472:17:14","nodeType":"VariableDeclaration","scope":3413,"src":"5464:25:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3382,"name":"address","nodeType":"ElementaryTypeName","src":"5464:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3385,"mutability":"mutable","name":"salt","nameLocation":"5511:4:14","nodeType":"VariableDeclaration","scope":3413,"src":"5503:12:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3384,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5503:7:14","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3388,"mutability":"mutable","name":"extensions","nameLocation":"5546:10:14","nodeType":"VariableDeclaration","scope":3413,"src":"5529:27:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":3386,"name":"uint256","nodeType":"ElementaryTypeName","src":"5529:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3387,"nodeType":"ArrayTypeName","src":"5529:9:14","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"5327:239:14"},"scope":3438,"src":"5243:557:14","stateMutability":"view","virtual":true,"visibility":"public"},{"body":{"id":3424,"nodeType":"Block","src":"6181:65:14","statements":[{"expression":{"arguments":[{"id":3421,"name":"_nameFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3248,"src":"6225:13:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3419,"name":"_name","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3243,"src":"6198:5:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueTypeMATH_PLACEHOLDER_6721126","typeString":"ShortString"}},"id":3420,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6204:20:14","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":1305,"src":"6198:26:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$1126_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":3422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6198:41:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3418,"id":3423,"nodeType":"Return","src":"6191:48:14"}]},"documentation":{"id":3414,"nodeType":"StructuredDocumentation","src":"5806:256:14","text":" @dev The name parameter for the EIP712 domain.\n NOTE: By default this function reads _name which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."},"id":3425,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Name","nameLocation":"6129:11:14","nodeType":"FunctionDefinition","parameters":{"id":3415,"nodeType":"ParameterList","parameters":[],"src":"6140:2:14"},"returnParameters":{"id":3418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3425,"src":"6166:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3416,"name":"string","nodeType":"ElementaryTypeName","src":"6166:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6165:15:14"},"scope":3438,"src":"6120:126:14","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":3436,"nodeType":"Block","src":"6636:71:14","statements":[{"expression":{"arguments":[{"id":3433,"name":"_versionFallback","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3250,"src":"6683:16:14","typeDescriptions":{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_storage","typeString":"string storage ref"}],"expression":{"id":3431,"name":"_version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3246,"src":"6653:8:14","typeDescriptions":{"typeIdentifier":"t_userDefinedValueType$_ShortString_$1126","typeString":"ShortString"}},"id":3432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6662:20:14","memberName":"toStringWithFallback","nodeType":"MemberAccess","referencedDeclaration":1305,"src":"6653:29:14","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_userDefinedValueType$_ShortString_$1126_$_t_string_storage_ptr_$returns$_t_string_memory_ptr_$attached_to$_t_userDefinedValueType$_ShortString_$1126_$","typeString":"function (ShortString,string storage pointer) pure returns (string memory)"}},"id":3434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6653:47:14","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}},"functionReturnParameters":3430,"id":3435,"nodeType":"Return","src":"6646:54:14"}]},"documentation":{"id":3426,"nodeType":"StructuredDocumentation","src":"6252:262:14","text":" @dev The version parameter for the EIP712 domain.\n NOTE: By default this function reads _version which is an immutable value.\n It only reads from storage if necessary (in case the value is too large to fit in a ShortString)."},"id":3437,"implemented":true,"kind":"function","modifiers":[],"name":"_EIP712Version","nameLocation":"6581:14:14","nodeType":"FunctionDefinition","parameters":{"id":3427,"nodeType":"ParameterList","parameters":[],"src":"6595:2:14"},"returnParameters":{"id":3430,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3429,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3437,"src":"6621:13:14","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":3428,"name":"string","nodeType":"ElementaryTypeName","src":"6621:6:14","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6620:15:14"},"scope":3438,"src":"6572:135:14","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":3439,"src":"1960:4749:14","usedErrors":[1134,1136],"usedEvents":[4]}],"src":"113:6597:14"},"id":14},"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol","exportedSymbols":{"MessageHashUtils":[3524],"Strings":[2863]},"id":3525,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3440,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"123:24:15"},{"absolutePath":"@openzeppelin/contracts/utils/Strings.sol","file":"../Strings.sol","id":3442,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3525,"sourceUnit":2864,"src":"149:39:15","symbolAliases":[{"foreign":{"id":3441,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"157:7:15","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"MessageHashUtils","contractDependencies":[],"contractKind":"library","documentation":{"id":3443,"nodeType":"StructuredDocumentation","src":"190:330:15","text":" @dev Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing.\n The library provides methods for generating a hash of a message that conforms to the\n https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712]\n specifications."},"fullyImplemented":true,"id":3524,"linearizedBaseContracts":[3524],"name":"MessageHashUtils","nameLocation":"529:16:15","nodeType":"ContractDefinition","nodes":[{"body":{"id":3452,"nodeType":"Block","src":"1339:341:15","statements":[{"AST":{"nativeSrc":"1374:300:15","nodeType":"YulBlock","src":"1374:300:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"1395:4:15","nodeType":"YulLiteral","src":"1395:4:15","type":"","value":"0x00"},{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a3332","kind":"string","nativeSrc":"1401:34:15","nodeType":"YulLiteral","src":"1401:34:15","type":"","value":"\u0019Ethereum Signed Message:\n32"}],"functionName":{"name":"mstore","nativeSrc":"1388:6:15","nodeType":"YulIdentifier","src":"1388:6:15"},"nativeSrc":"1388:48:15","nodeType":"YulFunctionCall","src":"1388:48:15"},"nativeSrc":"1388:48:15","nodeType":"YulExpressionStatement","src":"1388:48:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"1497:4:15","nodeType":"YulLiteral","src":"1497:4:15","type":"","value":"0x1c"},{"name":"messageHash","nativeSrc":"1503:11:15","nodeType":"YulIdentifier","src":"1503:11:15"}],"functionName":{"name":"mstore","nativeSrc":"1490:6:15","nodeType":"YulIdentifier","src":"1490:6:15"},"nativeSrc":"1490:25:15","nodeType":"YulFunctionCall","src":"1490:25:15"},"nativeSrc":"1490:25:15","nodeType":"YulExpressionStatement","src":"1490:25:15"},{"nativeSrc":"1569:31:15","nodeType":"YulAssignment","src":"1569:31:15","value":{"arguments":[{"kind":"number","nativeSrc":"1589:4:15","nodeType":"YulLiteral","src":"1589:4:15","type":"","value":"0x00"},{"kind":"number","nativeSrc":"1595:4:15","nodeType":"YulLiteral","src":"1595:4:15","type":"","value":"0x3c"}],"functionName":{"name":"keccak256","nativeSrc":"1579:9:15","nodeType":"YulIdentifier","src":"1579:9:15"},"nativeSrc":"1579:21:15","nodeType":"YulFunctionCall","src":"1579:21:15"},"variableNames":[{"name":"digest","nativeSrc":"1569:6:15","nodeType":"YulIdentifier","src":"1569:6:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3449,"isOffset":false,"isSlot":false,"src":"1569:6:15","valueSize":1},{"declaration":3446,"isOffset":false,"isSlot":false,"src":"1503:11:15","valueSize":1}],"flags":["memory-safe"],"id":3451,"nodeType":"InlineAssembly","src":"1349:325:15"}]},"documentation":{"id":3444,"nodeType":"StructuredDocumentation","src":"552:690:15","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing a bytes32 `messageHash` with\n `\"\\x19Ethereum Signed Message:\\n32\"` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n NOTE: The `messageHash` parameter is intended to be the result of hashing a raw message with\n keccak256, although any bytes32 value can be safely used because the final digest will\n be re-hashed.\n See {ECDSA-recover}."},"id":3453,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"1256:22:15","nodeType":"FunctionDefinition","parameters":{"id":3447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3446,"mutability":"mutable","name":"messageHash","nameLocation":"1287:11:15","nodeType":"VariableDeclaration","scope":3453,"src":"1279:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3445,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1279:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1278:21:15"},"returnParameters":{"id":3450,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3449,"mutability":"mutable","name":"digest","nameLocation":"1331:6:15","nodeType":"VariableDeclaration","scope":3453,"src":"1323:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3448,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1323:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1322:16:15"},"scope":3524,"src":"1247:433:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3478,"nodeType":"Block","src":"2257:143:15","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"19457468657265756d205369676e6564204d6573736167653a0a","id":3465,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2309:32:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},"value":"\u0019Ethereum Signed Message:\n"},{"arguments":[{"arguments":[{"expression":{"id":3470,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3456,"src":"2366:7:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":3471,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2374:6:15","memberName":"length","nodeType":"MemberAccess","src":"2366:14:15","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3468,"name":"Strings","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2863,"src":"2349:7:15","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_6832863_$","typeString":"type(library Strings)"}},"id":3469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2357:8:15","memberName":"toString","nodeType":"MemberAccess","referencedDeclaration":1575,"src":"2349:16:15","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$","typeString":"function (uint256) pure returns (string memory)"}},"id":3472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2349:32:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":3467,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2343:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3466,"name":"bytes","nodeType":"ElementaryTypeName","src":"2343:5:15","typeDescriptions":{}}},"id":3473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2343:39:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":3474,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3456,"src":"2384:7:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_9af2d9c228f6cfddaa6d1e5b94e0bce4ab16bd9a472a2b7fbfd74ebff4c720b4","typeString":"literal_string hex\"19457468657265756d205369676e6564204d6573736167653a0a\""},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2296:5:15","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":3462,"name":"bytes","nodeType":"ElementaryTypeName","src":"2296:5:15","typeDescriptions":{}}},"id":3464,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2302:6:15","memberName":"concat","nodeType":"MemberAccess","src":"2296:12:15","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3475,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2296:96:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3461,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2286:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2286:107:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3460,"id":3477,"nodeType":"Return","src":"2267:126:15"}]},"documentation":{"id":3454,"nodeType":"StructuredDocumentation","src":"1686:480:15","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x45` (`personal_sign` messages).\n The digest is calculated by prefixing an arbitrary `message` with\n `\"\\x19Ethereum Signed Message:\\n\" + len(message)` and hashing the result. It corresponds with the\n hash signed when using the https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sign[`eth_sign`] JSON-RPC method.\n See {ECDSA-recover}."},"id":3479,"implemented":true,"kind":"function","modifiers":[],"name":"toEthSignedMessageHash","nameLocation":"2180:22:15","nodeType":"FunctionDefinition","parameters":{"id":3457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3456,"mutability":"mutable","name":"message","nameLocation":"2216:7:15","nodeType":"VariableDeclaration","scope":3479,"src":"2203:20:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3455,"name":"bytes","nodeType":"ElementaryTypeName","src":"2203:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2202:22:15"},"returnParameters":{"id":3460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3459,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3479,"src":"2248:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3458,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2248:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2247:9:15"},"scope":3524,"src":"2171:229:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3498,"nodeType":"Block","src":"2854:80:15","statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"1900","id":3492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"2898:10:15","typeDescriptions":{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},"value":"\u0019\u0000"},{"id":3493,"name":"validator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3482,"src":"2910:9:15","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":3494,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3484,"src":"2921:4:15","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_73fd5d154550a4a103564cb191928cd38898034de1b952dc21b290898b4b697a","typeString":"literal_string hex\"1900\""},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":3490,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"2881:3:15","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":3491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2885:12:15","memberName":"encodePacked","nodeType":"MemberAccess","src":"2881:16:15","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":3495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2881:45:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":3489,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2871:9:15","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3496,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2871:56:15","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"functionReturnParameters":3488,"id":3497,"nodeType":"Return","src":"2864:63:15"}]},"documentation":{"id":3480,"nodeType":"StructuredDocumentation","src":"2406:332:15","text":" @dev Returns the keccak256 digest of an ERC-191 signed data with version\n `0x00` (data with intended validator).\n The digest is calculated by prefixing an arbitrary `data` with `\"\\x19\\x00\"` and the intended\n `validator` address. Then hashing the result.\n See {ECDSA-recover}."},"id":3499,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"2752:31:15","nodeType":"FunctionDefinition","parameters":{"id":3485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3482,"mutability":"mutable","name":"validator","nameLocation":"2792:9:15","nodeType":"VariableDeclaration","scope":3499,"src":"2784:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3481,"name":"address","nodeType":"ElementaryTypeName","src":"2784:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3484,"mutability":"mutable","name":"data","nameLocation":"2816:4:15","nodeType":"VariableDeclaration","scope":3499,"src":"2803:17:15","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3483,"name":"bytes","nodeType":"ElementaryTypeName","src":"2803:5:15","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2783:38:15"},"returnParameters":{"id":3488,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3487,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3499,"src":"2845:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3486,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2845:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2844:9:15"},"scope":3524,"src":"2743:191:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3510,"nodeType":"Block","src":"3216:216:15","statements":[{"AST":{"nativeSrc":"3251:175:15","nodeType":"YulBlock","src":"3251:175:15","statements":[{"expression":{"arguments":[{"kind":"number","nativeSrc":"3272:4:15","nodeType":"YulLiteral","src":"3272:4:15","type":"","value":"0x00"},{"hexValue":"1900","kind":"string","nativeSrc":"3278:10:15","nodeType":"YulLiteral","src":"3278:10:15","type":"","value":"\u0019\u0000"}],"functionName":{"name":"mstore","nativeSrc":"3265:6:15","nodeType":"YulIdentifier","src":"3265:6:15"},"nativeSrc":"3265:24:15","nodeType":"YulFunctionCall","src":"3265:24:15"},"nativeSrc":"3265:24:15","nodeType":"YulExpressionStatement","src":"3265:24:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3309:4:15","nodeType":"YulLiteral","src":"3309:4:15","type":"","value":"0x02"},{"arguments":[{"kind":"number","nativeSrc":"3319:2:15","nodeType":"YulLiteral","src":"3319:2:15","type":"","value":"96"},{"name":"validator","nativeSrc":"3323:9:15","nodeType":"YulIdentifier","src":"3323:9:15"}],"functionName":{"name":"shl","nativeSrc":"3315:3:15","nodeType":"YulIdentifier","src":"3315:3:15"},"nativeSrc":"3315:18:15","nodeType":"YulFunctionCall","src":"3315:18:15"}],"functionName":{"name":"mstore","nativeSrc":"3302:6:15","nodeType":"YulIdentifier","src":"3302:6:15"},"nativeSrc":"3302:32:15","nodeType":"YulFunctionCall","src":"3302:32:15"},"nativeSrc":"3302:32:15","nodeType":"YulExpressionStatement","src":"3302:32:15"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"3354:4:15","nodeType":"YulLiteral","src":"3354:4:15","type":"","value":"0x16"},{"name":"messageHash","nativeSrc":"3360:11:15","nodeType":"YulIdentifier","src":"3360:11:15"}],"functionName":{"name":"mstore","nativeSrc":"3347:6:15","nodeType":"YulIdentifier","src":"3347:6:15"},"nativeSrc":"3347:25:15","nodeType":"YulFunctionCall","src":"3347:25:15"},"nativeSrc":"3347:25:15","nodeType":"YulExpressionStatement","src":"3347:25:15"},{"nativeSrc":"3385:31:15","nodeType":"YulAssignment","src":"3385:31:15","value":{"arguments":[{"kind":"number","nativeSrc":"3405:4:15","nodeType":"YulLiteral","src":"3405:4:15","type":"","value":"0x00"},{"kind":"number","nativeSrc":"3411:4:15","nodeType":"YulLiteral","src":"3411:4:15","type":"","value":"0x36"}],"functionName":{"name":"keccak256","nativeSrc":"3395:9:15","nodeType":"YulIdentifier","src":"3395:9:15"},"nativeSrc":"3395:21:15","nodeType":"YulFunctionCall","src":"3395:21:15"},"variableNames":[{"name":"digest","nativeSrc":"3385:6:15","nodeType":"YulIdentifier","src":"3385:6:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3507,"isOffset":false,"isSlot":false,"src":"3385:6:15","valueSize":1},{"declaration":3504,"isOffset":false,"isSlot":false,"src":"3360:11:15","valueSize":1},{"declaration":3502,"isOffset":false,"isSlot":false,"src":"3323:9:15","valueSize":1}],"flags":["memory-safe"],"id":3509,"nodeType":"InlineAssembly","src":"3226:200:15"}]},"documentation":{"id":3500,"nodeType":"StructuredDocumentation","src":"2940:129:15","text":" @dev Variant of {toDataWithIntendedValidatorHash-address-bytes} optimized for cases where `data` is a bytes32."},"id":3511,"implemented":true,"kind":"function","modifiers":[],"name":"toDataWithIntendedValidatorHash","nameLocation":"3083:31:15","nodeType":"FunctionDefinition","parameters":{"id":3505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3502,"mutability":"mutable","name":"validator","nameLocation":"3132:9:15","nodeType":"VariableDeclaration","scope":3511,"src":"3124:17:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3501,"name":"address","nodeType":"ElementaryTypeName","src":"3124:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3504,"mutability":"mutable","name":"messageHash","nameLocation":"3159:11:15","nodeType":"VariableDeclaration","scope":3511,"src":"3151:19:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3503,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3151:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3114:62:15"},"returnParameters":{"id":3508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3507,"mutability":"mutable","name":"digest","nameLocation":"3208:6:15","nodeType":"VariableDeclaration","scope":3511,"src":"3200:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3200:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3199:16:15"},"scope":3524,"src":"3074:358:15","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3522,"nodeType":"Block","src":"3983:265:15","statements":[{"AST":{"nativeSrc":"4018:224:15","nodeType":"YulBlock","src":"4018:224:15","statements":[{"nativeSrc":"4032:22:15","nodeType":"YulVariableDeclaration","src":"4032:22:15","value":{"arguments":[{"kind":"number","nativeSrc":"4049:4:15","nodeType":"YulLiteral","src":"4049:4:15","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"4043:5:15","nodeType":"YulIdentifier","src":"4043:5:15"},"nativeSrc":"4043:11:15","nodeType":"YulFunctionCall","src":"4043:11:15"},"variables":[{"name":"ptr","nativeSrc":"4036:3:15","nodeType":"YulTypedName","src":"4036:3:15","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"4074:3:15","nodeType":"YulIdentifier","src":"4074:3:15"},{"hexValue":"1901","kind":"string","nativeSrc":"4079:10:15","nodeType":"YulLiteral","src":"4079:10:15","type":"","value":"\u0019\u0001"}],"functionName":{"name":"mstore","nativeSrc":"4067:6:15","nodeType":"YulIdentifier","src":"4067:6:15"},"nativeSrc":"4067:23:15","nodeType":"YulFunctionCall","src":"4067:23:15"},"nativeSrc":"4067:23:15","nodeType":"YulExpressionStatement","src":"4067:23:15"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4114:3:15","nodeType":"YulIdentifier","src":"4114:3:15"},{"kind":"number","nativeSrc":"4119:4:15","nodeType":"YulLiteral","src":"4119:4:15","type":"","value":"0x02"}],"functionName":{"name":"add","nativeSrc":"4110:3:15","nodeType":"YulIdentifier","src":"4110:3:15"},"nativeSrc":"4110:14:15","nodeType":"YulFunctionCall","src":"4110:14:15"},{"name":"domainSeparator","nativeSrc":"4126:15:15","nodeType":"YulIdentifier","src":"4126:15:15"}],"functionName":{"name":"mstore","nativeSrc":"4103:6:15","nodeType":"YulIdentifier","src":"4103:6:15"},"nativeSrc":"4103:39:15","nodeType":"YulFunctionCall","src":"4103:39:15"},"nativeSrc":"4103:39:15","nodeType":"YulExpressionStatement","src":"4103:39:15"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"4166:3:15","nodeType":"YulIdentifier","src":"4166:3:15"},{"kind":"number","nativeSrc":"4171:4:15","nodeType":"YulLiteral","src":"4171:4:15","type":"","value":"0x22"}],"functionName":{"name":"add","nativeSrc":"4162:3:15","nodeType":"YulIdentifier","src":"4162:3:15"},"nativeSrc":"4162:14:15","nodeType":"YulFunctionCall","src":"4162:14:15"},{"name":"structHash","nativeSrc":"4178:10:15","nodeType":"YulIdentifier","src":"4178:10:15"}],"functionName":{"name":"mstore","nativeSrc":"4155:6:15","nodeType":"YulIdentifier","src":"4155:6:15"},"nativeSrc":"4155:34:15","nodeType":"YulFunctionCall","src":"4155:34:15"},"nativeSrc":"4155:34:15","nodeType":"YulExpressionStatement","src":"4155:34:15"},{"nativeSrc":"4202:30:15","nodeType":"YulAssignment","src":"4202:30:15","value":{"arguments":[{"name":"ptr","nativeSrc":"4222:3:15","nodeType":"YulIdentifier","src":"4222:3:15"},{"kind":"number","nativeSrc":"4227:4:15","nodeType":"YulLiteral","src":"4227:4:15","type":"","value":"0x42"}],"functionName":{"name":"keccak256","nativeSrc":"4212:9:15","nodeType":"YulIdentifier","src":"4212:9:15"},"nativeSrc":"4212:20:15","nodeType":"YulFunctionCall","src":"4212:20:15"},"variableNames":[{"name":"digest","nativeSrc":"4202:6:15","nodeType":"YulIdentifier","src":"4202:6:15"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3519,"isOffset":false,"isSlot":false,"src":"4202:6:15","valueSize":1},{"declaration":3514,"isOffset":false,"isSlot":false,"src":"4126:15:15","valueSize":1},{"declaration":3516,"isOffset":false,"isSlot":false,"src":"4178:10:15","valueSize":1}],"flags":["memory-safe"],"id":3521,"nodeType":"InlineAssembly","src":"3993:249:15"}]},"documentation":{"id":3512,"nodeType":"StructuredDocumentation","src":"3438:431:15","text":" @dev Returns the keccak256 digest of an EIP-712 typed data (ERC-191 version `0x01`).\n The digest is calculated from a `domainSeparator` and a `structHash`, by prefixing them with\n `\\x19\\x01` and hashing the result. It corresponds to the hash signed by the\n https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] JSON-RPC method as part of EIP-712.\n See {ECDSA-recover}."},"id":3523,"implemented":true,"kind":"function","modifiers":[],"name":"toTypedDataHash","nameLocation":"3883:15:15","nodeType":"FunctionDefinition","parameters":{"id":3517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3514,"mutability":"mutable","name":"domainSeparator","nameLocation":"3907:15:15","nodeType":"VariableDeclaration","scope":3523,"src":"3899:23:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3513,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3899:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":3516,"mutability":"mutable","name":"structHash","nameLocation":"3932:10:15","nodeType":"VariableDeclaration","scope":3523,"src":"3924:18:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3515,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3924:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3898:45:15"},"returnParameters":{"id":3520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3519,"mutability":"mutable","name":"digest","nameLocation":"3975:6:15","nodeType":"VariableDeclaration","scope":3523,"src":"3967:14:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3518,"name":"bytes32","nodeType":"ElementaryTypeName","src":"3967:7:15","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"3966:16:15"},"scope":3524,"src":"3874:374:15","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":3525,"src":"521:3729:15","usedErrors":[],"usedEvents":[]}],"src":"123:4128:15"},"id":15},"@openzeppelin/contracts/utils/math/Math.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/Math.sol","exportedSymbols":{"Math":[5145],"Panic":[1120],"SafeCast":[6910]},"id":5146,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3526,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"103:24:16"},{"absolutePath":"@openzeppelin/contracts/utils/Panic.sol","file":"../Panic.sol","id":3528,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5146,"sourceUnit":1121,"src":"129:35:16","symbolAliases":[{"foreign":{"id":3527,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"137:5:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":3530,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":5146,"sourceUnit":6911,"src":"165:40:16","symbolAliases":[{"foreign":{"id":3529,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"173:8:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"Math","contractDependencies":[],"contractKind":"library","documentation":{"id":3531,"nodeType":"StructuredDocumentation","src":"207:73:16","text":" @dev Standard math utilities missing in the Solidity language."},"fullyImplemented":true,"id":5145,"linearizedBaseContracts":[5145],"name":"Math","nameLocation":"289:4:16","nodeType":"ContractDefinition","nodes":[{"canonicalName":"Math.Rounding","id":3536,"members":[{"id":3532,"name":"Floor","nameLocation":"324:5:16","nodeType":"EnumValue","src":"324:5:16"},{"id":3533,"name":"Ceil","nameLocation":"367:4:16","nodeType":"EnumValue","src":"367:4:16"},{"id":3534,"name":"Trunc","nameLocation":"409:5:16","nodeType":"EnumValue","src":"409:5:16"},{"id":3535,"name":"Expand","nameLocation":"439:6:16","nodeType":"EnumValue","src":"439:6:16"}],"name":"Rounding","nameLocation":"305:8:16","nodeType":"EnumDefinition","src":"300:169:16"},{"body":{"id":3549,"nodeType":"Block","src":"731:112:16","statements":[{"AST":{"nativeSrc":"766:71:16","nodeType":"YulBlock","src":"766:71:16","statements":[{"nativeSrc":"780:16:16","nodeType":"YulAssignment","src":"780:16:16","value":{"arguments":[{"name":"a","nativeSrc":"791:1:16","nodeType":"YulIdentifier","src":"791:1:16"},{"name":"b","nativeSrc":"794:1:16","nodeType":"YulIdentifier","src":"794:1:16"}],"functionName":{"name":"add","nativeSrc":"787:3:16","nodeType":"YulIdentifier","src":"787:3:16"},"nativeSrc":"787:9:16","nodeType":"YulFunctionCall","src":"787:9:16"},"variableNames":[{"name":"low","nativeSrc":"780:3:16","nodeType":"YulIdentifier","src":"780:3:16"}]},{"nativeSrc":"809:18:16","nodeType":"YulAssignment","src":"809:18:16","value":{"arguments":[{"name":"low","nativeSrc":"820:3:16","nodeType":"YulIdentifier","src":"820:3:16"},{"name":"a","nativeSrc":"825:1:16","nodeType":"YulIdentifier","src":"825:1:16"}],"functionName":{"name":"lt","nativeSrc":"817:2:16","nodeType":"YulIdentifier","src":"817:2:16"},"nativeSrc":"817:10:16","nodeType":"YulFunctionCall","src":"817:10:16"},"variableNames":[{"name":"high","nativeSrc":"809:4:16","nodeType":"YulIdentifier","src":"809:4:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3539,"isOffset":false,"isSlot":false,"src":"791:1:16","valueSize":1},{"declaration":3539,"isOffset":false,"isSlot":false,"src":"825:1:16","valueSize":1},{"declaration":3541,"isOffset":false,"isSlot":false,"src":"794:1:16","valueSize":1},{"declaration":3544,"isOffset":false,"isSlot":false,"src":"809:4:16","valueSize":1},{"declaration":3546,"isOffset":false,"isSlot":false,"src":"780:3:16","valueSize":1},{"declaration":3546,"isOffset":false,"isSlot":false,"src":"820:3:16","valueSize":1}],"flags":["memory-safe"],"id":3548,"nodeType":"InlineAssembly","src":"741:96:16"}]},"documentation":{"id":3537,"nodeType":"StructuredDocumentation","src":"475:163:16","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":3550,"implemented":true,"kind":"function","modifiers":[],"name":"add512","nameLocation":"652:6:16","nodeType":"FunctionDefinition","parameters":{"id":3542,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3539,"mutability":"mutable","name":"a","nameLocation":"667:1:16","nodeType":"VariableDeclaration","scope":3550,"src":"659:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3538,"name":"uint256","nodeType":"ElementaryTypeName","src":"659:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3541,"mutability":"mutable","name":"b","nameLocation":"678:1:16","nodeType":"VariableDeclaration","scope":3550,"src":"670:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3540,"name":"uint256","nodeType":"ElementaryTypeName","src":"670:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"658:22:16"},"returnParameters":{"id":3547,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3544,"mutability":"mutable","name":"high","nameLocation":"712:4:16","nodeType":"VariableDeclaration","scope":3550,"src":"704:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3543,"name":"uint256","nodeType":"ElementaryTypeName","src":"704:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3546,"mutability":"mutable","name":"low","nameLocation":"726:3:16","nodeType":"VariableDeclaration","scope":3550,"src":"718:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3545,"name":"uint256","nodeType":"ElementaryTypeName","src":"718:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"703:27:16"},"scope":5145,"src":"643:200:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3563,"nodeType":"Block","src":"1115:462:16","statements":[{"AST":{"nativeSrc":"1437:134:16","nodeType":"YulBlock","src":"1437:134:16","statements":[{"nativeSrc":"1451:30:16","nodeType":"YulVariableDeclaration","src":"1451:30:16","value":{"arguments":[{"name":"a","nativeSrc":"1468:1:16","nodeType":"YulIdentifier","src":"1468:1:16"},{"name":"b","nativeSrc":"1471:1:16","nodeType":"YulIdentifier","src":"1471:1:16"},{"arguments":[{"kind":"number","nativeSrc":"1478:1:16","nodeType":"YulLiteral","src":"1478:1:16","type":"","value":"0"}],"functionName":{"name":"not","nativeSrc":"1474:3:16","nodeType":"YulIdentifier","src":"1474:3:16"},"nativeSrc":"1474:6:16","nodeType":"YulFunctionCall","src":"1474:6:16"}],"functionName":{"name":"mulmod","nativeSrc":"1461:6:16","nodeType":"YulIdentifier","src":"1461:6:16"},"nativeSrc":"1461:20:16","nodeType":"YulFunctionCall","src":"1461:20:16"},"variables":[{"name":"mm","nativeSrc":"1455:2:16","nodeType":"YulTypedName","src":"1455:2:16","type":""}]},{"nativeSrc":"1494:16:16","nodeType":"YulAssignment","src":"1494:16:16","value":{"arguments":[{"name":"a","nativeSrc":"1505:1:16","nodeType":"YulIdentifier","src":"1505:1:16"},{"name":"b","nativeSrc":"1508:1:16","nodeType":"YulIdentifier","src":"1508:1:16"}],"functionName":{"name":"mul","nativeSrc":"1501:3:16","nodeType":"YulIdentifier","src":"1501:3:16"},"nativeSrc":"1501:9:16","nodeType":"YulFunctionCall","src":"1501:9:16"},"variableNames":[{"name":"low","nativeSrc":"1494:3:16","nodeType":"YulIdentifier","src":"1494:3:16"}]},{"nativeSrc":"1523:38:16","nodeType":"YulAssignment","src":"1523:38:16","value":{"arguments":[{"arguments":[{"name":"mm","nativeSrc":"1539:2:16","nodeType":"YulIdentifier","src":"1539:2:16"},{"name":"low","nativeSrc":"1543:3:16","nodeType":"YulIdentifier","src":"1543:3:16"}],"functionName":{"name":"sub","nativeSrc":"1535:3:16","nodeType":"YulIdentifier","src":"1535:3:16"},"nativeSrc":"1535:12:16","nodeType":"YulFunctionCall","src":"1535:12:16"},{"arguments":[{"name":"mm","nativeSrc":"1552:2:16","nodeType":"YulIdentifier","src":"1552:2:16"},{"name":"low","nativeSrc":"1556:3:16","nodeType":"YulIdentifier","src":"1556:3:16"}],"functionName":{"name":"lt","nativeSrc":"1549:2:16","nodeType":"YulIdentifier","src":"1549:2:16"},"nativeSrc":"1549:11:16","nodeType":"YulFunctionCall","src":"1549:11:16"}],"functionName":{"name":"sub","nativeSrc":"1531:3:16","nodeType":"YulIdentifier","src":"1531:3:16"},"nativeSrc":"1531:30:16","nodeType":"YulFunctionCall","src":"1531:30:16"},"variableNames":[{"name":"high","nativeSrc":"1523:4:16","nodeType":"YulIdentifier","src":"1523:4:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3553,"isOffset":false,"isSlot":false,"src":"1468:1:16","valueSize":1},{"declaration":3553,"isOffset":false,"isSlot":false,"src":"1505:1:16","valueSize":1},{"declaration":3555,"isOffset":false,"isSlot":false,"src":"1471:1:16","valueSize":1},{"declaration":3555,"isOffset":false,"isSlot":false,"src":"1508:1:16","valueSize":1},{"declaration":3558,"isOffset":false,"isSlot":false,"src":"1523:4:16","valueSize":1},{"declaration":3560,"isOffset":false,"isSlot":false,"src":"1494:3:16","valueSize":1},{"declaration":3560,"isOffset":false,"isSlot":false,"src":"1543:3:16","valueSize":1},{"declaration":3560,"isOffset":false,"isSlot":false,"src":"1556:3:16","valueSize":1}],"flags":["memory-safe"],"id":3562,"nodeType":"InlineAssembly","src":"1412:159:16"}]},"documentation":{"id":3551,"nodeType":"StructuredDocumentation","src":"849:173:16","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":3564,"implemented":true,"kind":"function","modifiers":[],"name":"mul512","nameLocation":"1036:6:16","nodeType":"FunctionDefinition","parameters":{"id":3556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3553,"mutability":"mutable","name":"a","nameLocation":"1051:1:16","nodeType":"VariableDeclaration","scope":3564,"src":"1043:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3552,"name":"uint256","nodeType":"ElementaryTypeName","src":"1043:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3555,"mutability":"mutable","name":"b","nameLocation":"1062:1:16","nodeType":"VariableDeclaration","scope":3564,"src":"1054:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3554,"name":"uint256","nodeType":"ElementaryTypeName","src":"1054:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1042:22:16"},"returnParameters":{"id":3561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3558,"mutability":"mutable","name":"high","nameLocation":"1096:4:16","nodeType":"VariableDeclaration","scope":3564,"src":"1088:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3557,"name":"uint256","nodeType":"ElementaryTypeName","src":"1088:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3560,"mutability":"mutable","name":"low","nameLocation":"1110:3:16","nodeType":"VariableDeclaration","scope":3564,"src":"1102:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3559,"name":"uint256","nodeType":"ElementaryTypeName","src":"1102:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1087:27:16"},"scope":5145,"src":"1027:550:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3598,"nodeType":"Block","src":"1784:149:16","statements":[{"id":3597,"nodeType":"UncheckedBlock","src":"1794:133:16","statements":[{"assignments":[3577],"declarations":[{"constant":false,"id":3577,"mutability":"mutable","name":"c","nameLocation":"1826:1:16","nodeType":"VariableDeclaration","scope":3597,"src":"1818:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1818:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3581,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3578,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"1830:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":3579,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3569,"src":"1834:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1830:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"1818:17:16"},{"expression":{"id":3586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3582,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"1849:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3583,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3577,"src":"1859:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":3584,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3567,"src":"1864:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1859:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1849:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3587,"nodeType":"ExpressionStatement","src":"1849:16:16"},{"expression":{"id":3595,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3588,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3574,"src":"1879:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3589,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3577,"src":"1888:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3592,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3572,"src":"1908:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3590,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"1892:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_6976910_$","typeString":"type(library SafeCast)"}},"id":3591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1901:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"1892:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1892:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1888:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1879:37:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3596,"nodeType":"ExpressionStatement","src":"1879:37:16"}]}]},"documentation":{"id":3565,"nodeType":"StructuredDocumentation","src":"1583:105:16","text":" @dev Returns the addition of two unsigned integers, with a success flag (no overflow)."},"id":3599,"implemented":true,"kind":"function","modifiers":[],"name":"tryAdd","nameLocation":"1702:6:16","nodeType":"FunctionDefinition","parameters":{"id":3570,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3567,"mutability":"mutable","name":"a","nameLocation":"1717:1:16","nodeType":"VariableDeclaration","scope":3599,"src":"1709:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3566,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3569,"mutability":"mutable","name":"b","nameLocation":"1728:1:16","nodeType":"VariableDeclaration","scope":3599,"src":"1720:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3568,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1708:22:16"},"returnParameters":{"id":3575,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3572,"mutability":"mutable","name":"success","nameLocation":"1759:7:16","nodeType":"VariableDeclaration","scope":3599,"src":"1754:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3571,"name":"bool","nodeType":"ElementaryTypeName","src":"1754:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3574,"mutability":"mutable","name":"result","nameLocation":"1776:6:16","nodeType":"VariableDeclaration","scope":3599,"src":"1768:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3573,"name":"uint256","nodeType":"ElementaryTypeName","src":"1768:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1753:30:16"},"scope":5145,"src":"1693:240:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3633,"nodeType":"Block","src":"2143:149:16","statements":[{"id":3632,"nodeType":"UncheckedBlock","src":"2153:133:16","statements":[{"assignments":[3612],"declarations":[{"constant":false,"id":3612,"mutability":"mutable","name":"c","nameLocation":"2185:1:16","nodeType":"VariableDeclaration","scope":3632,"src":"2177:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3611,"name":"uint256","nodeType":"ElementaryTypeName","src":"2177:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3616,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3613,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"2189:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3614,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3604,"src":"2193:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2189:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2177:17:16"},{"expression":{"id":3621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3617,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3607,"src":"2208:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3618,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"2218:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3619,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3602,"src":"2223:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2218:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2208:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3622,"nodeType":"ExpressionStatement","src":"2208:16:16"},{"expression":{"id":3630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3623,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3609,"src":"2238:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3624,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3612,"src":"2247:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3627,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3607,"src":"2267:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3625,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"2251:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7016910_$","typeString":"type(library SafeCast)"}},"id":3626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2260:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"2251:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2251:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2247:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2238:37:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3631,"nodeType":"ExpressionStatement","src":"2238:37:16"}]}]},"documentation":{"id":3600,"nodeType":"StructuredDocumentation","src":"1939:108:16","text":" @dev Returns the subtraction of two unsigned integers, with a success flag (no overflow)."},"id":3634,"implemented":true,"kind":"function","modifiers":[],"name":"trySub","nameLocation":"2061:6:16","nodeType":"FunctionDefinition","parameters":{"id":3605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3602,"mutability":"mutable","name":"a","nameLocation":"2076:1:16","nodeType":"VariableDeclaration","scope":3634,"src":"2068:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3601,"name":"uint256","nodeType":"ElementaryTypeName","src":"2068:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3604,"mutability":"mutable","name":"b","nameLocation":"2087:1:16","nodeType":"VariableDeclaration","scope":3634,"src":"2079:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3603,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2067:22:16"},"returnParameters":{"id":3610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3607,"mutability":"mutable","name":"success","nameLocation":"2118:7:16","nodeType":"VariableDeclaration","scope":3634,"src":"2113:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3606,"name":"bool","nodeType":"ElementaryTypeName","src":"2113:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3609,"mutability":"mutable","name":"result","nameLocation":"2135:6:16","nodeType":"VariableDeclaration","scope":3634,"src":"2127:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3608,"name":"uint256","nodeType":"ElementaryTypeName","src":"2127:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2112:30:16"},"scope":5145,"src":"2052:240:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3663,"nodeType":"Block","src":"2505:391:16","statements":[{"id":3662,"nodeType":"UncheckedBlock","src":"2515:375:16","statements":[{"assignments":[3647],"declarations":[{"constant":false,"id":3647,"mutability":"mutable","name":"c","nameLocation":"2547:1:16","nodeType":"VariableDeclaration","scope":3662,"src":"2539:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3646,"name":"uint256","nodeType":"ElementaryTypeName","src":"2539:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3651,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3650,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3648,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3637,"src":"2551:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3649,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3639,"src":"2555:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2551:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2539:17:16"},{"AST":{"nativeSrc":"2595:188:16","nodeType":"YulBlock","src":"2595:188:16","statements":[{"nativeSrc":"2727:42:16","nodeType":"YulAssignment","src":"2727:42:16","value":{"arguments":[{"arguments":[{"arguments":[{"name":"c","nativeSrc":"2748:1:16","nodeType":"YulIdentifier","src":"2748:1:16"},{"name":"a","nativeSrc":"2751:1:16","nodeType":"YulIdentifier","src":"2751:1:16"}],"functionName":{"name":"div","nativeSrc":"2744:3:16","nodeType":"YulIdentifier","src":"2744:3:16"},"nativeSrc":"2744:9:16","nodeType":"YulFunctionCall","src":"2744:9:16"},{"name":"b","nativeSrc":"2755:1:16","nodeType":"YulIdentifier","src":"2755:1:16"}],"functionName":{"name":"eq","nativeSrc":"2741:2:16","nodeType":"YulIdentifier","src":"2741:2:16"},"nativeSrc":"2741:16:16","nodeType":"YulFunctionCall","src":"2741:16:16"},{"arguments":[{"name":"a","nativeSrc":"2766:1:16","nodeType":"YulIdentifier","src":"2766:1:16"}],"functionName":{"name":"iszero","nativeSrc":"2759:6:16","nodeType":"YulIdentifier","src":"2759:6:16"},"nativeSrc":"2759:9:16","nodeType":"YulFunctionCall","src":"2759:9:16"}],"functionName":{"name":"or","nativeSrc":"2738:2:16","nodeType":"YulIdentifier","src":"2738:2:16"},"nativeSrc":"2738:31:16","nodeType":"YulFunctionCall","src":"2738:31:16"},"variableNames":[{"name":"success","nativeSrc":"2727:7:16","nodeType":"YulIdentifier","src":"2727:7:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3637,"isOffset":false,"isSlot":false,"src":"2751:1:16","valueSize":1},{"declaration":3637,"isOffset":false,"isSlot":false,"src":"2766:1:16","valueSize":1},{"declaration":3639,"isOffset":false,"isSlot":false,"src":"2755:1:16","valueSize":1},{"declaration":3647,"isOffset":false,"isSlot":false,"src":"2748:1:16","valueSize":1},{"declaration":3642,"isOffset":false,"isSlot":false,"src":"2727:7:16","valueSize":1}],"flags":["memory-safe"],"id":3652,"nodeType":"InlineAssembly","src":"2570:213:16"},{"expression":{"id":3660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3653,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3644,"src":"2842:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3654,"name":"c","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3647,"src":"2851:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3657,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3642,"src":"2871:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3655,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"2855:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7056910_$","typeString":"type(library SafeCast)"}},"id":3656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2864:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"2855:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3658,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2855:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2851:28:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2842:37:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3661,"nodeType":"ExpressionStatement","src":"2842:37:16"}]}]},"documentation":{"id":3635,"nodeType":"StructuredDocumentation","src":"2298:111:16","text":" @dev Returns the multiplication of two unsigned integers, with a success flag (no overflow)."},"id":3664,"implemented":true,"kind":"function","modifiers":[],"name":"tryMul","nameLocation":"2423:6:16","nodeType":"FunctionDefinition","parameters":{"id":3640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3637,"mutability":"mutable","name":"a","nameLocation":"2438:1:16","nodeType":"VariableDeclaration","scope":3664,"src":"2430:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3636,"name":"uint256","nodeType":"ElementaryTypeName","src":"2430:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3639,"mutability":"mutable","name":"b","nameLocation":"2449:1:16","nodeType":"VariableDeclaration","scope":3664,"src":"2441:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3638,"name":"uint256","nodeType":"ElementaryTypeName","src":"2441:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2429:22:16"},"returnParameters":{"id":3645,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3642,"mutability":"mutable","name":"success","nameLocation":"2480:7:16","nodeType":"VariableDeclaration","scope":3664,"src":"2475:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3641,"name":"bool","nodeType":"ElementaryTypeName","src":"2475:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3644,"mutability":"mutable","name":"result","nameLocation":"2497:6:16","nodeType":"VariableDeclaration","scope":3664,"src":"2489:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3643,"name":"uint256","nodeType":"ElementaryTypeName","src":"2489:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2474:30:16"},"scope":5145,"src":"2414:482:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3684,"nodeType":"Block","src":"3111:231:16","statements":[{"id":3683,"nodeType":"UncheckedBlock","src":"3121:215:16","statements":[{"expression":{"id":3680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3676,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3672,"src":"3145:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3679,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3677,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3669,"src":"3155:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3678,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3159:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3155:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3145:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3681,"nodeType":"ExpressionStatement","src":"3145:15:16"},{"AST":{"nativeSrc":"3199:127:16","nodeType":"YulBlock","src":"3199:127:16","statements":[{"nativeSrc":"3293:19:16","nodeType":"YulAssignment","src":"3293:19:16","value":{"arguments":[{"name":"a","nativeSrc":"3307:1:16","nodeType":"YulIdentifier","src":"3307:1:16"},{"name":"b","nativeSrc":"3310:1:16","nodeType":"YulIdentifier","src":"3310:1:16"}],"functionName":{"name":"div","nativeSrc":"3303:3:16","nodeType":"YulIdentifier","src":"3303:3:16"},"nativeSrc":"3303:9:16","nodeType":"YulFunctionCall","src":"3303:9:16"},"variableNames":[{"name":"result","nativeSrc":"3293:6:16","nodeType":"YulIdentifier","src":"3293:6:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3667,"isOffset":false,"isSlot":false,"src":"3307:1:16","valueSize":1},{"declaration":3669,"isOffset":false,"isSlot":false,"src":"3310:1:16","valueSize":1},{"declaration":3674,"isOffset":false,"isSlot":false,"src":"3293:6:16","valueSize":1}],"flags":["memory-safe"],"id":3682,"nodeType":"InlineAssembly","src":"3174:152:16"}]}]},"documentation":{"id":3665,"nodeType":"StructuredDocumentation","src":"2902:113:16","text":" @dev Returns the division of two unsigned integers, with a success flag (no division by zero)."},"id":3685,"implemented":true,"kind":"function","modifiers":[],"name":"tryDiv","nameLocation":"3029:6:16","nodeType":"FunctionDefinition","parameters":{"id":3670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3667,"mutability":"mutable","name":"a","nameLocation":"3044:1:16","nodeType":"VariableDeclaration","scope":3685,"src":"3036:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3666,"name":"uint256","nodeType":"ElementaryTypeName","src":"3036:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3669,"mutability":"mutable","name":"b","nameLocation":"3055:1:16","nodeType":"VariableDeclaration","scope":3685,"src":"3047:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3668,"name":"uint256","nodeType":"ElementaryTypeName","src":"3047:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3035:22:16"},"returnParameters":{"id":3675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3672,"mutability":"mutable","name":"success","nameLocation":"3086:7:16","nodeType":"VariableDeclaration","scope":3685,"src":"3081:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3671,"name":"bool","nodeType":"ElementaryTypeName","src":"3081:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3674,"mutability":"mutable","name":"result","nameLocation":"3103:6:16","nodeType":"VariableDeclaration","scope":3685,"src":"3095:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3673,"name":"uint256","nodeType":"ElementaryTypeName","src":"3095:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3080:30:16"},"scope":5145,"src":"3020:322:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3705,"nodeType":"Block","src":"3567:231:16","statements":[{"id":3704,"nodeType":"UncheckedBlock","src":"3577:215:16","statements":[{"expression":{"id":3701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3697,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3693,"src":"3601:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3698,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3690,"src":"3611:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3699,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3615:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3611:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3601:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3702,"nodeType":"ExpressionStatement","src":"3601:15:16"},{"AST":{"nativeSrc":"3655:127:16","nodeType":"YulBlock","src":"3655:127:16","statements":[{"nativeSrc":"3749:19:16","nodeType":"YulAssignment","src":"3749:19:16","value":{"arguments":[{"name":"a","nativeSrc":"3763:1:16","nodeType":"YulIdentifier","src":"3763:1:16"},{"name":"b","nativeSrc":"3766:1:16","nodeType":"YulIdentifier","src":"3766:1:16"}],"functionName":{"name":"mod","nativeSrc":"3759:3:16","nodeType":"YulIdentifier","src":"3759:3:16"},"nativeSrc":"3759:9:16","nodeType":"YulFunctionCall","src":"3759:9:16"},"variableNames":[{"name":"result","nativeSrc":"3749:6:16","nodeType":"YulIdentifier","src":"3749:6:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3688,"isOffset":false,"isSlot":false,"src":"3763:1:16","valueSize":1},{"declaration":3690,"isOffset":false,"isSlot":false,"src":"3766:1:16","valueSize":1},{"declaration":3695,"isOffset":false,"isSlot":false,"src":"3749:6:16","valueSize":1}],"flags":["memory-safe"],"id":3703,"nodeType":"InlineAssembly","src":"3630:152:16"}]}]},"documentation":{"id":3686,"nodeType":"StructuredDocumentation","src":"3348:123:16","text":" @dev Returns the remainder of dividing two unsigned integers, with a success flag (no division by zero)."},"id":3706,"implemented":true,"kind":"function","modifiers":[],"name":"tryMod","nameLocation":"3485:6:16","nodeType":"FunctionDefinition","parameters":{"id":3691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3688,"mutability":"mutable","name":"a","nameLocation":"3500:1:16","nodeType":"VariableDeclaration","scope":3706,"src":"3492:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3687,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3690,"mutability":"mutable","name":"b","nameLocation":"3511:1:16","nodeType":"VariableDeclaration","scope":3706,"src":"3503:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3689,"name":"uint256","nodeType":"ElementaryTypeName","src":"3503:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3491:22:16"},"returnParameters":{"id":3696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3693,"mutability":"mutable","name":"success","nameLocation":"3542:7:16","nodeType":"VariableDeclaration","scope":3706,"src":"3537:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3692,"name":"bool","nodeType":"ElementaryTypeName","src":"3537:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3695,"mutability":"mutable","name":"result","nameLocation":"3559:6:16","nodeType":"VariableDeclaration","scope":3706,"src":"3551:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3694,"name":"uint256","nodeType":"ElementaryTypeName","src":"3551:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3536:30:16"},"scope":5145,"src":"3476:322:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3735,"nodeType":"Block","src":"3989:122:16","statements":[{"assignments":[3717,3719],"declarations":[{"constant":false,"id":3717,"mutability":"mutable","name":"success","nameLocation":"4005:7:16","nodeType":"VariableDeclaration","scope":3735,"src":"4000:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3716,"name":"bool","nodeType":"ElementaryTypeName","src":"4000:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3719,"mutability":"mutable","name":"result","nameLocation":"4022:6:16","nodeType":"VariableDeclaration","scope":3735,"src":"4014:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3718,"name":"uint256","nodeType":"ElementaryTypeName","src":"4014:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3724,"initialValue":{"arguments":[{"id":3721,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3709,"src":"4039:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3722,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3711,"src":"4042:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3720,"name":"tryAdd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3599,"src":"4032:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4032:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"3999:45:16"},{"expression":{"arguments":[{"id":3726,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3717,"src":"4069:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3727,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3719,"src":"4078:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3730,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4091:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3729,"name":"uint256","nodeType":"ElementaryTypeName","src":"4091:7:16","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3728,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4086:4:16","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4086:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4100:3:16","memberName":"max","nodeType":"MemberAccess","src":"4086:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3725,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"4061:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3733,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4061:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3715,"id":3734,"nodeType":"Return","src":"4054:50:16"}]},"documentation":{"id":3707,"nodeType":"StructuredDocumentation","src":"3804:103:16","text":" @dev Unsigned saturating addition, bounds to `2ยฒโตโถ - 1` instead of overflowing."},"id":3736,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingAdd","nameLocation":"3921:13:16","nodeType":"FunctionDefinition","parameters":{"id":3712,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3709,"mutability":"mutable","name":"a","nameLocation":"3943:1:16","nodeType":"VariableDeclaration","scope":3736,"src":"3935:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3708,"name":"uint256","nodeType":"ElementaryTypeName","src":"3935:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3711,"mutability":"mutable","name":"b","nameLocation":"3954:1:16","nodeType":"VariableDeclaration","scope":3736,"src":"3946:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3710,"name":"uint256","nodeType":"ElementaryTypeName","src":"3946:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3934:22:16"},"returnParameters":{"id":3715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3736,"src":"3980:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3713,"name":"uint256","nodeType":"ElementaryTypeName","src":"3980:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3979:9:16"},"scope":5145,"src":"3912:199:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3755,"nodeType":"Block","src":"4294:73:16","statements":[{"assignments":[null,3747],"declarations":[null,{"constant":false,"id":3747,"mutability":"mutable","name":"result","nameLocation":"4315:6:16","nodeType":"VariableDeclaration","scope":3755,"src":"4307:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3746,"name":"uint256","nodeType":"ElementaryTypeName","src":"4307:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3752,"initialValue":{"arguments":[{"id":3749,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3739,"src":"4332:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3750,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3741,"src":"4335:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3748,"name":"trySub","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3634,"src":"4325:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4325:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4304:33:16"},{"expression":{"id":3753,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3747,"src":"4354:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3745,"id":3754,"nodeType":"Return","src":"4347:13:16"}]},"documentation":{"id":3737,"nodeType":"StructuredDocumentation","src":"4117:95:16","text":" @dev Unsigned saturating subtraction, bounds to zero instead of overflowing."},"id":3756,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingSub","nameLocation":"4226:13:16","nodeType":"FunctionDefinition","parameters":{"id":3742,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3739,"mutability":"mutable","name":"a","nameLocation":"4248:1:16","nodeType":"VariableDeclaration","scope":3756,"src":"4240:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3738,"name":"uint256","nodeType":"ElementaryTypeName","src":"4240:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3741,"mutability":"mutable","name":"b","nameLocation":"4259:1:16","nodeType":"VariableDeclaration","scope":3756,"src":"4251:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3740,"name":"uint256","nodeType":"ElementaryTypeName","src":"4251:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4239:22:16"},"returnParameters":{"id":3745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3744,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3756,"src":"4285:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3743,"name":"uint256","nodeType":"ElementaryTypeName","src":"4285:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4284:9:16"},"scope":5145,"src":"4217:150:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3785,"nodeType":"Block","src":"4564:122:16","statements":[{"assignments":[3767,3769],"declarations":[{"constant":false,"id":3767,"mutability":"mutable","name":"success","nameLocation":"4580:7:16","nodeType":"VariableDeclaration","scope":3785,"src":"4575:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3766,"name":"bool","nodeType":"ElementaryTypeName","src":"4575:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3769,"mutability":"mutable","name":"result","nameLocation":"4597:6:16","nodeType":"VariableDeclaration","scope":3785,"src":"4589:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3768,"name":"uint256","nodeType":"ElementaryTypeName","src":"4589:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3774,"initialValue":{"arguments":[{"id":3771,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3759,"src":"4614:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3772,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3761,"src":"4617:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3770,"name":"tryMul","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3664,"src":"4607:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_bool_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (bool,uint256)"}},"id":3773,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4607:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"4574:45:16"},{"expression":{"arguments":[{"id":3776,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3767,"src":"4644:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3777,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3769,"src":"4653:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"arguments":[{"id":3780,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4666:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3779,"name":"uint256","nodeType":"ElementaryTypeName","src":"4666:7:16","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":3778,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4661:4:16","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":3781,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4661:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":3782,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4675:3:16","memberName":"max","nodeType":"MemberAccess","src":"4661:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3775,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"4636:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4636:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3765,"id":3784,"nodeType":"Return","src":"4629:50:16"}]},"documentation":{"id":3757,"nodeType":"StructuredDocumentation","src":"4373:109:16","text":" @dev Unsigned saturating multiplication, bounds to `2ยฒโตโถ - 1` instead of overflowing."},"id":3786,"implemented":true,"kind":"function","modifiers":[],"name":"saturatingMul","nameLocation":"4496:13:16","nodeType":"FunctionDefinition","parameters":{"id":3762,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3759,"mutability":"mutable","name":"a","nameLocation":"4518:1:16","nodeType":"VariableDeclaration","scope":3786,"src":"4510:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3758,"name":"uint256","nodeType":"ElementaryTypeName","src":"4510:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3761,"mutability":"mutable","name":"b","nameLocation":"4529:1:16","nodeType":"VariableDeclaration","scope":3786,"src":"4521:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3760,"name":"uint256","nodeType":"ElementaryTypeName","src":"4521:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4509:22:16"},"returnParameters":{"id":3765,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3764,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3786,"src":"4555:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3763,"name":"uint256","nodeType":"ElementaryTypeName","src":"4555:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4554:9:16"},"scope":5145,"src":"4487:199:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3812,"nodeType":"Block","src":"5158:207:16","statements":[{"id":3811,"nodeType":"UncheckedBlock","src":"5168:191:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3798,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"5306:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3807,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3799,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3791,"src":"5312:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3800,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3793,"src":"5316:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5312:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3802,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5311:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":3805,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3789,"src":"5337:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3803,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"5321:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6910_$","typeString":"type(library SafeCast)"}},"id":3804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5330:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"5321:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5321:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5311:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3808,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5310:38:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5306:42:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3797,"id":3810,"nodeType":"Return","src":"5299:49:16"}]}]},"documentation":{"id":3787,"nodeType":"StructuredDocumentation","src":"4692:374:16","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":3813,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"5080:7:16","nodeType":"FunctionDefinition","parameters":{"id":3794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3789,"mutability":"mutable","name":"condition","nameLocation":"5093:9:16","nodeType":"VariableDeclaration","scope":3813,"src":"5088:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":3788,"name":"bool","nodeType":"ElementaryTypeName","src":"5088:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":3791,"mutability":"mutable","name":"a","nameLocation":"5112:1:16","nodeType":"VariableDeclaration","scope":3813,"src":"5104:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3790,"name":"uint256","nodeType":"ElementaryTypeName","src":"5104:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3793,"mutability":"mutable","name":"b","nameLocation":"5123:1:16","nodeType":"VariableDeclaration","scope":3813,"src":"5115:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3792,"name":"uint256","nodeType":"ElementaryTypeName","src":"5115:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5087:38:16"},"returnParameters":{"id":3797,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3796,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3813,"src":"5149:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3795,"name":"uint256","nodeType":"ElementaryTypeName","src":"5149:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5148:9:16"},"scope":5145,"src":"5071:294:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3831,"nodeType":"Block","src":"5502:44:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3824,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3816,"src":"5527:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":3825,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"5531:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5527:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3827,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3816,"src":"5534:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3828,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3818,"src":"5537:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3823,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"5519:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5519:20:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3822,"id":3830,"nodeType":"Return","src":"5512:27:16"}]},"documentation":{"id":3814,"nodeType":"StructuredDocumentation","src":"5371:59:16","text":" @dev Returns the largest of two numbers."},"id":3832,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"5444:3:16","nodeType":"FunctionDefinition","parameters":{"id":3819,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3816,"mutability":"mutable","name":"a","nameLocation":"5456:1:16","nodeType":"VariableDeclaration","scope":3832,"src":"5448:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3815,"name":"uint256","nodeType":"ElementaryTypeName","src":"5448:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3818,"mutability":"mutable","name":"b","nameLocation":"5467:1:16","nodeType":"VariableDeclaration","scope":3832,"src":"5459:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3817,"name":"uint256","nodeType":"ElementaryTypeName","src":"5459:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5447:22:16"},"returnParameters":{"id":3822,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3821,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3832,"src":"5493:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3820,"name":"uint256","nodeType":"ElementaryTypeName","src":"5493:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5492:9:16"},"scope":5145,"src":"5435:111:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3850,"nodeType":"Block","src":"5684:44:16","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3845,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3843,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"5709:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":3844,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"5713:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5709:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":3846,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3835,"src":"5716:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3847,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3837,"src":"5719:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3842,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"5701:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5701:20:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3841,"id":3849,"nodeType":"Return","src":"5694:27:16"}]},"documentation":{"id":3833,"nodeType":"StructuredDocumentation","src":"5552:60:16","text":" @dev Returns the smallest of two numbers."},"id":3851,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"5626:3:16","nodeType":"FunctionDefinition","parameters":{"id":3838,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3835,"mutability":"mutable","name":"a","nameLocation":"5638:1:16","nodeType":"VariableDeclaration","scope":3851,"src":"5630:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3834,"name":"uint256","nodeType":"ElementaryTypeName","src":"5630:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3837,"mutability":"mutable","name":"b","nameLocation":"5649:1:16","nodeType":"VariableDeclaration","scope":3851,"src":"5641:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3836,"name":"uint256","nodeType":"ElementaryTypeName","src":"5641:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5629:22:16"},"returnParameters":{"id":3841,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3840,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3851,"src":"5675:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3839,"name":"uint256","nodeType":"ElementaryTypeName","src":"5675:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5674:9:16"},"scope":5145,"src":"5617:111:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3873,"nodeType":"Block","src":"5912:82:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3861,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"5967:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":3862,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"5971:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5967:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3864,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5966:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3865,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3854,"src":"5977:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":3866,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3856,"src":"5981:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5977:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3868,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"5976:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"32","id":3869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5986:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"5976:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5966:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3860,"id":3872,"nodeType":"Return","src":"5959:28:16"}]},"documentation":{"id":3852,"nodeType":"StructuredDocumentation","src":"5734:102:16","text":" @dev Returns the average of two numbers. The result is rounded towards\n zero."},"id":3874,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"5850:7:16","nodeType":"FunctionDefinition","parameters":{"id":3857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3854,"mutability":"mutable","name":"a","nameLocation":"5866:1:16","nodeType":"VariableDeclaration","scope":3874,"src":"5858:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3853,"name":"uint256","nodeType":"ElementaryTypeName","src":"5858:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3856,"mutability":"mutable","name":"b","nameLocation":"5877:1:16","nodeType":"VariableDeclaration","scope":3874,"src":"5869:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3855,"name":"uint256","nodeType":"ElementaryTypeName","src":"5869:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5857:22:16"},"returnParameters":{"id":3860,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3859,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3874,"src":"5903:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3858,"name":"uint256","nodeType":"ElementaryTypeName","src":"5903:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5902:9:16"},"scope":5145,"src":"5841:153:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":3914,"nodeType":"Block","src":"6286:633:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3884,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3879,"src":"6300:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6300:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3895,"nodeType":"IfStatement","src":"6296:150:16","trueBody":{"id":3894,"nodeType":"Block","src":"6308:138:16","statements":[{"expression":{"arguments":[{"expression":{"id":3890,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"6412:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7461120_$","typeString":"type(library Panic)"}},"id":3891,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6418:16:16","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1087,"src":"6412:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3887,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"6400:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7481120_$","typeString":"type(library Panic)"}},"id":3889,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6406:5:16","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"6400:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6400:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3893,"nodeType":"ExpressionStatement","src":"6400:35:16"}]}},{"id":3913,"nodeType":"UncheckedBlock","src":"6829:84:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3911,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3898,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"6876:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":3899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6880:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"6876:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":3896,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"6860:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7536910_$","typeString":"type(library SafeCast)"}},"id":3897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6869:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"6860:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":3901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6860:22:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3909,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3902,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3877,"src":"6887:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3903,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6891:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6887:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3905,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6886:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3906,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3879,"src":"6896:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6886:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":3908,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6900:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6886:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3910,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"6885:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6860:42:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3883,"id":3912,"nodeType":"Return","src":"6853:49:16"}]}]},"documentation":{"id":3875,"nodeType":"StructuredDocumentation","src":"6000:210:16","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":3915,"implemented":true,"kind":"function","modifiers":[],"name":"ceilDiv","nameLocation":"6224:7:16","nodeType":"FunctionDefinition","parameters":{"id":3880,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3877,"mutability":"mutable","name":"a","nameLocation":"6240:1:16","nodeType":"VariableDeclaration","scope":3915,"src":"6232:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3876,"name":"uint256","nodeType":"ElementaryTypeName","src":"6232:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3879,"mutability":"mutable","name":"b","nameLocation":"6251:1:16","nodeType":"VariableDeclaration","scope":3915,"src":"6243:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3878,"name":"uint256","nodeType":"ElementaryTypeName","src":"6243:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6231:22:16"},"returnParameters":{"id":3883,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3882,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3915,"src":"6277:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3881,"name":"uint256","nodeType":"ElementaryTypeName","src":"6277:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6276:9:16"},"scope":5145,"src":"6215:704:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4050,"nodeType":"Block","src":"7340:3585:16","statements":[{"id":4049,"nodeType":"UncheckedBlock","src":"7350:3569:16","statements":[{"assignments":[3928,3930],"declarations":[{"constant":false,"id":3928,"mutability":"mutable","name":"high","nameLocation":"7383:4:16","nodeType":"VariableDeclaration","scope":4049,"src":"7375:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3927,"name":"uint256","nodeType":"ElementaryTypeName","src":"7375:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3930,"mutability":"mutable","name":"low","nameLocation":"7397:3:16","nodeType":"VariableDeclaration","scope":4049,"src":"7389:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3929,"name":"uint256","nodeType":"ElementaryTypeName","src":"7389:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3935,"initialValue":{"arguments":[{"id":3932,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3918,"src":"7411:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":3933,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3920,"src":"7414:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3931,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"7404:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":3934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7404:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7374:42:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3936,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"7498:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7506:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7498:9:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3944,"nodeType":"IfStatement","src":"7494:365:16","trueBody":{"id":3943,"nodeType":"Block","src":"7509:350:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3939,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"7827:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":3940,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"7833:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7827:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3926,"id":3942,"nodeType":"Return","src":"7820:24:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3945,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"7969:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"id":3946,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"7984:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7969:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":3963,"nodeType":"IfStatement","src":"7965:142:16","trueBody":{"id":3962,"nodeType":"Block","src":"7990:117:16","statements":[{"expression":{"arguments":[{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3952,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"8028:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":3953,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8043:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8028:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"expression":{"id":3955,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"8046:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1120_$","typeString":"type(library Panic)"}},"id":3956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8052:16:16","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1087,"src":"8046:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":3957,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"8070:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7631120_$","typeString":"type(library Panic)"}},"id":3958,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8076:14:16","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1083,"src":"8070:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3951,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"8020:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":3959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8020:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":3948,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"8008:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7681120_$","typeString":"type(library Panic)"}},"id":3950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8014:5:16","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"8008:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":3960,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8008:84:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3961,"nodeType":"ExpressionStatement","src":"8008:84:16"}]}},{"assignments":[3965],"declarations":[{"constant":false,"id":3965,"mutability":"mutable","name":"remainder","nameLocation":"8367:9:16","nodeType":"VariableDeclaration","scope":4049,"src":"8359:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3964,"name":"uint256","nodeType":"ElementaryTypeName","src":"8359:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3966,"nodeType":"VariableDeclarationStatement","src":"8359:17:16"},{"AST":{"nativeSrc":"8415:283:16","nodeType":"YulBlock","src":"8415:283:16","statements":[{"nativeSrc":"8484:38:16","nodeType":"YulAssignment","src":"8484:38:16","value":{"arguments":[{"name":"x","nativeSrc":"8504:1:16","nodeType":"YulIdentifier","src":"8504:1:16"},{"name":"y","nativeSrc":"8507:1:16","nodeType":"YulIdentifier","src":"8507:1:16"},{"name":"denominator","nativeSrc":"8510:11:16","nodeType":"YulIdentifier","src":"8510:11:16"}],"functionName":{"name":"mulmod","nativeSrc":"8497:6:16","nodeType":"YulIdentifier","src":"8497:6:16"},"nativeSrc":"8497:25:16","nodeType":"YulFunctionCall","src":"8497:25:16"},"variableNames":[{"name":"remainder","nativeSrc":"8484:9:16","nodeType":"YulIdentifier","src":"8484:9:16"}]},{"nativeSrc":"8604:37:16","nodeType":"YulAssignment","src":"8604:37:16","value":{"arguments":[{"name":"high","nativeSrc":"8616:4:16","nodeType":"YulIdentifier","src":"8616:4:16"},{"arguments":[{"name":"remainder","nativeSrc":"8625:9:16","nodeType":"YulIdentifier","src":"8625:9:16"},{"name":"low","nativeSrc":"8636:3:16","nodeType":"YulIdentifier","src":"8636:3:16"}],"functionName":{"name":"gt","nativeSrc":"8622:2:16","nodeType":"YulIdentifier","src":"8622:2:16"},"nativeSrc":"8622:18:16","nodeType":"YulFunctionCall","src":"8622:18:16"}],"functionName":{"name":"sub","nativeSrc":"8612:3:16","nodeType":"YulIdentifier","src":"8612:3:16"},"nativeSrc":"8612:29:16","nodeType":"YulFunctionCall","src":"8612:29:16"},"variableNames":[{"name":"high","nativeSrc":"8604:4:16","nodeType":"YulIdentifier","src":"8604:4:16"}]},{"nativeSrc":"8658:26:16","nodeType":"YulAssignment","src":"8658:26:16","value":{"arguments":[{"name":"low","nativeSrc":"8669:3:16","nodeType":"YulIdentifier","src":"8669:3:16"},{"name":"remainder","nativeSrc":"8674:9:16","nodeType":"YulIdentifier","src":"8674:9:16"}],"functionName":{"name":"sub","nativeSrc":"8665:3:16","nodeType":"YulIdentifier","src":"8665:3:16"},"nativeSrc":"8665:19:16","nodeType":"YulFunctionCall","src":"8665:19:16"},"variableNames":[{"name":"low","nativeSrc":"8658:3:16","nodeType":"YulIdentifier","src":"8658:3:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3922,"isOffset":false,"isSlot":false,"src":"8510:11:16","valueSize":1},{"declaration":3928,"isOffset":false,"isSlot":false,"src":"8604:4:16","valueSize":1},{"declaration":3928,"isOffset":false,"isSlot":false,"src":"8616:4:16","valueSize":1},{"declaration":3930,"isOffset":false,"isSlot":false,"src":"8636:3:16","valueSize":1},{"declaration":3930,"isOffset":false,"isSlot":false,"src":"8658:3:16","valueSize":1},{"declaration":3930,"isOffset":false,"isSlot":false,"src":"8669:3:16","valueSize":1},{"declaration":3965,"isOffset":false,"isSlot":false,"src":"8484:9:16","valueSize":1},{"declaration":3965,"isOffset":false,"isSlot":false,"src":"8625:9:16","valueSize":1},{"declaration":3965,"isOffset":false,"isSlot":false,"src":"8674:9:16","valueSize":1},{"declaration":3918,"isOffset":false,"isSlot":false,"src":"8504:1:16","valueSize":1},{"declaration":3920,"isOffset":false,"isSlot":false,"src":"8507:1:16","valueSize":1}],"flags":["memory-safe"],"id":3967,"nodeType":"InlineAssembly","src":"8390:308:16"},{"assignments":[3969],"declarations":[{"constant":false,"id":3969,"mutability":"mutable","name":"twos","nameLocation":"8910:4:16","nodeType":"VariableDeclaration","scope":4049,"src":"8902:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3968,"name":"uint256","nodeType":"ElementaryTypeName","src":"8902:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3976,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3975,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3970,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"8917:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3973,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"30","id":3971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8932:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":3972,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"8936:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8932:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3974,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8931:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8917:31:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8902:46:16"},{"AST":{"nativeSrc":"8987:359:16","nodeType":"YulBlock","src":"8987:359:16","statements":[{"nativeSrc":"9052:37:16","nodeType":"YulAssignment","src":"9052:37:16","value":{"arguments":[{"name":"denominator","nativeSrc":"9071:11:16","nodeType":"YulIdentifier","src":"9071:11:16"},{"name":"twos","nativeSrc":"9084:4:16","nodeType":"YulIdentifier","src":"9084:4:16"}],"functionName":{"name":"div","nativeSrc":"9067:3:16","nodeType":"YulIdentifier","src":"9067:3:16"},"nativeSrc":"9067:22:16","nodeType":"YulFunctionCall","src":"9067:22:16"},"variableNames":[{"name":"denominator","nativeSrc":"9052:11:16","nodeType":"YulIdentifier","src":"9052:11:16"}]},{"nativeSrc":"9153:21:16","nodeType":"YulAssignment","src":"9153:21:16","value":{"arguments":[{"name":"low","nativeSrc":"9164:3:16","nodeType":"YulIdentifier","src":"9164:3:16"},{"name":"twos","nativeSrc":"9169:4:16","nodeType":"YulIdentifier","src":"9169:4:16"}],"functionName":{"name":"div","nativeSrc":"9160:3:16","nodeType":"YulIdentifier","src":"9160:3:16"},"nativeSrc":"9160:14:16","nodeType":"YulFunctionCall","src":"9160:14:16"},"variableNames":[{"name":"low","nativeSrc":"9153:3:16","nodeType":"YulIdentifier","src":"9153:3:16"}]},{"nativeSrc":"9293:39:16","nodeType":"YulAssignment","src":"9293:39:16","value":{"arguments":[{"arguments":[{"arguments":[{"kind":"number","nativeSrc":"9313:1:16","nodeType":"YulLiteral","src":"9313:1:16","type":"","value":"0"},{"name":"twos","nativeSrc":"9316:4:16","nodeType":"YulIdentifier","src":"9316:4:16"}],"functionName":{"name":"sub","nativeSrc":"9309:3:16","nodeType":"YulIdentifier","src":"9309:3:16"},"nativeSrc":"9309:12:16","nodeType":"YulFunctionCall","src":"9309:12:16"},{"name":"twos","nativeSrc":"9323:4:16","nodeType":"YulIdentifier","src":"9323:4:16"}],"functionName":{"name":"div","nativeSrc":"9305:3:16","nodeType":"YulIdentifier","src":"9305:3:16"},"nativeSrc":"9305:23:16","nodeType":"YulFunctionCall","src":"9305:23:16"},{"kind":"number","nativeSrc":"9330:1:16","nodeType":"YulLiteral","src":"9330:1:16","type":"","value":"1"}],"functionName":{"name":"add","nativeSrc":"9301:3:16","nodeType":"YulIdentifier","src":"9301:3:16"},"nativeSrc":"9301:31:16","nodeType":"YulFunctionCall","src":"9301:31:16"},"variableNames":[{"name":"twos","nativeSrc":"9293:4:16","nodeType":"YulIdentifier","src":"9293:4:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":3922,"isOffset":false,"isSlot":false,"src":"9052:11:16","valueSize":1},{"declaration":3922,"isOffset":false,"isSlot":false,"src":"9071:11:16","valueSize":1},{"declaration":3930,"isOffset":false,"isSlot":false,"src":"9153:3:16","valueSize":1},{"declaration":3930,"isOffset":false,"isSlot":false,"src":"9164:3:16","valueSize":1},{"declaration":3969,"isOffset":false,"isSlot":false,"src":"9084:4:16","valueSize":1},{"declaration":3969,"isOffset":false,"isSlot":false,"src":"9169:4:16","valueSize":1},{"declaration":3969,"isOffset":false,"isSlot":false,"src":"9293:4:16","valueSize":1},{"declaration":3969,"isOffset":false,"isSlot":false,"src":"9316:4:16","valueSize":1},{"declaration":3969,"isOffset":false,"isSlot":false,"src":"9323:4:16","valueSize":1}],"flags":["memory-safe"],"id":3977,"nodeType":"InlineAssembly","src":"8962:384:16"},{"expression":{"id":3982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3978,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"9409:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3979,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3928,"src":"9416:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3980,"name":"twos","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3969,"src":"9423:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9416:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9409:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":3983,"nodeType":"ExpressionStatement","src":"9409:18:16"},{"assignments":[3985],"declarations":[{"constant":false,"id":3985,"mutability":"mutable","name":"inverse","nameLocation":"9770:7:16","nodeType":"VariableDeclaration","scope":4049,"src":"9762:15:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3984,"name":"uint256","nodeType":"ElementaryTypeName","src":"9762:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":3992,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3991,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":3986,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9781:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3987,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"9785:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9781:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":3989,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9780:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"hexValue":"32","id":3990,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9800:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"9780:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9762:39:16"},{"expression":{"id":3999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":3993,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10018:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":3994,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10029:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3995,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10033:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":3996,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10047:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10033:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10029:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10018:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4000,"nodeType":"ExpressionStatement","src":"10018:36:16"},{"expression":{"id":4007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4001,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10088:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4002,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10099:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4003,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10103:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4004,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10117:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10103:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10099:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10088:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4008,"nodeType":"ExpressionStatement","src":"10088:36:16"},{"expression":{"id":4015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4009,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10160:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4014,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4010,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10171:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4011,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10175:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4012,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10189:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10175:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10171:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10160:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4016,"nodeType":"ExpressionStatement","src":"10160:36:16"},{"expression":{"id":4023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4017,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10231:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4018,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10242:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4019,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10246:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4020,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10260:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10246:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10242:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10231:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4024,"nodeType":"ExpressionStatement","src":"10231:36:16"},{"expression":{"id":4031,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4025,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10304:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4030,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10315:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4027,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10319:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4028,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10333:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10319:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10315:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10304:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4032,"nodeType":"ExpressionStatement","src":"10304:36:16"},{"expression":{"id":4039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4033,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10378:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"*=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":4034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10389:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4037,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4035,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3922,"src":"10393:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4036,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10407:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10393:21:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10389:25:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10378:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4040,"nodeType":"ExpressionStatement","src":"10378:36:16"},{"expression":{"id":4045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4041,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"10859:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4044,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4042,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3930,"src":"10868:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4043,"name":"inverse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3985,"src":"10874:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10868:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10859:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4046,"nodeType":"ExpressionStatement","src":"10859:22:16"},{"expression":{"id":4047,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3925,"src":"10902:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":3926,"id":4048,"nodeType":"Return","src":"10895:13:16"}]}]},"documentation":{"id":3916,"nodeType":"StructuredDocumentation","src":"6925:312:16","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":4051,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"7251:6:16","nodeType":"FunctionDefinition","parameters":{"id":3923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3918,"mutability":"mutable","name":"x","nameLocation":"7266:1:16","nodeType":"VariableDeclaration","scope":4051,"src":"7258:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3917,"name":"uint256","nodeType":"ElementaryTypeName","src":"7258:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3920,"mutability":"mutable","name":"y","nameLocation":"7277:1:16","nodeType":"VariableDeclaration","scope":4051,"src":"7269:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3919,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3922,"mutability":"mutable","name":"denominator","nameLocation":"7288:11:16","nodeType":"VariableDeclaration","scope":4051,"src":"7280:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3921,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7257:43:16"},"returnParameters":{"id":3926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3925,"mutability":"mutable","name":"result","nameLocation":"7332:6:16","nodeType":"VariableDeclaration","scope":4051,"src":"7324:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3924,"name":"uint256","nodeType":"ElementaryTypeName","src":"7324:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7323:16:16"},"scope":5145,"src":"7242:3683:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4087,"nodeType":"Block","src":"11164:128:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4067,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4054,"src":"11188:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4068,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"11191:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4069,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"11194:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4066,"name":"mulDiv","nodeType":"Identifier","overloadedDeclarations":[4051,4088],"referencedDeclaration":4051,"src":"11181:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4070,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11181:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4074,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4061,"src":"11242:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_7763536","typeString":"enum Math.Rounding"}],"id":4073,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"11225:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11225:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4082,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4077,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4054,"src":"11262:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4078,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4056,"src":"11265:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4079,"name":"denominator","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4058,"src":"11268:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4076,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"11255:6:16","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11255:25:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11283:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11255:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"11225:59:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4071,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"11209:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7836910_$","typeString":"type(library SafeCast)"}},"id":4072,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11218:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"11209:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11209:76:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11181:104:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4065,"id":4086,"nodeType":"Return","src":"11174:111:16"}]},"documentation":{"id":4052,"nodeType":"StructuredDocumentation","src":"10931:118:16","text":" @dev Calculates x * y / denominator with full precision, following the selected rounding direction."},"id":4088,"implemented":true,"kind":"function","modifiers":[],"name":"mulDiv","nameLocation":"11063:6:16","nodeType":"FunctionDefinition","parameters":{"id":4062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4054,"mutability":"mutable","name":"x","nameLocation":"11078:1:16","nodeType":"VariableDeclaration","scope":4088,"src":"11070:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4053,"name":"uint256","nodeType":"ElementaryTypeName","src":"11070:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4056,"mutability":"mutable","name":"y","nameLocation":"11089:1:16","nodeType":"VariableDeclaration","scope":4088,"src":"11081:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4055,"name":"uint256","nodeType":"ElementaryTypeName","src":"11081:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4058,"mutability":"mutable","name":"denominator","nameLocation":"11100:11:16","nodeType":"VariableDeclaration","scope":4088,"src":"11092:19:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4057,"name":"uint256","nodeType":"ElementaryTypeName","src":"11092:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4061,"mutability":"mutable","name":"rounding","nameLocation":"11122:8:16","nodeType":"VariableDeclaration","scope":4088,"src":"11113:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":4060,"nodeType":"UserDefinedTypeName","pathNode":{"id":4059,"name":"Rounding","nameLocations":["11113:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"11113:8:16"},"referencedDeclaration":3536,"src":"11113:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_7873536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11069:62:16"},"returnParameters":{"id":4065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4064,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4088,"src":"11155:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4063,"name":"uint256","nodeType":"ElementaryTypeName","src":"11155:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11154:9:16"},"scope":5145,"src":"11054:238:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4137,"nodeType":"Block","src":"11500:245:16","statements":[{"id":4136,"nodeType":"UncheckedBlock","src":"11510:229:16","statements":[{"assignments":[4101,4103],"declarations":[{"constant":false,"id":4101,"mutability":"mutable","name":"high","nameLocation":"11543:4:16","nodeType":"VariableDeclaration","scope":4136,"src":"11535:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4100,"name":"uint256","nodeType":"ElementaryTypeName","src":"11535:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4103,"mutability":"mutable","name":"low","nameLocation":"11557:3:16","nodeType":"VariableDeclaration","scope":4136,"src":"11549:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4102,"name":"uint256","nodeType":"ElementaryTypeName","src":"11549:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4108,"initialValue":{"arguments":[{"id":4105,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4091,"src":"11571:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4106,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4093,"src":"11574:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4104,"name":"mul512","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3564,"src":"11564:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256,uint256)"}},"id":4107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11564:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"11534:42:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4109,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"11594:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11602:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4111,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4095,"src":"11607:1:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11602:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11594:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4122,"nodeType":"IfStatement","src":"11590:86:16","trueBody":{"id":4121,"nodeType":"Block","src":"11610:66:16","statements":[{"expression":{"arguments":[{"expression":{"id":4117,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"11640:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7931120_$","typeString":"type(library Panic)"}},"id":4118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11646:14:16","memberName":"UNDER_OVERFLOW","nodeType":"MemberAccess","referencedDeclaration":1083,"src":"11640:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4114,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"11628:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_7951120_$","typeString":"type(library Panic)"}},"id":4116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11634:5:16","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"11628:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4119,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11628:33:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4120,"nodeType":"ExpressionStatement","src":"11628:33:16"}]}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4123,"name":"high","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4101,"src":"11697:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"id":4126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"323536","id":4124,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11706:3:16","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"value":"256"},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":4125,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4095,"src":"11712:1:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11706:7:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}}],"id":4127,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11705:9:16","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"11697:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4129,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11696:19:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4130,"name":"low","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4103,"src":"11719:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4131,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4095,"src":"11726:1:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"11719:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4133,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11718:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11696:32:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4099,"id":4135,"nodeType":"Return","src":"11689:39:16"}]}]},"documentation":{"id":4089,"nodeType":"StructuredDocumentation","src":"11298:111:16","text":" @dev Calculates floor(x * y >> n) with full precision. Throws if result overflows a uint256."},"id":4138,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11423:6:16","nodeType":"FunctionDefinition","parameters":{"id":4096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4091,"mutability":"mutable","name":"x","nameLocation":"11438:1:16","nodeType":"VariableDeclaration","scope":4138,"src":"11430:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4090,"name":"uint256","nodeType":"ElementaryTypeName","src":"11430:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4093,"mutability":"mutable","name":"y","nameLocation":"11449:1:16","nodeType":"VariableDeclaration","scope":4138,"src":"11441:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4092,"name":"uint256","nodeType":"ElementaryTypeName","src":"11441:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4095,"mutability":"mutable","name":"n","nameLocation":"11458:1:16","nodeType":"VariableDeclaration","scope":4138,"src":"11452:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4094,"name":"uint8","nodeType":"ElementaryTypeName","src":"11452:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11429:31:16"},"returnParameters":{"id":4099,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4098,"mutability":"mutable","name":"result","nameLocation":"11492:6:16","nodeType":"VariableDeclaration","scope":4138,"src":"11484:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4097,"name":"uint256","nodeType":"ElementaryTypeName","src":"11484:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11483:16:16"},"scope":5145,"src":"11414:331:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4176,"nodeType":"Block","src":"11963:113:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4174,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4154,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"11987:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4155,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"11990:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4156,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"11993:1:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":4153,"name":"mulShr","nodeType":"Identifier","overloadedDeclarations":[4138,4177],"referencedDeclaration":4138,"src":"11980:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint8_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint8) pure returns (uint256)"}},"id":4157,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11980:15:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4161,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4148,"src":"12031:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_8033536","typeString":"enum Math.Rounding"}],"id":4160,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"12014:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12014:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4164,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4141,"src":"12051:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4165,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4143,"src":"12054:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4168,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12057:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4167,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4145,"src":"12062:1:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12057:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4163,"name":"mulmod","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-16,"src":"12044:6:16","typeDescriptions":{"typeIdentifier":"t_function_mulmod_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) pure returns (uint256)"}},"id":4169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12044:20:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":4170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12067:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12044:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12014:54:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4158,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"11998:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8106910_$","typeString":"type(library SafeCast)"}},"id":4159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12007:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"11998:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11998:71:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11980:89:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4152,"id":4175,"nodeType":"Return","src":"11973:96:16"}]},"documentation":{"id":4139,"nodeType":"StructuredDocumentation","src":"11751:109:16","text":" @dev Calculates x * y >> n with full precision, following the selected rounding direction."},"id":4177,"implemented":true,"kind":"function","modifiers":[],"name":"mulShr","nameLocation":"11874:6:16","nodeType":"FunctionDefinition","parameters":{"id":4149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4141,"mutability":"mutable","name":"x","nameLocation":"11889:1:16","nodeType":"VariableDeclaration","scope":4177,"src":"11881:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4140,"name":"uint256","nodeType":"ElementaryTypeName","src":"11881:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4143,"mutability":"mutable","name":"y","nameLocation":"11900:1:16","nodeType":"VariableDeclaration","scope":4177,"src":"11892:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4142,"name":"uint256","nodeType":"ElementaryTypeName","src":"11892:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4145,"mutability":"mutable","name":"n","nameLocation":"11909:1:16","nodeType":"VariableDeclaration","scope":4177,"src":"11903:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":4144,"name":"uint8","nodeType":"ElementaryTypeName","src":"11903:5:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":4148,"mutability":"mutable","name":"rounding","nameLocation":"11921:8:16","nodeType":"VariableDeclaration","scope":4177,"src":"11912:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":4147,"nodeType":"UserDefinedTypeName","pathNode":{"id":4146,"name":"Rounding","nameLocations":["11912:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"11912:8:16"},"referencedDeclaration":3536,"src":"11912:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_8143536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"11880:50:16"},"returnParameters":{"id":4152,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4151,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4177,"src":"11954:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4150,"name":"uint256","nodeType":"ElementaryTypeName","src":"11954:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11953:9:16"},"scope":5145,"src":"11865:211:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4273,"nodeType":"Block","src":"12710:1849:16","statements":[{"id":4272,"nodeType":"UncheckedBlock","src":"12720:1833:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4187,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"12748:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12753:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12748:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4192,"nodeType":"IfStatement","src":"12744:20:16","trueBody":{"expression":{"hexValue":"30","id":4190,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12763:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4186,"id":4191,"nodeType":"Return","src":"12756:8:16"}},{"assignments":[4194],"declarations":[{"constant":false,"id":4194,"mutability":"mutable","name":"remainder","nameLocation":"13243:9:16","nodeType":"VariableDeclaration","scope":4272,"src":"13235:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4193,"name":"uint256","nodeType":"ElementaryTypeName","src":"13235:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4198,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4197,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4195,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4180,"src":"13255:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":4196,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"13259:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13255:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13235:25:16"},{"assignments":[4200],"declarations":[{"constant":false,"id":4200,"mutability":"mutable","name":"gcd","nameLocation":"13282:3:16","nodeType":"VariableDeclaration","scope":4272,"src":"13274:11:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4199,"name":"uint256","nodeType":"ElementaryTypeName","src":"13274:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4202,"initialValue":{"id":4201,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"13288:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13274:15:16"},{"assignments":[4204],"declarations":[{"constant":false,"id":4204,"mutability":"mutable","name":"x","nameLocation":"13432:1:16","nodeType":"VariableDeclaration","scope":4272,"src":"13425:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4203,"name":"int256","nodeType":"ElementaryTypeName","src":"13425:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4206,"initialValue":{"hexValue":"30","id":4205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13436:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13425:12:16"},{"assignments":[4208],"declarations":[{"constant":false,"id":4208,"mutability":"mutable","name":"y","nameLocation":"13458:1:16","nodeType":"VariableDeclaration","scope":4272,"src":"13451:8:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":4207,"name":"int256","nodeType":"ElementaryTypeName","src":"13451:6:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":4210,"initialValue":{"hexValue":"31","id":4209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13462:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"13451:12:16"},{"body":{"id":4247,"nodeType":"Block","src":"13501:882:16","statements":[{"assignments":[4215],"declarations":[{"constant":false,"id":4215,"mutability":"mutable","name":"quotient","nameLocation":"13527:8:16","nodeType":"VariableDeclaration","scope":4247,"src":"13519:16:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4214,"name":"uint256","nodeType":"ElementaryTypeName","src":"13519:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4219,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4216,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"13538:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4217,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"13544:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13538:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13519:34:16"},{"expression":{"id":4230,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4220,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"13573:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4221,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"13578:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4222,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13572:16:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4223,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"13678:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4228,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4224,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"13923:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4225,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"13929:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4226,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"13941:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13929:20:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13923:26:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4229,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13591:376:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"src":"13572:395:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4231,"nodeType":"ExpressionStatement","src":"13572:395:16"},{"expression":{"id":4245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"components":[{"id":4232,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"13987:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":4233,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"13990:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4234,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"TupleExpression","src":"13986:6:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"components":[{"id":4235,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"14072:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4243,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4236,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"14326:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4237,"name":"y","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4208,"src":"14330:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":4240,"name":"quotient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4215,"src":"14341:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14334:6:16","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":4238,"name":"int256","nodeType":"ElementaryTypeName","src":"14334:6:16","typeDescriptions":{}}},"id":4241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14334:16:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14330:20:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"14326:24:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":4244,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"13995:373:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_int256_$_t_int256_$","typeString":"tuple(int256,int256)"}},"src":"13986:382:16","typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4246,"nodeType":"ExpressionStatement","src":"13986:382:16"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4211,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4194,"src":"13485:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13498:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13485:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4248,"nodeType":"WhileStatement","src":"13478:905:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4251,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4249,"name":"gcd","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4200,"src":"14401:3:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"31","id":4250,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14408:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14401:8:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4254,"nodeType":"IfStatement","src":"14397:22:16","trueBody":{"expression":{"hexValue":"30","id":4252,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14418:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"functionReturnParameters":4186,"id":4253,"nodeType":"Return","src":"14411:8:16"}},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":4258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4256,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"14470:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":4257,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14474:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"14470:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4265,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4259,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4182,"src":"14477:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"id":4263,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"-","prefix":true,"src":"14489:2:16","subExpression":{"id":4262,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"14490:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4261,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14481:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4260,"name":"uint256","nodeType":"ElementaryTypeName","src":"14481:7:16","typeDescriptions":{}}},"id":4264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14481:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14477:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":4268,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4204,"src":"14502:1:16","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":4267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14494:7:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":4266,"name":"uint256","nodeType":"ElementaryTypeName","src":"14494:7:16","typeDescriptions":{}}},"id":4269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14494:10:16","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":4255,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3813,"src":"14462:7:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (bool,uint256,uint256) pure returns (uint256)"}},"id":4270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14462:43:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4186,"id":4271,"nodeType":"Return","src":"14455:50:16"}]}]},"documentation":{"id":4178,"nodeType":"StructuredDocumentation","src":"12082:553:16","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":4274,"implemented":true,"kind":"function","modifiers":[],"name":"invMod","nameLocation":"12649:6:16","nodeType":"FunctionDefinition","parameters":{"id":4183,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4180,"mutability":"mutable","name":"a","nameLocation":"12664:1:16","nodeType":"VariableDeclaration","scope":4274,"src":"12656:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4179,"name":"uint256","nodeType":"ElementaryTypeName","src":"12656:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4182,"mutability":"mutable","name":"n","nameLocation":"12675:1:16","nodeType":"VariableDeclaration","scope":4274,"src":"12667:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4181,"name":"uint256","nodeType":"ElementaryTypeName","src":"12667:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12655:22:16"},"returnParameters":{"id":4186,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4185,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4274,"src":"12701:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4184,"name":"uint256","nodeType":"ElementaryTypeName","src":"12701:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12700:9:16"},"scope":5145,"src":"12640:1919:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4294,"nodeType":"Block","src":"15159:82:16","statements":[{"id":4293,"nodeType":"UncheckedBlock","src":"15169:66:16","statements":[{"expression":{"arguments":[{"id":4286,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4277,"src":"15212:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4287,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"15215:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"32","id":4288,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15219:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"15215:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4290,"name":"p","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4279,"src":"15222:1:16","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":4284,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5145,"src":"15200:4:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$5145_$","typeString":"type(library Math)"}},"id":4285,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15205:6:16","memberName":"modExp","nodeType":"MemberAccess","referencedDeclaration":4331,"src":"15200:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256,uint256) view returns (uint256)"}},"id":4291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15200:24:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4283,"id":4292,"nodeType":"Return","src":"15193:31:16"}]}]},"documentation":{"id":4275,"nodeType":"StructuredDocumentation","src":"14565:514:16","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":4295,"implemented":true,"kind":"function","modifiers":[],"name":"invModPrime","nameLocation":"15093:11:16","nodeType":"FunctionDefinition","parameters":{"id":4280,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4277,"mutability":"mutable","name":"a","nameLocation":"15113:1:16","nodeType":"VariableDeclaration","scope":4295,"src":"15105:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4276,"name":"uint256","nodeType":"ElementaryTypeName","src":"15105:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4279,"mutability":"mutable","name":"p","nameLocation":"15124:1:16","nodeType":"VariableDeclaration","scope":4295,"src":"15116:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4278,"name":"uint256","nodeType":"ElementaryTypeName","src":"15116:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15104:22:16"},"returnParameters":{"id":4283,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4282,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4295,"src":"15150:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4281,"name":"uint256","nodeType":"ElementaryTypeName","src":"15150:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15149:9:16"},"scope":5145,"src":"15084:157:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4330,"nodeType":"Block","src":"16011:174:16","statements":[{"assignments":[4308,4310],"declarations":[{"constant":false,"id":4308,"mutability":"mutable","name":"success","nameLocation":"16027:7:16","nodeType":"VariableDeclaration","scope":4330,"src":"16022:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4307,"name":"bool","nodeType":"ElementaryTypeName","src":"16022:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4310,"mutability":"mutable","name":"result","nameLocation":"16044:6:16","nodeType":"VariableDeclaration","scope":4330,"src":"16036:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4309,"name":"uint256","nodeType":"ElementaryTypeName","src":"16036:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4316,"initialValue":{"arguments":[{"id":4312,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4298,"src":"16064:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4313,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4300,"src":"16067:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4314,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4302,"src":"16070:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4311,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4355,4437],"referencedDeclaration":4355,"src":"16054:9:16","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":4315,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16054:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_uint256_$","typeString":"tuple(bool,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"16021:51:16"},{"condition":{"id":4318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"16086:8:16","subExpression":{"id":4317,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4308,"src":"16087:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4327,"nodeType":"IfStatement","src":"16082:74:16","trueBody":{"id":4326,"nodeType":"Block","src":"16096:60:16","statements":[{"expression":{"arguments":[{"expression":{"id":4322,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"16122:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8391120_$","typeString":"type(library Panic)"}},"id":4323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16128:16:16","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1087,"src":"16122:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4319,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"16110:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8411120_$","typeString":"type(library Panic)"}},"id":4321,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16116:5:16","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"16110:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4324,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16110:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4325,"nodeType":"ExpressionStatement","src":"16110:35:16"}]}},{"expression":{"id":4328,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4310,"src":"16172:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4306,"id":4329,"nodeType":"Return","src":"16165:13:16"}]},"documentation":{"id":4296,"nodeType":"StructuredDocumentation","src":"15247:678:16","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":4331,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"15939:6:16","nodeType":"FunctionDefinition","parameters":{"id":4303,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4298,"mutability":"mutable","name":"b","nameLocation":"15954:1:16","nodeType":"VariableDeclaration","scope":4331,"src":"15946:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4297,"name":"uint256","nodeType":"ElementaryTypeName","src":"15946:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4300,"mutability":"mutable","name":"e","nameLocation":"15965:1:16","nodeType":"VariableDeclaration","scope":4331,"src":"15957:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4299,"name":"uint256","nodeType":"ElementaryTypeName","src":"15957:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4302,"mutability":"mutable","name":"m","nameLocation":"15976:1:16","nodeType":"VariableDeclaration","scope":4331,"src":"15968:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4301,"name":"uint256","nodeType":"ElementaryTypeName","src":"15968:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15945:33:16"},"returnParameters":{"id":4306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4305,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4331,"src":"16002:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4304,"name":"uint256","nodeType":"ElementaryTypeName","src":"16002:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16001:9:16"},"scope":5145,"src":"15930:255:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4354,"nodeType":"Block","src":"17039:1493:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4345,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4338,"src":"17053:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":4346,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17058:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17053:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4352,"nodeType":"IfStatement","src":"17049:29:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4348,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"17069:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"hexValue":"30","id":4349,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17076:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"id":4350,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"17068:10:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_rational_0_by_1_$","typeString":"tuple(bool,int_const 0)"}},"functionReturnParameters":4344,"id":4351,"nodeType":"Return","src":"17061:17:16"}},{"AST":{"nativeSrc":"17113:1413:16","nodeType":"YulBlock","src":"17113:1413:16","statements":[{"nativeSrc":"17127:22:16","nodeType":"YulVariableDeclaration","src":"17127:22:16","value":{"arguments":[{"kind":"number","nativeSrc":"17144:4:16","nodeType":"YulLiteral","src":"17144:4:16","type":"","value":"0x40"}],"functionName":{"name":"mload","nativeSrc":"17138:5:16","nodeType":"YulIdentifier","src":"17138:5:16"},"nativeSrc":"17138:11:16","nodeType":"YulFunctionCall","src":"17138:11:16"},"variables":[{"name":"ptr","nativeSrc":"17131:3:16","nodeType":"YulTypedName","src":"17131:3:16","type":""}]},{"expression":{"arguments":[{"name":"ptr","nativeSrc":"18057:3:16","nodeType":"YulIdentifier","src":"18057:3:16"},{"kind":"number","nativeSrc":"18062:4:16","nodeType":"YulLiteral","src":"18062:4:16","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18050:6:16","nodeType":"YulIdentifier","src":"18050:6:16"},"nativeSrc":"18050:17:16","nodeType":"YulFunctionCall","src":"18050:17:16"},"nativeSrc":"18050:17:16","nodeType":"YulExpressionStatement","src":"18050:17:16"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18091:3:16","nodeType":"YulIdentifier","src":"18091:3:16"},{"kind":"number","nativeSrc":"18096:4:16","nodeType":"YulLiteral","src":"18096:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"18087:3:16","nodeType":"YulIdentifier","src":"18087:3:16"},"nativeSrc":"18087:14:16","nodeType":"YulFunctionCall","src":"18087:14:16"},{"kind":"number","nativeSrc":"18103:4:16","nodeType":"YulLiteral","src":"18103:4:16","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18080:6:16","nodeType":"YulIdentifier","src":"18080:6:16"},"nativeSrc":"18080:28:16","nodeType":"YulFunctionCall","src":"18080:28:16"},"nativeSrc":"18080:28:16","nodeType":"YulExpressionStatement","src":"18080:28:16"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18132:3:16","nodeType":"YulIdentifier","src":"18132:3:16"},{"kind":"number","nativeSrc":"18137:4:16","nodeType":"YulLiteral","src":"18137:4:16","type":"","value":"0x40"}],"functionName":{"name":"add","nativeSrc":"18128:3:16","nodeType":"YulIdentifier","src":"18128:3:16"},"nativeSrc":"18128:14:16","nodeType":"YulFunctionCall","src":"18128:14:16"},{"kind":"number","nativeSrc":"18144:4:16","nodeType":"YulLiteral","src":"18144:4:16","type":"","value":"0x20"}],"functionName":{"name":"mstore","nativeSrc":"18121:6:16","nodeType":"YulIdentifier","src":"18121:6:16"},"nativeSrc":"18121:28:16","nodeType":"YulFunctionCall","src":"18121:28:16"},"nativeSrc":"18121:28:16","nodeType":"YulExpressionStatement","src":"18121:28:16"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18173:3:16","nodeType":"YulIdentifier","src":"18173:3:16"},{"kind":"number","nativeSrc":"18178:4:16","nodeType":"YulLiteral","src":"18178:4:16","type":"","value":"0x60"}],"functionName":{"name":"add","nativeSrc":"18169:3:16","nodeType":"YulIdentifier","src":"18169:3:16"},"nativeSrc":"18169:14:16","nodeType":"YulFunctionCall","src":"18169:14:16"},{"name":"b","nativeSrc":"18185:1:16","nodeType":"YulIdentifier","src":"18185:1:16"}],"functionName":{"name":"mstore","nativeSrc":"18162:6:16","nodeType":"YulIdentifier","src":"18162:6:16"},"nativeSrc":"18162:25:16","nodeType":"YulFunctionCall","src":"18162:25:16"},"nativeSrc":"18162:25:16","nodeType":"YulExpressionStatement","src":"18162:25:16"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18211:3:16","nodeType":"YulIdentifier","src":"18211:3:16"},{"kind":"number","nativeSrc":"18216:4:16","nodeType":"YulLiteral","src":"18216:4:16","type":"","value":"0x80"}],"functionName":{"name":"add","nativeSrc":"18207:3:16","nodeType":"YulIdentifier","src":"18207:3:16"},"nativeSrc":"18207:14:16","nodeType":"YulFunctionCall","src":"18207:14:16"},{"name":"e","nativeSrc":"18223:1:16","nodeType":"YulIdentifier","src":"18223:1:16"}],"functionName":{"name":"mstore","nativeSrc":"18200:6:16","nodeType":"YulIdentifier","src":"18200:6:16"},"nativeSrc":"18200:25:16","nodeType":"YulFunctionCall","src":"18200:25:16"},"nativeSrc":"18200:25:16","nodeType":"YulExpressionStatement","src":"18200:25:16"},{"expression":{"arguments":[{"arguments":[{"name":"ptr","nativeSrc":"18249:3:16","nodeType":"YulIdentifier","src":"18249:3:16"},{"kind":"number","nativeSrc":"18254:4:16","nodeType":"YulLiteral","src":"18254:4:16","type":"","value":"0xa0"}],"functionName":{"name":"add","nativeSrc":"18245:3:16","nodeType":"YulIdentifier","src":"18245:3:16"},"nativeSrc":"18245:14:16","nodeType":"YulFunctionCall","src":"18245:14:16"},{"name":"m","nativeSrc":"18261:1:16","nodeType":"YulIdentifier","src":"18261:1:16"}],"functionName":{"name":"mstore","nativeSrc":"18238:6:16","nodeType":"YulIdentifier","src":"18238:6:16"},"nativeSrc":"18238:25:16","nodeType":"YulFunctionCall","src":"18238:25:16"},"nativeSrc":"18238:25:16","nodeType":"YulExpressionStatement","src":"18238:25:16"},{"nativeSrc":"18425:57:16","nodeType":"YulAssignment","src":"18425:57:16","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"18447:3:16","nodeType":"YulIdentifier","src":"18447:3:16"},"nativeSrc":"18447:5:16","nodeType":"YulFunctionCall","src":"18447:5:16"},{"kind":"number","nativeSrc":"18454:4:16","nodeType":"YulLiteral","src":"18454:4:16","type":"","value":"0x05"},{"name":"ptr","nativeSrc":"18460:3:16","nodeType":"YulIdentifier","src":"18460:3:16"},{"kind":"number","nativeSrc":"18465:4:16","nodeType":"YulLiteral","src":"18465:4:16","type":"","value":"0xc0"},{"kind":"number","nativeSrc":"18471:4:16","nodeType":"YulLiteral","src":"18471:4:16","type":"","value":"0x00"},{"kind":"number","nativeSrc":"18477:4:16","nodeType":"YulLiteral","src":"18477:4:16","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nativeSrc":"18436:10:16","nodeType":"YulIdentifier","src":"18436:10:16"},"nativeSrc":"18436:46:16","nodeType":"YulFunctionCall","src":"18436:46:16"},"variableNames":[{"name":"success","nativeSrc":"18425:7:16","nodeType":"YulIdentifier","src":"18425:7:16"}]},{"nativeSrc":"18495:21:16","nodeType":"YulAssignment","src":"18495:21:16","value":{"arguments":[{"kind":"number","nativeSrc":"18511:4:16","nodeType":"YulLiteral","src":"18511:4:16","type":"","value":"0x00"}],"functionName":{"name":"mload","nativeSrc":"18505:5:16","nodeType":"YulIdentifier","src":"18505:5:16"},"nativeSrc":"18505:11:16","nodeType":"YulFunctionCall","src":"18505:11:16"},"variableNames":[{"name":"result","nativeSrc":"18495:6:16","nodeType":"YulIdentifier","src":"18495:6:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4334,"isOffset":false,"isSlot":false,"src":"18185:1:16","valueSize":1},{"declaration":4336,"isOffset":false,"isSlot":false,"src":"18223:1:16","valueSize":1},{"declaration":4338,"isOffset":false,"isSlot":false,"src":"18261:1:16","valueSize":1},{"declaration":4343,"isOffset":false,"isSlot":false,"src":"18495:6:16","valueSize":1},{"declaration":4341,"isOffset":false,"isSlot":false,"src":"18425:7:16","valueSize":1}],"flags":["memory-safe"],"id":4353,"nodeType":"InlineAssembly","src":"17088:1438:16"}]},"documentation":{"id":4332,"nodeType":"StructuredDocumentation","src":"16191:738:16","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":4355,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"16943:9:16","nodeType":"FunctionDefinition","parameters":{"id":4339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4334,"mutability":"mutable","name":"b","nameLocation":"16961:1:16","nodeType":"VariableDeclaration","scope":4355,"src":"16953:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4333,"name":"uint256","nodeType":"ElementaryTypeName","src":"16953:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4336,"mutability":"mutable","name":"e","nameLocation":"16972:1:16","nodeType":"VariableDeclaration","scope":4355,"src":"16964:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4335,"name":"uint256","nodeType":"ElementaryTypeName","src":"16964:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4338,"mutability":"mutable","name":"m","nameLocation":"16983:1:16","nodeType":"VariableDeclaration","scope":4355,"src":"16975:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4337,"name":"uint256","nodeType":"ElementaryTypeName","src":"16975:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16952:33:16"},"returnParameters":{"id":4344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4341,"mutability":"mutable","name":"success","nameLocation":"17014:7:16","nodeType":"VariableDeclaration","scope":4355,"src":"17009:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4340,"name":"bool","nodeType":"ElementaryTypeName","src":"17009:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4343,"mutability":"mutable","name":"result","nameLocation":"17031:6:16","nodeType":"VariableDeclaration","scope":4355,"src":"17023:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4342,"name":"uint256","nodeType":"ElementaryTypeName","src":"17023:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17008:30:16"},"scope":5145,"src":"16934:1598:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4390,"nodeType":"Block","src":"18729:179:16","statements":[{"assignments":[4368,4370],"declarations":[{"constant":false,"id":4368,"mutability":"mutable","name":"success","nameLocation":"18745:7:16","nodeType":"VariableDeclaration","scope":4390,"src":"18740:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4367,"name":"bool","nodeType":"ElementaryTypeName","src":"18740:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4370,"mutability":"mutable","name":"result","nameLocation":"18767:6:16","nodeType":"VariableDeclaration","scope":4390,"src":"18754:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4369,"name":"bytes","nodeType":"ElementaryTypeName","src":"18754:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":4376,"initialValue":{"arguments":[{"id":4372,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4358,"src":"18787:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4373,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4360,"src":"18790:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4374,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4362,"src":"18793:1:16","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":4371,"name":"tryModExp","nodeType":"Identifier","overloadedDeclarations":[4355,4437],"referencedDeclaration":4437,"src":"18777:9:16","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":4375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18777:18:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"18739:56:16"},{"condition":{"id":4378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"18809:8:16","subExpression":{"id":4377,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4368,"src":"18810:7:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4387,"nodeType":"IfStatement","src":"18805:74:16","trueBody":{"id":4386,"nodeType":"Block","src":"18819:60:16","statements":[{"expression":{"arguments":[{"expression":{"id":4382,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"18845:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Panic_$1120_$","typeString":"type(library Panic)"}},"id":4383,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"18851:16:16","memberName":"DIVISION_BY_ZERO","nodeType":"MemberAccess","referencedDeclaration":1087,"src":"18845:22:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":4379,"name":"Panic","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1120,"src":"18833:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8541120_$","typeString":"type(library Panic)"}},"id":4381,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18839:5:16","memberName":"panic","nodeType":"MemberAccess","referencedDeclaration":1119,"src":"18833:11:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":4384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18833:35:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":4385,"nodeType":"ExpressionStatement","src":"18833:35:16"}]}},{"expression":{"id":4388,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4370,"src":"18895:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":4366,"id":4389,"nodeType":"Return","src":"18888:13:16"}]},"documentation":{"id":4356,"nodeType":"StructuredDocumentation","src":"18538:85:16","text":" @dev Variant of {modExp} that supports inputs of arbitrary length."},"id":4391,"implemented":true,"kind":"function","modifiers":[],"name":"modExp","nameLocation":"18637:6:16","nodeType":"FunctionDefinition","parameters":{"id":4363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4358,"mutability":"mutable","name":"b","nameLocation":"18657:1:16","nodeType":"VariableDeclaration","scope":4391,"src":"18644:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4357,"name":"bytes","nodeType":"ElementaryTypeName","src":"18644:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4360,"mutability":"mutable","name":"e","nameLocation":"18673:1:16","nodeType":"VariableDeclaration","scope":4391,"src":"18660:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4359,"name":"bytes","nodeType":"ElementaryTypeName","src":"18660:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4362,"mutability":"mutable","name":"m","nameLocation":"18689:1:16","nodeType":"VariableDeclaration","scope":4391,"src":"18676:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4361,"name":"bytes","nodeType":"ElementaryTypeName","src":"18676:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18643:48:16"},"returnParameters":{"id":4366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4365,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4391,"src":"18715:12:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4364,"name":"bytes","nodeType":"ElementaryTypeName","src":"18715:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"18714:14:16"},"scope":5145,"src":"18628:280:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4436,"nodeType":"Block","src":"19162:771:16","statements":[{"condition":{"arguments":[{"id":4406,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"19187:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":4405,"name":"_zeroBytes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4470,"src":"19176:10:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (bytes memory) pure returns (bool)"}},"id":4407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19176:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4415,"nodeType":"IfStatement","src":"19172:47:16","trueBody":{"expression":{"components":[{"hexValue":"66616c7365","id":4408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"19199:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},{"arguments":[{"hexValue":"30","id":4411,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19216:1:16","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":4410,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"19206:9:16","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$","typeString":"function (uint256) pure returns (bytes memory)"},"typeName":{"id":4409,"name":"bytes","nodeType":"ElementaryTypeName","src":"19210:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}}},"id":4412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19206:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"id":4413,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"19198:21:16","typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"functionReturnParameters":4404,"id":4414,"nodeType":"Return","src":"19191:28:16"}},{"assignments":[4417],"declarations":[{"constant":false,"id":4417,"mutability":"mutable","name":"mLen","nameLocation":"19238:4:16","nodeType":"VariableDeclaration","scope":4436,"src":"19230:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4416,"name":"uint256","nodeType":"ElementaryTypeName","src":"19230:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4420,"initialValue":{"expression":{"id":4418,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"19245:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4419,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19247:6:16","memberName":"length","nodeType":"MemberAccess","src":"19245:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19230:23:16"},{"expression":{"id":4433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4421,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4403,"src":"19335:6:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":4424,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4394,"src":"19361:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19363:6:16","memberName":"length","nodeType":"MemberAccess","src":"19361:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":4426,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"19371:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4427,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19373:6:16","memberName":"length","nodeType":"MemberAccess","src":"19371:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4428,"name":"mLen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4417,"src":"19381:4:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":4429,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4394,"src":"19387:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4430,"name":"e","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4396,"src":"19390:1:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":4431,"name":"m","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4398,"src":"19393:1:16","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":4422,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"19344:3:16","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":4423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19348:12:16","memberName":"encodePacked","nodeType":"MemberAccess","src":"19344:16:16","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":4432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:51:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"19335:60:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4434,"nodeType":"ExpressionStatement","src":"19335:60:16"},{"AST":{"nativeSrc":"19431:496:16","nodeType":"YulBlock","src":"19431:496:16","statements":[{"nativeSrc":"19445:32:16","nodeType":"YulVariableDeclaration","src":"19445:32:16","value":{"arguments":[{"name":"result","nativeSrc":"19464:6:16","nodeType":"YulIdentifier","src":"19464:6:16"},{"kind":"number","nativeSrc":"19472:4:16","nodeType":"YulLiteral","src":"19472:4:16","type":"","value":"0x20"}],"functionName":{"name":"add","nativeSrc":"19460:3:16","nodeType":"YulIdentifier","src":"19460:3:16"},"nativeSrc":"19460:17:16","nodeType":"YulFunctionCall","src":"19460:17:16"},"variables":[{"name":"dataPtr","nativeSrc":"19449:7:16","nodeType":"YulTypedName","src":"19449:7:16","type":""}]},{"nativeSrc":"19567:73:16","nodeType":"YulAssignment","src":"19567:73:16","value":{"arguments":[{"arguments":[],"functionName":{"name":"gas","nativeSrc":"19589:3:16","nodeType":"YulIdentifier","src":"19589:3:16"},"nativeSrc":"19589:5:16","nodeType":"YulFunctionCall","src":"19589:5:16"},{"kind":"number","nativeSrc":"19596:4:16","nodeType":"YulLiteral","src":"19596:4:16","type":"","value":"0x05"},{"name":"dataPtr","nativeSrc":"19602:7:16","nodeType":"YulIdentifier","src":"19602:7:16"},{"arguments":[{"name":"result","nativeSrc":"19617:6:16","nodeType":"YulIdentifier","src":"19617:6:16"}],"functionName":{"name":"mload","nativeSrc":"19611:5:16","nodeType":"YulIdentifier","src":"19611:5:16"},"nativeSrc":"19611:13:16","nodeType":"YulFunctionCall","src":"19611:13:16"},{"name":"dataPtr","nativeSrc":"19626:7:16","nodeType":"YulIdentifier","src":"19626:7:16"},{"name":"mLen","nativeSrc":"19635:4:16","nodeType":"YulIdentifier","src":"19635:4:16"}],"functionName":{"name":"staticcall","nativeSrc":"19578:10:16","nodeType":"YulIdentifier","src":"19578:10:16"},"nativeSrc":"19578:62:16","nodeType":"YulFunctionCall","src":"19578:62:16"},"variableNames":[{"name":"success","nativeSrc":"19567:7:16","nodeType":"YulIdentifier","src":"19567:7:16"}]},{"expression":{"arguments":[{"name":"result","nativeSrc":"19796:6:16","nodeType":"YulIdentifier","src":"19796:6:16"},{"name":"mLen","nativeSrc":"19804:4:16","nodeType":"YulIdentifier","src":"19804:4:16"}],"functionName":{"name":"mstore","nativeSrc":"19789:6:16","nodeType":"YulIdentifier","src":"19789:6:16"},"nativeSrc":"19789:20:16","nodeType":"YulFunctionCall","src":"19789:20:16"},"nativeSrc":"19789:20:16","nodeType":"YulExpressionStatement","src":"19789:20:16"},{"expression":{"arguments":[{"kind":"number","nativeSrc":"19892:4:16","nodeType":"YulLiteral","src":"19892:4:16","type":"","value":"0x40"},{"arguments":[{"name":"dataPtr","nativeSrc":"19902:7:16","nodeType":"YulIdentifier","src":"19902:7:16"},{"name":"mLen","nativeSrc":"19911:4:16","nodeType":"YulIdentifier","src":"19911:4:16"}],"functionName":{"name":"add","nativeSrc":"19898:3:16","nodeType":"YulIdentifier","src":"19898:3:16"},"nativeSrc":"19898:18:16","nodeType":"YulFunctionCall","src":"19898:18:16"}],"functionName":{"name":"mstore","nativeSrc":"19885:6:16","nodeType":"YulIdentifier","src":"19885:6:16"},"nativeSrc":"19885:32:16","nodeType":"YulFunctionCall","src":"19885:32:16"},"nativeSrc":"19885:32:16","nodeType":"YulExpressionStatement","src":"19885:32:16"}]},"evmVersion":"paris","externalReferences":[{"declaration":4417,"isOffset":false,"isSlot":false,"src":"19635:4:16","valueSize":1},{"declaration":4417,"isOffset":false,"isSlot":false,"src":"19804:4:16","valueSize":1},{"declaration":4417,"isOffset":false,"isSlot":false,"src":"19911:4:16","valueSize":1},{"declaration":4403,"isOffset":false,"isSlot":false,"src":"19464:6:16","valueSize":1},{"declaration":4403,"isOffset":false,"isSlot":false,"src":"19617:6:16","valueSize":1},{"declaration":4403,"isOffset":false,"isSlot":false,"src":"19796:6:16","valueSize":1},{"declaration":4401,"isOffset":false,"isSlot":false,"src":"19567:7:16","valueSize":1}],"flags":["memory-safe"],"id":4435,"nodeType":"InlineAssembly","src":"19406:521:16"}]},"documentation":{"id":4392,"nodeType":"StructuredDocumentation","src":"18914:88:16","text":" @dev Variant of {tryModExp} that supports inputs of arbitrary length."},"id":4437,"implemented":true,"kind":"function","modifiers":[],"name":"tryModExp","nameLocation":"19016:9:16","nodeType":"FunctionDefinition","parameters":{"id":4399,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4394,"mutability":"mutable","name":"b","nameLocation":"19048:1:16","nodeType":"VariableDeclaration","scope":4437,"src":"19035:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4393,"name":"bytes","nodeType":"ElementaryTypeName","src":"19035:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4396,"mutability":"mutable","name":"e","nameLocation":"19072:1:16","nodeType":"VariableDeclaration","scope":4437,"src":"19059:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4395,"name":"bytes","nodeType":"ElementaryTypeName","src":"19059:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":4398,"mutability":"mutable","name":"m","nameLocation":"19096:1:16","nodeType":"VariableDeclaration","scope":4437,"src":"19083:14:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4397,"name":"bytes","nodeType":"ElementaryTypeName","src":"19083:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19025:78:16"},"returnParameters":{"id":4404,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4401,"mutability":"mutable","name":"success","nameLocation":"19132:7:16","nodeType":"VariableDeclaration","scope":4437,"src":"19127:12:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4400,"name":"bool","nodeType":"ElementaryTypeName","src":"19127:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":4403,"mutability":"mutable","name":"result","nameLocation":"19154:6:16","nodeType":"VariableDeclaration","scope":4437,"src":"19141:19:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4402,"name":"bytes","nodeType":"ElementaryTypeName","src":"19141:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19126:35:16"},"scope":5145,"src":"19007:926:16","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":4469,"nodeType":"Block","src":"20088:176:16","statements":[{"body":{"id":4465,"nodeType":"Block","src":"20145:92:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"id":4460,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":4456,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4440,"src":"20163:9:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4458,"indexExpression":{"id":4457,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"20173:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20163:12:16","typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":4459,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20179:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20163:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4464,"nodeType":"IfStatement","src":"20159:68:16","trueBody":{"id":4463,"nodeType":"Block","src":"20182:45:16","statements":[{"expression":{"hexValue":"66616c7365","id":4461,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20207:5:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":4444,"id":4462,"nodeType":"Return","src":"20200:12:16"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4452,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4449,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"20118:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":4450,"name":"byteArray","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4440,"src":"20122:9:16","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":4451,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20132:6:16","memberName":"length","nodeType":"MemberAccess","src":"20122:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20118:20:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4466,"initializationExpression":{"assignments":[4446],"declarations":[{"constant":false,"id":4446,"mutability":"mutable","name":"i","nameLocation":"20111:1:16","nodeType":"VariableDeclaration","scope":4466,"src":"20103:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4445,"name":"uint256","nodeType":"ElementaryTypeName","src":"20103:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4448,"initialValue":{"hexValue":"30","id":4447,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20115:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20103:13:16"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":4454,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"20140:3:16","subExpression":{"id":4453,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4446,"src":"20142:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4455,"nodeType":"ExpressionStatement","src":"20140:3:16"},"nodeType":"ForStatement","src":"20098:139:16"},{"expression":{"hexValue":"74727565","id":4467,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"20253:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":4444,"id":4468,"nodeType":"Return","src":"20246:11:16"}]},"documentation":{"id":4438,"nodeType":"StructuredDocumentation","src":"19939:72:16","text":" @dev Returns whether the provided byte array is zero."},"id":4470,"implemented":true,"kind":"function","modifiers":[],"name":"_zeroBytes","nameLocation":"20025:10:16","nodeType":"FunctionDefinition","parameters":{"id":4441,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4440,"mutability":"mutable","name":"byteArray","nameLocation":"20049:9:16","nodeType":"VariableDeclaration","scope":4470,"src":"20036:22:16","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":4439,"name":"bytes","nodeType":"ElementaryTypeName","src":"20036:5:16","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20035:24:16"},"returnParameters":{"id":4444,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4443,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4470,"src":"20082:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":4442,"name":"bool","nodeType":"ElementaryTypeName","src":"20082:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"20081:6:16"},"scope":5145,"src":"20016:248:16","stateMutability":"pure","virtual":false,"visibility":"private"},{"body":{"id":4688,"nodeType":"Block","src":"20624:5124:16","statements":[{"id":4687,"nodeType":"UncheckedBlock","src":"20634:5108:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4478,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"20728:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"hexValue":"31","id":4479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20733:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20728:6:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4484,"nodeType":"IfStatement","src":"20724:53:16","trueBody":{"id":4483,"nodeType":"Block","src":"20736:41:16","statements":[{"expression":{"id":4481,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"20761:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4477,"id":4482,"nodeType":"Return","src":"20754:8:16"}]}},{"assignments":[4486],"declarations":[{"constant":false,"id":4486,"mutability":"mutable","name":"aa","nameLocation":"21712:2:16","nodeType":"VariableDeclaration","scope":4687,"src":"21704:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4485,"name":"uint256","nodeType":"ElementaryTypeName","src":"21704:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4488,"initialValue":{"id":4487,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"21717:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"21704:14:16"},{"assignments":[4490],"declarations":[{"constant":false,"id":4490,"mutability":"mutable","name":"xn","nameLocation":"21740:2:16","nodeType":"VariableDeclaration","scope":4687,"src":"21732:10:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4489,"name":"uint256","nodeType":"ElementaryTypeName","src":"21732:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4492,"initialValue":{"hexValue":"31","id":4491,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21745:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"21732:14:16"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4498,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4493,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"21765:2:16","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":4496,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21772:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"313238","id":4495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21777:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21772:8:16","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}}],"id":4497,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21771:10:16","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"}},"src":"21765:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4508,"nodeType":"IfStatement","src":"21761:92:16","trueBody":{"id":4507,"nodeType":"Block","src":"21783:70:16","statements":[{"expression":{"id":4501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4499,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"21801:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"313238","id":4500,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21808:3:16","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},"src":"21801:10:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4502,"nodeType":"ExpressionStatement","src":"21801:10:16"},{"expression":{"id":4505,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4503,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"21829:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3634","id":4504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21836:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21829:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4506,"nodeType":"ExpressionStatement","src":"21829:9:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4514,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4509,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"21870:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"},"id":4512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21877:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3634","id":4511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21882:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21877:7:16","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}}],"id":4513,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21876:9:16","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551616_by_1","typeString":"int_const 18446744073709551616"}},"src":"21870:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4524,"nodeType":"IfStatement","src":"21866:90:16","trueBody":{"id":4523,"nodeType":"Block","src":"21887:69:16","statements":[{"expression":{"id":4517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4515,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"21905:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3634","id":4516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21912:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"21905:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4518,"nodeType":"ExpressionStatement","src":"21905:9:16"},{"expression":{"id":4521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4519,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"21932:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3332","id":4520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21939:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21932:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4522,"nodeType":"ExpressionStatement","src":"21932:9:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4525,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"21973:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"},"id":4528,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4526,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21980:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3332","id":4527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21985:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"21980:7:16","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}}],"id":4529,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"21979:9:16","typeDescriptions":{"typeIdentifier":"t_rational_4294967296_by_1","typeString":"int_const 4294967296"}},"src":"21973:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4540,"nodeType":"IfStatement","src":"21969:90:16","trueBody":{"id":4539,"nodeType":"Block","src":"21990:69:16","statements":[{"expression":{"id":4533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4531,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22008:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3332","id":4532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22015:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"22008:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4534,"nodeType":"ExpressionStatement","src":"22008:9:16"},{"expression":{"id":4537,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4535,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22035:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"3136","id":4536,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22042:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22035:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4538,"nodeType":"ExpressionStatement","src":"22035:9:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4546,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4541,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22076:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"},"id":4544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22083:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"3136","id":4543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22088:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22083:7:16","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}}],"id":4545,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22082:9:16","typeDescriptions":{"typeIdentifier":"t_rational_65536_by_1","typeString":"int_const 65536"}},"src":"22076:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4556,"nodeType":"IfStatement","src":"22072:89:16","trueBody":{"id":4555,"nodeType":"Block","src":"22093:68:16","statements":[{"expression":{"id":4549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4547,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22111:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"3136","id":4548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22118:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"22111:9:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4550,"nodeType":"ExpressionStatement","src":"22111:9:16"},{"expression":{"id":4553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4551,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22138:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"38","id":4552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22145:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22138:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4554,"nodeType":"ExpressionStatement","src":"22138:8:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4557,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22178:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"},"id":4560,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22185:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"38","id":4559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22190:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22185:6:16","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}}],"id":4561,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22184:8:16","typeDescriptions":{"typeIdentifier":"t_rational_256_by_1","typeString":"int_const 256"}},"src":"22178:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4572,"nodeType":"IfStatement","src":"22174:87:16","trueBody":{"id":4571,"nodeType":"Block","src":"22194:67:16","statements":[{"expression":{"id":4565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4563,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22212:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"38","id":4564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22219:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"22212:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4566,"nodeType":"ExpressionStatement","src":"22212:8:16"},{"expression":{"id":4569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4567,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22238:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"34","id":4568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22245:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22238:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4570,"nodeType":"ExpressionStatement","src":"22238:8:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4573,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22278:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"id":4576,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4574,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22285:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4575,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22290:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22285:6:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}}],"id":4577,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22284:8:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}},"src":"22278:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4588,"nodeType":"IfStatement","src":"22274:87:16","trueBody":{"id":4587,"nodeType":"Block","src":"22294:67:16","statements":[{"expression":{"id":4581,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4579,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22312:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":">>=","rightHandSide":{"hexValue":"34","id":4580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22319:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"22312:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4582,"nodeType":"ExpressionStatement","src":"22312:8:16"},{"expression":{"id":4585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4583,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22338:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"32","id":4584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22345:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22338:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4586,"nodeType":"ExpressionStatement","src":"22338:8:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4589,"name":"aa","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4486,"src":"22378:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"id":4592,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4590,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22385:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4591,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22390:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"22385:6:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}}],"id":4593,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"TupleExpression","src":"22384:8:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}},"src":"22378:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4600,"nodeType":"IfStatement","src":"22374:61:16","trueBody":{"id":4599,"nodeType":"Block","src":"22394:41:16","statements":[{"expression":{"id":4597,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4595,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22412:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"<<=","rightHandSide":{"hexValue":"31","id":4596,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22419:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22412:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4598,"nodeType":"ExpressionStatement","src":"22412:8:16"}]}},{"expression":{"id":4608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4601,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22855:2:16","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":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"33","id":4602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22861:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4603,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"22865:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22861:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4605,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"22860:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4606,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22872:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"22860:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22855:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4609,"nodeType":"ExpressionStatement","src":"22855:18:16"},{"expression":{"id":4619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4610,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24760:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4611,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24766:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4614,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4612,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"24771:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4613,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24775:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24771:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24766:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4616,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24765:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24782:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24765:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24760:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4620,"nodeType":"ExpressionStatement","src":"24760:23:16"},{"expression":{"id":4630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4621,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24869:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4622,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24875:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4623,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"24880:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4624,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24884:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24880:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24875:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4627,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24874:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24891:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24874:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24869:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4631,"nodeType":"ExpressionStatement","src":"24869:23:16"},{"expression":{"id":4641,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4632,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24980:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4633,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24986:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4636,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4634,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"24991:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4635,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"24995:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24991:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24986:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4638,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"24985:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4639,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25002:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"24985:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"24980:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4642,"nodeType":"ExpressionStatement","src":"24980:23:16"},{"expression":{"id":4652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4643,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25089:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4651,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4644,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25095:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4647,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4645,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"25100:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4646,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25104:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25100:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25095:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4649,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25094:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4650,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25111:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25094:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25089:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4653,"nodeType":"ExpressionStatement","src":"25089:23:16"},{"expression":{"id":4663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4654,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25199:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4655,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25205:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4656,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"25210:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4657,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25214:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25210:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25205:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4660,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25204:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4661,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25221:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25204:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25199:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4664,"nodeType":"ExpressionStatement","src":"25199:23:16"},{"expression":{"id":4674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4665,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25309:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4666,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25315:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4667,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"25320:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4668,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25324:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25320:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25315:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4671,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"25314:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":4672,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25331:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"25314:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25309:23:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4675,"nodeType":"ExpressionStatement","src":"25309:23:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4676,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25698:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4679,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25719:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4682,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4680,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4473,"src":"25724:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":4681,"name":"xn","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4490,"src":"25728:2:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25724:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25719:11:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4677,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"25703:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6910_$","typeString":"type(library SafeCast)"}},"id":4678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25712:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"25703:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4684,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25703:28:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25698:33:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4477,"id":4686,"nodeType":"Return","src":"25691:40:16"}]}]},"documentation":{"id":4471,"nodeType":"StructuredDocumentation","src":"20270:292:16","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":4689,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"20576:4:16","nodeType":"FunctionDefinition","parameters":{"id":4474,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4473,"mutability":"mutable","name":"a","nameLocation":"20589:1:16","nodeType":"VariableDeclaration","scope":4689,"src":"20581:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4472,"name":"uint256","nodeType":"ElementaryTypeName","src":"20581:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20580:11:16"},"returnParameters":{"id":4477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4689,"src":"20615:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4475,"name":"uint256","nodeType":"ElementaryTypeName","src":"20615:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"20614:9:16"},"scope":5145,"src":"20567:5181:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4722,"nodeType":"Block","src":"25921:171:16","statements":[{"id":4721,"nodeType":"UncheckedBlock","src":"25931:155:16","statements":[{"assignments":[4701],"declarations":[{"constant":false,"id":4701,"mutability":"mutable","name":"result","nameLocation":"25963:6:16","nodeType":"VariableDeclaration","scope":4721,"src":"25955:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4700,"name":"uint256","nodeType":"ElementaryTypeName","src":"25955:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4705,"initialValue":{"arguments":[{"id":4703,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"25977:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4702,"name":"sqrt","nodeType":"Identifier","overloadedDeclarations":[4689,4723],"referencedDeclaration":4689,"src":"25972:4:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4704,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25972:7:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"25955:24:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4706,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4701,"src":"26000:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4717,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4710,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4695,"src":"26042:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_8723536","typeString":"enum Math.Rounding"}],"id":4709,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"26025:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26025:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4712,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4701,"src":"26055:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":4713,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4701,"src":"26064:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:15:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4715,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4692,"src":"26073:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26055:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"26025:49:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4707,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26009:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8766910_$","typeString":"type(library SafeCast)"}},"id":4708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26018:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26009:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4718,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26009:66:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26000:75:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4699,"id":4720,"nodeType":"Return","src":"25993:82:16"}]}]},"documentation":{"id":4690,"nodeType":"StructuredDocumentation","src":"25754:86:16","text":" @dev Calculates sqrt(a), following the selected rounding direction."},"id":4723,"implemented":true,"kind":"function","modifiers":[],"name":"sqrt","nameLocation":"25854:4:16","nodeType":"FunctionDefinition","parameters":{"id":4696,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4692,"mutability":"mutable","name":"a","nameLocation":"25867:1:16","nodeType":"VariableDeclaration","scope":4723,"src":"25859:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4691,"name":"uint256","nodeType":"ElementaryTypeName","src":"25859:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4695,"mutability":"mutable","name":"rounding","nameLocation":"25879:8:16","nodeType":"VariableDeclaration","scope":4723,"src":"25870:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":4694,"nodeType":"UserDefinedTypeName","pathNode":{"id":4693,"name":"Rounding","nameLocations":["25870:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"25870:8:16"},"referencedDeclaration":3536,"src":"25870:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_8803536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"25858:30:16"},"returnParameters":{"id":4699,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4698,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4723,"src":"25912:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4697,"name":"uint256","nodeType":"ElementaryTypeName","src":"25912:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"25911:9:16"},"scope":5145,"src":"25845:247:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4813,"nodeType":"Block","src":"26281:2334:16","statements":[{"expression":{"id":4740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4731,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26363:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4736,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4734,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"26383:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":4735,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26387:34:16","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"26383:38:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4732,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26367:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6910_$","typeString":"type(library SafeCast)"}},"id":4733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26376:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26367:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4737,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26367:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":4738,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26426:1:16","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"26367:60:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26363:64:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4741,"nodeType":"ExpressionStatement","src":"26363:64:16"},{"expression":{"id":4754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4742,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26503:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4750,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4745,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"26525:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4746,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26530:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26525:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26524:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":4749,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26535:18:16","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"26524:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4743,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26508:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8856910_$","typeString":"type(library SafeCast)"}},"id":4744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26517:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26508:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26508:46:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":4752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26558:1:16","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"26508:51:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26503:56:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4755,"nodeType":"ExpressionStatement","src":"26503:56:16"},{"expression":{"id":4768,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4756,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26634:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4767,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4761,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4759,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"26656:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4760,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26661:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26656:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4762,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26655:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":4763,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26666:10:16","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"26655:21:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4757,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26639:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8896910_$","typeString":"type(library SafeCast)"}},"id":4758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26648:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26639:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26639:38:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":4766,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26681:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"26639:43:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26634:48:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4769,"nodeType":"ExpressionStatement","src":"26634:48:16"},{"expression":{"id":4782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4770,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26757:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4773,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"26779:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4774,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26784:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26779:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4776,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26778:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":4777,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26789:6:16","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"26778:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4771,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26762:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8936910_$","typeString":"type(library SafeCast)"}},"id":4772,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26771:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26762:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4779,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26762:34:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":4780,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26800:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"26762:39:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26757:44:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4783,"nodeType":"ExpressionStatement","src":"26757:44:16"},{"expression":{"id":4796,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4784,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26874:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4789,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4787,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"26896:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4788,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26901:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26896:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4790,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"26895:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":4791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26906:4:16","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"26895:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4785,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26879:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_8976910_$","typeString":"type(library SafeCast)"}},"id":4786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26888:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26879:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4793,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26879:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":4794,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26915:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"26879:37:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26874:42:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4797,"nodeType":"ExpressionStatement","src":"26874:42:16"},{"expression":{"id":4810,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4798,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"26988:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4801,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4726,"src":"27010:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":4802,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4729,"src":"27015:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27010:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":4804,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27009:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866","id":4805,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27020:3:16","typeDescriptions":{"typeIdentifier":"t_rational_15_by_1","typeString":"int_const 15"},"value":"0xf"},"src":"27009:14:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4799,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"26993:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9016910_$","typeString":"type(library SafeCast)"}},"id":4800,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27002:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"26993:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26993:31:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"32","id":4808,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27028:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"26993:36:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26988:41:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4811,"nodeType":"ExpressionStatement","src":"26988:41:16"},{"AST":{"nativeSrc":"28490:119:16","nodeType":"YulBlock","src":"28490:119:16","statements":[{"nativeSrc":"28504:95:16","nodeType":"YulAssignment","src":"28504:95:16","value":{"arguments":[{"name":"r","nativeSrc":"28512:1:16","nodeType":"YulIdentifier","src":"28512:1:16"},{"arguments":[{"arguments":[{"name":"r","nativeSrc":"28524:1:16","nodeType":"YulIdentifier","src":"28524:1:16"},{"name":"x","nativeSrc":"28527:1:16","nodeType":"YulIdentifier","src":"28527:1:16"}],"functionName":{"name":"shr","nativeSrc":"28520:3:16","nodeType":"YulIdentifier","src":"28520:3:16"},"nativeSrc":"28520:9:16","nodeType":"YulFunctionCall","src":"28520:9:16"},{"kind":"number","nativeSrc":"28531:66:16","nodeType":"YulLiteral","src":"28531:66:16","type":"","value":"0x0000010102020202030303030303030300000000000000000000000000000000"}],"functionName":{"name":"byte","nativeSrc":"28515:4:16","nodeType":"YulIdentifier","src":"28515:4:16"},"nativeSrc":"28515:83:16","nodeType":"YulFunctionCall","src":"28515:83:16"}],"functionName":{"name":"or","nativeSrc":"28509:2:16","nodeType":"YulIdentifier","src":"28509:2:16"},"nativeSrc":"28509:90:16","nodeType":"YulFunctionCall","src":"28509:90:16"},"variableNames":[{"name":"r","nativeSrc":"28504:1:16","nodeType":"YulIdentifier","src":"28504:1:16"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":4729,"isOffset":false,"isSlot":false,"src":"28504:1:16","valueSize":1},{"declaration":4729,"isOffset":false,"isSlot":false,"src":"28512:1:16","valueSize":1},{"declaration":4729,"isOffset":false,"isSlot":false,"src":"28524:1:16","valueSize":1},{"declaration":4726,"isOffset":false,"isSlot":false,"src":"28527:1:16","valueSize":1}],"flags":["memory-safe"],"id":4812,"nodeType":"InlineAssembly","src":"28465:144:16"}]},"documentation":{"id":4724,"nodeType":"StructuredDocumentation","src":"26098:119:16","text":" @dev Return the log in base 2 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4814,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"26231:4:16","nodeType":"FunctionDefinition","parameters":{"id":4727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4726,"mutability":"mutable","name":"x","nameLocation":"26244:1:16","nodeType":"VariableDeclaration","scope":4814,"src":"26236:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4725,"name":"uint256","nodeType":"ElementaryTypeName","src":"26236:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26235:11:16"},"returnParameters":{"id":4730,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4729,"mutability":"mutable","name":"r","nameLocation":"26278:1:16","nodeType":"VariableDeclaration","scope":4814,"src":"26270:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4728,"name":"uint256","nodeType":"ElementaryTypeName","src":"26270:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26269:11:16"},"scope":5145,"src":"26222:2393:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4847,"nodeType":"Block","src":"28848:175:16","statements":[{"id":4846,"nodeType":"UncheckedBlock","src":"28858:159:16","statements":[{"assignments":[4826],"declarations":[{"constant":false,"id":4826,"mutability":"mutable","name":"result","nameLocation":"28890:6:16","nodeType":"VariableDeclaration","scope":4846,"src":"28882:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4825,"name":"uint256","nodeType":"ElementaryTypeName","src":"28882:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4830,"initialValue":{"arguments":[{"id":4828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4817,"src":"28904:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4827,"name":"log2","nodeType":"Identifier","overloadedDeclarations":[4814,4848],"referencedDeclaration":4814,"src":"28899:4:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28899:11:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28882:28:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4844,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4831,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"28931:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":4842,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4835,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4820,"src":"28973:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9073536","typeString":"enum Math.Rounding"}],"id":4834,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"28956:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28956:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4841,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4839,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":4837,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28986:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"id":4838,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4826,"src":"28991:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":4840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4817,"src":"29000:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28986:19:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"28956:49:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4832,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"28940:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9116910_$","typeString":"type(library SafeCast)"}},"id":4833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28949:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"28940:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":4843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28940:66:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28931:75:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4824,"id":4845,"nodeType":"Return","src":"28924:82:16"}]}]},"documentation":{"id":4815,"nodeType":"StructuredDocumentation","src":"28621:142:16","text":" @dev Return the log in base 2, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":4848,"implemented":true,"kind":"function","modifiers":[],"name":"log2","nameLocation":"28777:4:16","nodeType":"FunctionDefinition","parameters":{"id":4821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4817,"mutability":"mutable","name":"value","nameLocation":"28790:5:16","nodeType":"VariableDeclaration","scope":4848,"src":"28782:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4816,"name":"uint256","nodeType":"ElementaryTypeName","src":"28782:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4820,"mutability":"mutable","name":"rounding","nameLocation":"28806:8:16","nodeType":"VariableDeclaration","scope":4848,"src":"28797:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":4819,"nodeType":"UserDefinedTypeName","pathNode":{"id":4818,"name":"Rounding","nameLocations":["28797:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"28797:8:16"},"referencedDeclaration":3536,"src":"28797:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9153536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"28781:34:16"},"returnParameters":{"id":4824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4823,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4848,"src":"28839:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4822,"name":"uint256","nodeType":"ElementaryTypeName","src":"28839:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"28838:9:16"},"scope":5145,"src":"28768:255:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":4976,"nodeType":"Block","src":"29216:854:16","statements":[{"assignments":[4857],"declarations":[{"constant":false,"id":4857,"mutability":"mutable","name":"result","nameLocation":"29234:6:16","nodeType":"VariableDeclaration","scope":4976,"src":"29226:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4856,"name":"uint256","nodeType":"ElementaryTypeName","src":"29226:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4859,"initialValue":{"hexValue":"30","id":4858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29243:1:16","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"29226:18:16"},{"id":4973,"nodeType":"UncheckedBlock","src":"29254:787:16","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4860,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29282:5:16","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":4863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29291:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29297:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29291:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29282:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4876,"nodeType":"IfStatement","src":"29278:103:16","trueBody":{"id":4875,"nodeType":"Block","src":"29301:80:16","statements":[{"expression":{"id":4869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4865,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29319:5:16","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":4868,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4866,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29328:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3634","id":4867,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29334:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29328:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000000000000000000000000000000000000000000000000000_by_1","typeString":"int_const 1000...(57 digits omitted)...0000"}},"src":"29319:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4870,"nodeType":"ExpressionStatement","src":"29319:17:16"},{"expression":{"id":4873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4871,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29354:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3634","id":4872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29364:2:16","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},"src":"29354:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4874,"nodeType":"ExpressionStatement","src":"29354:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4877,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29398:5:16","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":4880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4878,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29407:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4879,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29413:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29407:8:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29398:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4893,"nodeType":"IfStatement","src":"29394:103:16","trueBody":{"id":4892,"nodeType":"Block","src":"29417:80:16","statements":[{"expression":{"id":4886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4882,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29435:5:16","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":4885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29444:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3332","id":4884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29450:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29444:8:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000000000000000000000000000_by_1","typeString":"int_const 1000...(25 digits omitted)...0000"}},"src":"29435:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4887,"nodeType":"ExpressionStatement","src":"29435:17:16"},{"expression":{"id":4890,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4888,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29470:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3332","id":4889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29480:2:16","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},"src":"29470:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4891,"nodeType":"ExpressionStatement","src":"29470:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4898,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4894,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29514:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4897,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4895,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29523:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4896,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29529:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29523:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29514:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4910,"nodeType":"IfStatement","src":"29510:103:16","trueBody":{"id":4909,"nodeType":"Block","src":"29533:80:16","statements":[{"expression":{"id":4903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4899,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29551:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"},"id":4902,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29560:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"3136","id":4901,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29566:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29560:8:16","typeDescriptions":{"typeIdentifier":"t_rational_10000000000000000_by_1","typeString":"int_const 10000000000000000"}},"src":"29551:17:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4904,"nodeType":"ExpressionStatement","src":"29551:17:16"},{"expression":{"id":4907,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4905,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29586:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"3136","id":4906,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29596:2:16","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},"src":"29586:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4908,"nodeType":"ExpressionStatement","src":"29586:12:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4911,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29630:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29639:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29645:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29639:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29630:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4927,"nodeType":"IfStatement","src":"29626:100:16","trueBody":{"id":4926,"nodeType":"Block","src":"29648:78:16","statements":[{"expression":{"id":4920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4916,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29666:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"id":4919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29675:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"38","id":4918,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29681:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29675:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"}},"src":"29666:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4921,"nodeType":"ExpressionStatement","src":"29666:16:16"},{"expression":{"id":4924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4922,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29700:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"38","id":4923,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29710:1:16","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"src":"29700:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4925,"nodeType":"ExpressionStatement","src":"29700:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4928,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29743:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4931,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29752:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4930,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29758:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29752:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29743:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4944,"nodeType":"IfStatement","src":"29739:100:16","trueBody":{"id":4943,"nodeType":"Block","src":"29761:78:16","statements":[{"expression":{"id":4937,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4933,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29779:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"id":4936,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29788:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"34","id":4935,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29794:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29788:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"}},"src":"29779:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4938,"nodeType":"ExpressionStatement","src":"29779:16:16"},{"expression":{"id":4941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4939,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29813:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"34","id":4940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29823:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"29813:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4942,"nodeType":"ExpressionStatement","src":"29813:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29856:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4948,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4946,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29865:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4947,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29871:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29865:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29856:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4961,"nodeType":"IfStatement","src":"29852:100:16","trueBody":{"id":4960,"nodeType":"Block","src":"29874:78:16","statements":[{"expression":{"id":4954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4950,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29892:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"/=","rightHandSide":{"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"id":4953,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4951,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29901:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"32","id":4952,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29907:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29901:7:16","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"}},"src":"29892:16:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4955,"nodeType":"ExpressionStatement","src":"29892:16:16"},{"expression":{"id":4958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4956,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"29926:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"32","id":4957,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29936:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"29926:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4959,"nodeType":"ExpressionStatement","src":"29926:11:16"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":4966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4962,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4851,"src":"29969:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"id":4965,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":4963,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29978:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"hexValue":"31","id":4964,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29984:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"29978:7:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}},"src":"29969:16:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":4972,"nodeType":"IfStatement","src":"29965:66:16","trueBody":{"id":4971,"nodeType":"Block","src":"29987:44:16","statements":[{"expression":{"id":4969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":4967,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"30005:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":4968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30015:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"30005:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":4970,"nodeType":"ExpressionStatement","src":"30005:11:16"}]}}]},{"expression":{"id":4974,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4857,"src":"30057:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4855,"id":4975,"nodeType":"Return","src":"30050:13:16"}]},"documentation":{"id":4849,"nodeType":"StructuredDocumentation","src":"29029:120:16","text":" @dev Return the log in base 10 of a positive value rounded towards zero.\n Returns 0 if given 0."},"id":4977,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"29163:5:16","nodeType":"FunctionDefinition","parameters":{"id":4852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4851,"mutability":"mutable","name":"value","nameLocation":"29177:5:16","nodeType":"VariableDeclaration","scope":4977,"src":"29169:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4850,"name":"uint256","nodeType":"ElementaryTypeName","src":"29169:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29168:15:16"},"returnParameters":{"id":4855,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4854,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":4977,"src":"29207:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4853,"name":"uint256","nodeType":"ElementaryTypeName","src":"29207:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"29206:9:16"},"scope":5145,"src":"29154:916:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5010,"nodeType":"Block","src":"30305:177:16","statements":[{"id":5009,"nodeType":"UncheckedBlock","src":"30315:161:16","statements":[{"assignments":[4989],"declarations":[{"constant":false,"id":4989,"mutability":"mutable","name":"result","nameLocation":"30347:6:16","nodeType":"VariableDeclaration","scope":5009,"src":"30339:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4988,"name":"uint256","nodeType":"ElementaryTypeName","src":"30339:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":4993,"initialValue":{"arguments":[{"id":4991,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"30362:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":4990,"name":"log10","nodeType":"Identifier","overloadedDeclarations":[4977,5011],"referencedDeclaration":4977,"src":"30356:5:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":4992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30356:12:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"30339:29:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5007,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":4994,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4989,"src":"30389:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5005,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":4998,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4983,"src":"30431:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9183536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9193536","typeString":"enum Math.Rounding"}],"id":4997,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"30414:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":4999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30414:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":5000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30444:2:16","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"id":5001,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4989,"src":"30450:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:12:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5003,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":4980,"src":"30459:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30444:20:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30414:50:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":4995,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"30398:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9236910_$","typeString":"type(library SafeCast)"}},"id":4996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30407:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"30398:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5006,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30398:67:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30389:76:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":4987,"id":5008,"nodeType":"Return","src":"30382:83:16"}]}]},"documentation":{"id":4978,"nodeType":"StructuredDocumentation","src":"30076:143:16","text":" @dev Return the log in base 10, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":5011,"implemented":true,"kind":"function","modifiers":[],"name":"log10","nameLocation":"30233:5:16","nodeType":"FunctionDefinition","parameters":{"id":4984,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4980,"mutability":"mutable","name":"value","nameLocation":"30247:5:16","nodeType":"VariableDeclaration","scope":5011,"src":"30239:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4979,"name":"uint256","nodeType":"ElementaryTypeName","src":"30239:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":4983,"mutability":"mutable","name":"rounding","nameLocation":"30263:8:16","nodeType":"VariableDeclaration","scope":5011,"src":"30254:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":4982,"nodeType":"UserDefinedTypeName","pathNode":{"id":4981,"name":"Rounding","nameLocations":["30254:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"30254:8:16"},"referencedDeclaration":3536,"src":"30254:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9273536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"30238:34:16"},"returnParameters":{"id":4987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":4986,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5011,"src":"30296:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":4985,"name":"uint256","nodeType":"ElementaryTypeName","src":"30296:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30295:9:16"},"scope":5145,"src":"30224:258:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5087,"nodeType":"Block","src":"30800:675:16","statements":[{"expression":{"id":5028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5019,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"30882:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5022,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"30902:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666666666666666666666666666666666666666666666666666","id":5023,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30906:34:16","typeDescriptions":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"value":"0xffffffffffffffffffffffffffffffff"},"src":"30902:38:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5020,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"30886:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6910_$","typeString":"type(library SafeCast)"}},"id":5021,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30895:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"30886:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5025,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30886:55:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"37","id":5026,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30945:1:16","typeDescriptions":{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},"value":"7"},"src":"30886:60:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30882:64:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5029,"nodeType":"ExpressionStatement","src":"30882:64:16"},{"expression":{"id":5042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5030,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31022:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5038,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5033,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"31044:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5034,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31049:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31044:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5036,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31043:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666666666666666666666666666","id":5037,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31054:18:16","typeDescriptions":{"typeIdentifier":"t_rational_18446744073709551615_by_1","typeString":"int_const 18446744073709551615"},"value":"0xffffffffffffffff"},"src":"31043:29:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5031,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"31027:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9326910_$","typeString":"type(library SafeCast)"}},"id":5032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31036:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"31027:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31027:46:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"36","id":5040,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31077:1:16","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"src":"31027:51:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31022:56:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5043,"nodeType":"ExpressionStatement","src":"31022:56:16"},{"expression":{"id":5056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5044,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31153:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5052,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5049,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5047,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"31175:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5048,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31180:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31175:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5050,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31174:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666666666666666","id":5051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31185:10:16","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"src":"31174:21:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5045,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"31158:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9366910_$","typeString":"type(library SafeCast)"}},"id":5046,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31167:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"31158:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31158:38:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"35","id":5054,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31200:1:16","typeDescriptions":{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"},"value":"5"},"src":"31158:43:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31153:48:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5057,"nodeType":"ExpressionStatement","src":"31153:48:16"},{"expression":{"id":5070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":5058,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31276:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"|=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5066,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5061,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"31298:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5062,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31303:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31298:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5064,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31297:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"307866666666","id":5065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31308:6:16","typeDescriptions":{"typeIdentifier":"t_rational_65535_by_1","typeString":"int_const 65535"},"value":"0xffff"},"src":"31297:17:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5059,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"31281:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9406910_$","typeString":"type(library SafeCast)"}},"id":5060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31290:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"31281:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31281:34:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"34","id":5068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31319:1:16","typeDescriptions":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"value":"4"},"src":"31281:39:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31276:44:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":5071,"nodeType":"ExpressionStatement","src":"31276:44:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5072,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31426:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"33","id":5073,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31431:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31426:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5075,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31425:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"|","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5083,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5078,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5014,"src":"31453:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"id":5079,"name":"r","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5017,"src":"31458:1:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31453:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5081,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31452:8:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30786666","id":5082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31463:4:16","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"0xff"},"src":"31452:15:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5076,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"31436:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9446910_$","typeString":"type(library SafeCast)"}},"id":5077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31445:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"31436:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31436:32:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31425:43:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5018,"id":5086,"nodeType":"Return","src":"31418:50:16"}]},"documentation":{"id":5012,"nodeType":"StructuredDocumentation","src":"30488:246:16","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":5088,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"30748:6:16","nodeType":"FunctionDefinition","parameters":{"id":5015,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5014,"mutability":"mutable","name":"x","nameLocation":"30763:1:16","nodeType":"VariableDeclaration","scope":5088,"src":"30755:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5013,"name":"uint256","nodeType":"ElementaryTypeName","src":"30755:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30754:11:16"},"returnParameters":{"id":5018,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5017,"mutability":"mutable","name":"r","nameLocation":"30797:1:16","nodeType":"VariableDeclaration","scope":5088,"src":"30789:9:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5016,"name":"uint256","nodeType":"ElementaryTypeName","src":"30789:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30788:11:16"},"scope":5145,"src":"30739:736:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5124,"nodeType":"Block","src":"31712:184:16","statements":[{"id":5123,"nodeType":"UncheckedBlock","src":"31722:168:16","statements":[{"assignments":[5100],"declarations":[{"constant":false,"id":5100,"mutability":"mutable","name":"result","nameLocation":"31754:6:16","nodeType":"VariableDeclaration","scope":5123,"src":"31746:14:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5099,"name":"uint256","nodeType":"ElementaryTypeName","src":"31746:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":5104,"initialValue":{"arguments":[{"id":5102,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"31770:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5101,"name":"log256","nodeType":"Identifier","overloadedDeclarations":[5088,5125],"referencedDeclaration":5088,"src":"31763:6:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) pure returns (uint256)"}},"id":5103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31763:13:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"31746:30:16"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5105,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"31797:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":5119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5109,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5094,"src":"31839:8:16","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9503536","typeString":"enum Math.Rounding"}],"id":5108,"name":"unsignedRoundsUp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5144,"src":"31822:16:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_enum$_Rounding_$3536_$returns$_t_bool_$","typeString":"function (enum Math.Rounding) pure returns (bool)"}},"id":5110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31822:26:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5116,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"31","id":5111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31852:1:16","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":5114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5112,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5100,"src":"31858:6:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<<","rightExpression":{"hexValue":"33","id":5113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31868:1:16","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"31858:11:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":5115,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"31857:13:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:18:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":5117,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5091,"src":"31873:5:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31852:26:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"31822:56:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":5106,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"31806:8:16","typeDescriptions":{"typeIdentifier":"t_type$_t_contractMATH_PLACEHOLDER_9546910_$","typeString":"type(library SafeCast)"}},"id":5107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31815:6:16","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"31806:15:16","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":5120,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31806:73:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31797:82:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":5098,"id":5122,"nodeType":"Return","src":"31790:89:16"}]}]},"documentation":{"id":5089,"nodeType":"StructuredDocumentation","src":"31481:144:16","text":" @dev Return the log in base 256, following the selected rounding direction, of a positive value.\n Returns 0 if given 0."},"id":5125,"implemented":true,"kind":"function","modifiers":[],"name":"log256","nameLocation":"31639:6:16","nodeType":"FunctionDefinition","parameters":{"id":5095,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5091,"mutability":"mutable","name":"value","nameLocation":"31654:5:16","nodeType":"VariableDeclaration","scope":5125,"src":"31646:13:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5090,"name":"uint256","nodeType":"ElementaryTypeName","src":"31646:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":5094,"mutability":"mutable","name":"rounding","nameLocation":"31670:8:16","nodeType":"VariableDeclaration","scope":5125,"src":"31661:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_Rounding_$3536","typeString":"enum Math.Rounding"},"typeName":{"id":5093,"nodeType":"UserDefinedTypeName","pathNode":{"id":5092,"name":"Rounding","nameLocations":["31661:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"31661:8:16"},"referencedDeclaration":3536,"src":"31661:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9583536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"31645:34:16"},"returnParameters":{"id":5098,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5097,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5125,"src":"31703:7:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5096,"name":"uint256","nodeType":"ElementaryTypeName","src":"31703:7:16","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31702:9:16"},"scope":5145,"src":"31630:266:16","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5143,"nodeType":"Block","src":"32094:48:16","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5141,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":5139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":5136,"name":"rounding","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5129,"src":"32117:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9593536","typeString":"enum Math.Rounding"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9603536","typeString":"enum Math.Rounding"}],"id":5135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32111:5:16","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":5134,"name":"uint8","nodeType":"ElementaryTypeName","src":"32111:5:16","typeDescriptions":{}}},"id":5137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32111:15:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"hexValue":"32","id":5138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32129:1:16","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"32111:19:16","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":5140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32134:1:16","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"32111:24:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":5133,"id":5142,"nodeType":"Return","src":"32104:31:16"}]},"documentation":{"id":5126,"nodeType":"StructuredDocumentation","src":"31902:113:16","text":" @dev Returns whether a provided rounding mode is considered rounding up for unsigned integers."},"id":5144,"implemented":true,"kind":"function","modifiers":[],"name":"unsignedRoundsUp","nameLocation":"32029:16:16","nodeType":"FunctionDefinition","parameters":{"id":5130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5129,"mutability":"mutable","name":"rounding","nameLocation":"32055:8:16","nodeType":"VariableDeclaration","scope":5144,"src":"32046:17:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9623536","typeString":"enum Math.Rounding"},"typeName":{"id":5128,"nodeType":"UserDefinedTypeName","pathNode":{"id":5127,"name":"Rounding","nameLocations":["32046:8:16"],"nodeType":"IdentifierPath","referencedDeclaration":3536,"src":"32046:8:16"},"referencedDeclaration":3536,"src":"32046:8:16","typeDescriptions":{"typeIdentifier":"t_enumMATH_PLACEHOLDER_9633536","typeString":"enum Math.Rounding"}},"visibility":"internal"}],"src":"32045:19:16"},"returnParameters":{"id":5133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5132,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5144,"src":"32088:4:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":5131,"name":"bool","nodeType":"ElementaryTypeName","src":"32088:4:16","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"32087:6:16"},"scope":5145,"src":"32020:122:16","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":5146,"src":"281:31863:16","usedErrors":[],"usedEvents":[]}],"src":"103:32042:16"},"id":16},"@openzeppelin/contracts/utils/math/SafeCast.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","exportedSymbols":{"SafeCast":[6910]},"id":6911,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":5147,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"192:24:17"},{"abstract":false,"baseContracts":[],"canonicalName":"SafeCast","contractDependencies":[],"contractKind":"library","documentation":{"id":5148,"nodeType":"StructuredDocumentation","src":"218:550:17","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":6910,"linearizedBaseContracts":[6910],"name":"SafeCast","nameLocation":"777:8:17","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":5149,"nodeType":"StructuredDocumentation","src":"792:68:17","text":" @dev Value doesn't fit in an uint of `bits` size."},"errorSelector":"6dfcc650","id":5155,"name":"SafeCastOverflowedUintDowncast","nameLocation":"871:30:17","nodeType":"ErrorDefinition","parameters":{"id":5154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5151,"mutability":"mutable","name":"bits","nameLocation":"908:4:17","nodeType":"VariableDeclaration","scope":5155,"src":"902:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5150,"name":"uint8","nodeType":"ElementaryTypeName","src":"902:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5153,"mutability":"mutable","name":"value","nameLocation":"922:5:17","nodeType":"VariableDeclaration","scope":5155,"src":"914:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5152,"name":"uint256","nodeType":"ElementaryTypeName","src":"914:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"901:27:17"},"src":"865:64:17"},{"documentation":{"id":5156,"nodeType":"StructuredDocumentation","src":"935:75:17","text":" @dev An int value doesn't fit in an uint of `bits` size."},"errorSelector":"a8ce4432","id":5160,"name":"SafeCastOverflowedIntToUint","nameLocation":"1021:27:17","nodeType":"ErrorDefinition","parameters":{"id":5159,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5158,"mutability":"mutable","name":"value","nameLocation":"1056:5:17","nodeType":"VariableDeclaration","scope":5160,"src":"1049:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5157,"name":"int256","nodeType":"ElementaryTypeName","src":"1049:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1048:14:17"},"src":"1015:48:17"},{"documentation":{"id":5161,"nodeType":"StructuredDocumentation","src":"1069:67:17","text":" @dev Value doesn't fit in an int of `bits` size."},"errorSelector":"327269a7","id":5167,"name":"SafeCastOverflowedIntDowncast","nameLocation":"1147:29:17","nodeType":"ErrorDefinition","parameters":{"id":5166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5163,"mutability":"mutable","name":"bits","nameLocation":"1183:4:17","nodeType":"VariableDeclaration","scope":5167,"src":"1177:10:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5162,"name":"uint8","nodeType":"ElementaryTypeName","src":"1177:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":5165,"mutability":"mutable","name":"value","nameLocation":"1196:5:17","nodeType":"VariableDeclaration","scope":5167,"src":"1189:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":5164,"name":"int256","nodeType":"ElementaryTypeName","src":"1189:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1176:26:17"},"src":"1141:62:17"},{"documentation":{"id":5168,"nodeType":"StructuredDocumentation","src":"1209:75:17","text":" @dev An uint value doesn't fit in an int of `bits` size."},"errorSelector":"24775e06","id":5172,"name":"SafeCastOverflowedUintToInt","nameLocation":"1295:27:17","nodeType":"ErrorDefinition","parameters":{"id":5171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5170,"mutability":"mutable","name":"value","nameLocation":"1331:5:17","nodeType":"VariableDeclaration","scope":5172,"src":"1323:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5169,"name":"uint256","nodeType":"ElementaryTypeName","src":"1323:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1322:15:17"},"src":"1289:49:17"},{"body":{"id":5199,"nodeType":"Block","src":"1695:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5186,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5180,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"1709:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5183,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1722:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5182,"name":"uint248","nodeType":"ElementaryTypeName","src":"1722:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"}],"id":5181,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1717:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5184,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint248","typeString":"type(uint248)"}},"id":5185,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1731:3:17","memberName":"max","nodeType":"MemberAccess","src":"1717:17:17","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"src":"1709:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5193,"nodeType":"IfStatement","src":"1705:105:17","trueBody":{"id":5192,"nodeType":"Block","src":"1736:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":5188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1788:3:17","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":5189,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"1793:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5187,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"1757:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1757:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5191,"nodeType":"RevertStatement","src":"1750:49:17"}]}},{"expression":{"arguments":[{"id":5196,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5175,"src":"1834:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5195,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1826:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint248_$","typeString":"type(uint248)"},"typeName":{"id":5194,"name":"uint248","nodeType":"ElementaryTypeName","src":"1826:7:17","typeDescriptions":{}}},"id":5197,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1826:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"functionReturnParameters":5179,"id":5198,"nodeType":"Return","src":"1819:21:17"}]},"documentation":{"id":5173,"nodeType":"StructuredDocumentation","src":"1344:280:17","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":5200,"implemented":true,"kind":"function","modifiers":[],"name":"toUint248","nameLocation":"1638:9:17","nodeType":"FunctionDefinition","parameters":{"id":5176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5175,"mutability":"mutable","name":"value","nameLocation":"1656:5:17","nodeType":"VariableDeclaration","scope":5200,"src":"1648:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5174,"name":"uint256","nodeType":"ElementaryTypeName","src":"1648:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1647:15:17"},"returnParameters":{"id":5179,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5178,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5200,"src":"1686:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"},"typeName":{"id":5177,"name":"uint248","nodeType":"ElementaryTypeName","src":"1686:7:17","typeDescriptions":{"typeIdentifier":"t_uint248","typeString":"uint248"}},"visibility":"internal"}],"src":"1685:9:17"},"scope":6910,"src":"1629:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5227,"nodeType":"Block","src":"2204:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5208,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5203,"src":"2218:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5211,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2231:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5210,"name":"uint240","nodeType":"ElementaryTypeName","src":"2231:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"}],"id":5209,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2226:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2226:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint240","typeString":"type(uint240)"}},"id":5213,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2240:3:17","memberName":"max","nodeType":"MemberAccess","src":"2226:17:17","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"src":"2218:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5221,"nodeType":"IfStatement","src":"2214:105:17","trueBody":{"id":5220,"nodeType":"Block","src":"2245:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":5216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2297:3:17","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":5217,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5203,"src":"2302:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5215,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"2266:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2266:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5219,"nodeType":"RevertStatement","src":"2259:49:17"}]}},{"expression":{"arguments":[{"id":5224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5203,"src":"2343:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5223,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2335:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint240_$","typeString":"type(uint240)"},"typeName":{"id":5222,"name":"uint240","nodeType":"ElementaryTypeName","src":"2335:7:17","typeDescriptions":{}}},"id":5225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2335:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"functionReturnParameters":5207,"id":5226,"nodeType":"Return","src":"2328:21:17"}]},"documentation":{"id":5201,"nodeType":"StructuredDocumentation","src":"1853:280:17","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":5228,"implemented":true,"kind":"function","modifiers":[],"name":"toUint240","nameLocation":"2147:9:17","nodeType":"FunctionDefinition","parameters":{"id":5204,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5203,"mutability":"mutable","name":"value","nameLocation":"2165:5:17","nodeType":"VariableDeclaration","scope":5228,"src":"2157:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5202,"name":"uint256","nodeType":"ElementaryTypeName","src":"2157:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2156:15:17"},"returnParameters":{"id":5207,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5206,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5228,"src":"2195:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"},"typeName":{"id":5205,"name":"uint240","nodeType":"ElementaryTypeName","src":"2195:7:17","typeDescriptions":{"typeIdentifier":"t_uint240","typeString":"uint240"}},"visibility":"internal"}],"src":"2194:9:17"},"scope":6910,"src":"2138:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5255,"nodeType":"Block","src":"2713:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5242,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5231,"src":"2727:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5239,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2740:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5238,"name":"uint232","nodeType":"ElementaryTypeName","src":"2740:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"}],"id":5237,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"2735:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5240,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2735:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint232","typeString":"type(uint232)"}},"id":5241,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"2749:3:17","memberName":"max","nodeType":"MemberAccess","src":"2735:17:17","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"src":"2727:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5249,"nodeType":"IfStatement","src":"2723:105:17","trueBody":{"id":5248,"nodeType":"Block","src":"2754:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":5244,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2806:3:17","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":5245,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5231,"src":"2811:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5243,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"2775:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2775:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5247,"nodeType":"RevertStatement","src":"2768:49:17"}]}},{"expression":{"arguments":[{"id":5252,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5231,"src":"2852:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5251,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2844:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint232_$","typeString":"type(uint232)"},"typeName":{"id":5250,"name":"uint232","nodeType":"ElementaryTypeName","src":"2844:7:17","typeDescriptions":{}}},"id":5253,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2844:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"functionReturnParameters":5235,"id":5254,"nodeType":"Return","src":"2837:21:17"}]},"documentation":{"id":5229,"nodeType":"StructuredDocumentation","src":"2362:280:17","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":5256,"implemented":true,"kind":"function","modifiers":[],"name":"toUint232","nameLocation":"2656:9:17","nodeType":"FunctionDefinition","parameters":{"id":5232,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5231,"mutability":"mutable","name":"value","nameLocation":"2674:5:17","nodeType":"VariableDeclaration","scope":5256,"src":"2666:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5230,"name":"uint256","nodeType":"ElementaryTypeName","src":"2666:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:15:17"},"returnParameters":{"id":5235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5256,"src":"2704:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"},"typeName":{"id":5233,"name":"uint232","nodeType":"ElementaryTypeName","src":"2704:7:17","typeDescriptions":{"typeIdentifier":"t_uint232","typeString":"uint232"}},"visibility":"internal"}],"src":"2703:9:17"},"scope":6910,"src":"2647:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5283,"nodeType":"Block","src":"3222:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5270,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5264,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"3236:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5267,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3249:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5266,"name":"uint224","nodeType":"ElementaryTypeName","src":"3249:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"}],"id":5265,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3244:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3244:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint224","typeString":"type(uint224)"}},"id":5269,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3258:3:17","memberName":"max","nodeType":"MemberAccess","src":"3244:17:17","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"src":"3236:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5277,"nodeType":"IfStatement","src":"3232:105:17","trueBody":{"id":5276,"nodeType":"Block","src":"3263:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":5272,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3315:3:17","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":5273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"3320:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5271,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"3284:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3284:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5275,"nodeType":"RevertStatement","src":"3277:49:17"}]}},{"expression":{"arguments":[{"id":5280,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5259,"src":"3361:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5279,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3353:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint224_$","typeString":"type(uint224)"},"typeName":{"id":5278,"name":"uint224","nodeType":"ElementaryTypeName","src":"3353:7:17","typeDescriptions":{}}},"id":5281,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3353:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"functionReturnParameters":5263,"id":5282,"nodeType":"Return","src":"3346:21:17"}]},"documentation":{"id":5257,"nodeType":"StructuredDocumentation","src":"2871:280:17","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":5284,"implemented":true,"kind":"function","modifiers":[],"name":"toUint224","nameLocation":"3165:9:17","nodeType":"FunctionDefinition","parameters":{"id":5260,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5259,"mutability":"mutable","name":"value","nameLocation":"3183:5:17","nodeType":"VariableDeclaration","scope":5284,"src":"3175:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5258,"name":"uint256","nodeType":"ElementaryTypeName","src":"3175:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3174:15:17"},"returnParameters":{"id":5263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5284,"src":"3213:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"},"typeName":{"id":5261,"name":"uint224","nodeType":"ElementaryTypeName","src":"3213:7:17","typeDescriptions":{"typeIdentifier":"t_uint224","typeString":"uint224"}},"visibility":"internal"}],"src":"3212:9:17"},"scope":6910,"src":"3156:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5311,"nodeType":"Block","src":"3731:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5292,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"3745:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5295,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3758:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5294,"name":"uint216","nodeType":"ElementaryTypeName","src":"3758:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"}],"id":5293,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"3753:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5296,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3753:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint216","typeString":"type(uint216)"}},"id":5297,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"3767:3:17","memberName":"max","nodeType":"MemberAccess","src":"3753:17:17","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"src":"3745:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5305,"nodeType":"IfStatement","src":"3741:105:17","trueBody":{"id":5304,"nodeType":"Block","src":"3772:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":5300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3824:3:17","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":5301,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"3829:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5299,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"3793:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5303,"nodeType":"RevertStatement","src":"3786:49:17"}]}},{"expression":{"arguments":[{"id":5308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5287,"src":"3870:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3862:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint216_$","typeString":"type(uint216)"},"typeName":{"id":5306,"name":"uint216","nodeType":"ElementaryTypeName","src":"3862:7:17","typeDescriptions":{}}},"id":5309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3862:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"functionReturnParameters":5291,"id":5310,"nodeType":"Return","src":"3855:21:17"}]},"documentation":{"id":5285,"nodeType":"StructuredDocumentation","src":"3380:280:17","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":5312,"implemented":true,"kind":"function","modifiers":[],"name":"toUint216","nameLocation":"3674:9:17","nodeType":"FunctionDefinition","parameters":{"id":5288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5287,"mutability":"mutable","name":"value","nameLocation":"3692:5:17","nodeType":"VariableDeclaration","scope":5312,"src":"3684:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5286,"name":"uint256","nodeType":"ElementaryTypeName","src":"3684:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3683:15:17"},"returnParameters":{"id":5291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5312,"src":"3722:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"},"typeName":{"id":5289,"name":"uint216","nodeType":"ElementaryTypeName","src":"3722:7:17","typeDescriptions":{"typeIdentifier":"t_uint216","typeString":"uint216"}},"visibility":"internal"}],"src":"3721:9:17"},"scope":6910,"src":"3665:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5339,"nodeType":"Block","src":"4240:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5320,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5315,"src":"4254:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5323,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4267:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5322,"name":"uint208","nodeType":"ElementaryTypeName","src":"4267:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"}],"id":5321,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4262:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4262:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint208","typeString":"type(uint208)"}},"id":5325,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4276:3:17","memberName":"max","nodeType":"MemberAccess","src":"4262:17:17","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"src":"4254:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5333,"nodeType":"IfStatement","src":"4250:105:17","trueBody":{"id":5332,"nodeType":"Block","src":"4281:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":5328,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4333:3:17","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":5329,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5315,"src":"4338:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5327,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"4302:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4302:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5331,"nodeType":"RevertStatement","src":"4295:49:17"}]}},{"expression":{"arguments":[{"id":5336,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5315,"src":"4379:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4371:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint208_$","typeString":"type(uint208)"},"typeName":{"id":5334,"name":"uint208","nodeType":"ElementaryTypeName","src":"4371:7:17","typeDescriptions":{}}},"id":5337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4371:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"functionReturnParameters":5319,"id":5338,"nodeType":"Return","src":"4364:21:17"}]},"documentation":{"id":5313,"nodeType":"StructuredDocumentation","src":"3889:280:17","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":5340,"implemented":true,"kind":"function","modifiers":[],"name":"toUint208","nameLocation":"4183:9:17","nodeType":"FunctionDefinition","parameters":{"id":5316,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5315,"mutability":"mutable","name":"value","nameLocation":"4201:5:17","nodeType":"VariableDeclaration","scope":5340,"src":"4193:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5314,"name":"uint256","nodeType":"ElementaryTypeName","src":"4193:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4192:15:17"},"returnParameters":{"id":5319,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5318,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5340,"src":"4231:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"},"typeName":{"id":5317,"name":"uint208","nodeType":"ElementaryTypeName","src":"4231:7:17","typeDescriptions":{"typeIdentifier":"t_uint208","typeString":"uint208"}},"visibility":"internal"}],"src":"4230:9:17"},"scope":6910,"src":"4174:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5367,"nodeType":"Block","src":"4749:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5354,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5348,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"4763:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5351,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4776:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5350,"name":"uint200","nodeType":"ElementaryTypeName","src":"4776:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"}],"id":5349,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"4771:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5352,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4771:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint200","typeString":"type(uint200)"}},"id":5353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4785:3:17","memberName":"max","nodeType":"MemberAccess","src":"4771:17:17","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"src":"4763:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5361,"nodeType":"IfStatement","src":"4759:105:17","trueBody":{"id":5360,"nodeType":"Block","src":"4790:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":5356,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4842:3:17","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":5357,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"4847:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5355,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"4811:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4811:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5359,"nodeType":"RevertStatement","src":"4804:49:17"}]}},{"expression":{"arguments":[{"id":5364,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5343,"src":"4888:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5363,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4880:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint200_$","typeString":"type(uint200)"},"typeName":{"id":5362,"name":"uint200","nodeType":"ElementaryTypeName","src":"4880:7:17","typeDescriptions":{}}},"id":5365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4880:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"functionReturnParameters":5347,"id":5366,"nodeType":"Return","src":"4873:21:17"}]},"documentation":{"id":5341,"nodeType":"StructuredDocumentation","src":"4398:280:17","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":5368,"implemented":true,"kind":"function","modifiers":[],"name":"toUint200","nameLocation":"4692:9:17","nodeType":"FunctionDefinition","parameters":{"id":5344,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5343,"mutability":"mutable","name":"value","nameLocation":"4710:5:17","nodeType":"VariableDeclaration","scope":5368,"src":"4702:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5342,"name":"uint256","nodeType":"ElementaryTypeName","src":"4702:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4701:15:17"},"returnParameters":{"id":5347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5346,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5368,"src":"4740:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"},"typeName":{"id":5345,"name":"uint200","nodeType":"ElementaryTypeName","src":"4740:7:17","typeDescriptions":{"typeIdentifier":"t_uint200","typeString":"uint200"}},"visibility":"internal"}],"src":"4739:9:17"},"scope":6910,"src":"4683:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5395,"nodeType":"Block","src":"5258:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5376,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"5272:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5379,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5285:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5378,"name":"uint192","nodeType":"ElementaryTypeName","src":"5285:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"}],"id":5377,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5280:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5380,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5280:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint192","typeString":"type(uint192)"}},"id":5381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5294:3:17","memberName":"max","nodeType":"MemberAccess","src":"5280:17:17","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"src":"5272:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5389,"nodeType":"IfStatement","src":"5268:105:17","trueBody":{"id":5388,"nodeType":"Block","src":"5299:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":5384,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5351:3:17","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":5385,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"5356:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5383,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"5320:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5387,"nodeType":"RevertStatement","src":"5313:49:17"}]}},{"expression":{"arguments":[{"id":5392,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5371,"src":"5397:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5391,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5389:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint192_$","typeString":"type(uint192)"},"typeName":{"id":5390,"name":"uint192","nodeType":"ElementaryTypeName","src":"5389:7:17","typeDescriptions":{}}},"id":5393,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5389:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"functionReturnParameters":5375,"id":5394,"nodeType":"Return","src":"5382:21:17"}]},"documentation":{"id":5369,"nodeType":"StructuredDocumentation","src":"4907:280:17","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":5396,"implemented":true,"kind":"function","modifiers":[],"name":"toUint192","nameLocation":"5201:9:17","nodeType":"FunctionDefinition","parameters":{"id":5372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5371,"mutability":"mutable","name":"value","nameLocation":"5219:5:17","nodeType":"VariableDeclaration","scope":5396,"src":"5211:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5370,"name":"uint256","nodeType":"ElementaryTypeName","src":"5211:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5210:15:17"},"returnParameters":{"id":5375,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5374,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5396,"src":"5249:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"},"typeName":{"id":5373,"name":"uint192","nodeType":"ElementaryTypeName","src":"5249:7:17","typeDescriptions":{"typeIdentifier":"t_uint192","typeString":"uint192"}},"visibility":"internal"}],"src":"5248:9:17"},"scope":6910,"src":"5192:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5423,"nodeType":"Block","src":"5767:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5410,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5404,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"5781:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5407,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5794:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5406,"name":"uint184","nodeType":"ElementaryTypeName","src":"5794:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"}],"id":5405,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"5789:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5408,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5789:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint184","typeString":"type(uint184)"}},"id":5409,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5803:3:17","memberName":"max","nodeType":"MemberAccess","src":"5789:17:17","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"src":"5781:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5417,"nodeType":"IfStatement","src":"5777:105:17","trueBody":{"id":5416,"nodeType":"Block","src":"5808:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":5412,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5860:3:17","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":5413,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"5865:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5411,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"5829:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5414,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5829:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5415,"nodeType":"RevertStatement","src":"5822:49:17"}]}},{"expression":{"arguments":[{"id":5420,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5399,"src":"5906:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5898:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint184_$","typeString":"type(uint184)"},"typeName":{"id":5418,"name":"uint184","nodeType":"ElementaryTypeName","src":"5898:7:17","typeDescriptions":{}}},"id":5421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5898:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"functionReturnParameters":5403,"id":5422,"nodeType":"Return","src":"5891:21:17"}]},"documentation":{"id":5397,"nodeType":"StructuredDocumentation","src":"5416:280:17","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":5424,"implemented":true,"kind":"function","modifiers":[],"name":"toUint184","nameLocation":"5710:9:17","nodeType":"FunctionDefinition","parameters":{"id":5400,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5399,"mutability":"mutable","name":"value","nameLocation":"5728:5:17","nodeType":"VariableDeclaration","scope":5424,"src":"5720:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5398,"name":"uint256","nodeType":"ElementaryTypeName","src":"5720:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5719:15:17"},"returnParameters":{"id":5403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5402,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5424,"src":"5758:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"},"typeName":{"id":5401,"name":"uint184","nodeType":"ElementaryTypeName","src":"5758:7:17","typeDescriptions":{"typeIdentifier":"t_uint184","typeString":"uint184"}},"visibility":"internal"}],"src":"5757:9:17"},"scope":6910,"src":"5701:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5451,"nodeType":"Block","src":"6276:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5438,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5432,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5427,"src":"6290:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5435,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6303:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5434,"name":"uint176","nodeType":"ElementaryTypeName","src":"6303:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"}],"id":5433,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6298:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5436,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6298:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint176","typeString":"type(uint176)"}},"id":5437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6312:3:17","memberName":"max","nodeType":"MemberAccess","src":"6298:17:17","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"src":"6290:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5445,"nodeType":"IfStatement","src":"6286:105:17","trueBody":{"id":5444,"nodeType":"Block","src":"6317:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":5440,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6369:3:17","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":5441,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5427,"src":"6374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5439,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"6338:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5442,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6338:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5443,"nodeType":"RevertStatement","src":"6331:49:17"}]}},{"expression":{"arguments":[{"id":5448,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5427,"src":"6415:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5447,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6407:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint176_$","typeString":"type(uint176)"},"typeName":{"id":5446,"name":"uint176","nodeType":"ElementaryTypeName","src":"6407:7:17","typeDescriptions":{}}},"id":5449,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6407:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"functionReturnParameters":5431,"id":5450,"nodeType":"Return","src":"6400:21:17"}]},"documentation":{"id":5425,"nodeType":"StructuredDocumentation","src":"5925:280:17","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":5452,"implemented":true,"kind":"function","modifiers":[],"name":"toUint176","nameLocation":"6219:9:17","nodeType":"FunctionDefinition","parameters":{"id":5428,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5427,"mutability":"mutable","name":"value","nameLocation":"6237:5:17","nodeType":"VariableDeclaration","scope":5452,"src":"6229:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5426,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6228:15:17"},"returnParameters":{"id":5431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5430,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5452,"src":"6267:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"},"typeName":{"id":5429,"name":"uint176","nodeType":"ElementaryTypeName","src":"6267:7:17","typeDescriptions":{"typeIdentifier":"t_uint176","typeString":"uint176"}},"visibility":"internal"}],"src":"6266:9:17"},"scope":6910,"src":"6210:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5479,"nodeType":"Block","src":"6785:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5460,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"6799:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6812:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5462,"name":"uint168","nodeType":"ElementaryTypeName","src":"6812:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"}],"id":5461,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6807:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5464,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6807:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint168","typeString":"type(uint168)"}},"id":5465,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6821:3:17","memberName":"max","nodeType":"MemberAccess","src":"6807:17:17","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"src":"6799:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5473,"nodeType":"IfStatement","src":"6795:105:17","trueBody":{"id":5472,"nodeType":"Block","src":"6826:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":5468,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6878:3:17","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":5469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"6883:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5467,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"6847:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6847:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5471,"nodeType":"RevertStatement","src":"6840:49:17"}]}},{"expression":{"arguments":[{"id":5476,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5455,"src":"6924:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5475,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6916:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint168_$","typeString":"type(uint168)"},"typeName":{"id":5474,"name":"uint168","nodeType":"ElementaryTypeName","src":"6916:7:17","typeDescriptions":{}}},"id":5477,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6916:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"functionReturnParameters":5459,"id":5478,"nodeType":"Return","src":"6909:21:17"}]},"documentation":{"id":5453,"nodeType":"StructuredDocumentation","src":"6434:280:17","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":5480,"implemented":true,"kind":"function","modifiers":[],"name":"toUint168","nameLocation":"6728:9:17","nodeType":"FunctionDefinition","parameters":{"id":5456,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5455,"mutability":"mutable","name":"value","nameLocation":"6746:5:17","nodeType":"VariableDeclaration","scope":5480,"src":"6738:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5454,"name":"uint256","nodeType":"ElementaryTypeName","src":"6738:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6737:15:17"},"returnParameters":{"id":5459,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5458,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5480,"src":"6776:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"},"typeName":{"id":5457,"name":"uint168","nodeType":"ElementaryTypeName","src":"6776:7:17","typeDescriptions":{"typeIdentifier":"t_uint168","typeString":"uint168"}},"visibility":"internal"}],"src":"6775:9:17"},"scope":6910,"src":"6719:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5507,"nodeType":"Block","src":"7294:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5488,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"7308:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5491,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7321:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5490,"name":"uint160","nodeType":"ElementaryTypeName","src":"7321:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"}],"id":5489,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7316:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5492,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7316:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint160","typeString":"type(uint160)"}},"id":5493,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7330:3:17","memberName":"max","nodeType":"MemberAccess","src":"7316:17:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"src":"7308:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5501,"nodeType":"IfStatement","src":"7304:105:17","trueBody":{"id":5500,"nodeType":"Block","src":"7335:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":5496,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7387:3:17","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":5497,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"7392:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5495,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"7356:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5498,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7356:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5499,"nodeType":"RevertStatement","src":"7349:49:17"}]}},{"expression":{"arguments":[{"id":5504,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5483,"src":"7433:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5503,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7425:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint160_$","typeString":"type(uint160)"},"typeName":{"id":5502,"name":"uint160","nodeType":"ElementaryTypeName","src":"7425:7:17","typeDescriptions":{}}},"id":5505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7425:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"functionReturnParameters":5487,"id":5506,"nodeType":"Return","src":"7418:21:17"}]},"documentation":{"id":5481,"nodeType":"StructuredDocumentation","src":"6943:280:17","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":5508,"implemented":true,"kind":"function","modifiers":[],"name":"toUint160","nameLocation":"7237:9:17","nodeType":"FunctionDefinition","parameters":{"id":5484,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5483,"mutability":"mutable","name":"value","nameLocation":"7255:5:17","nodeType":"VariableDeclaration","scope":5508,"src":"7247:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5482,"name":"uint256","nodeType":"ElementaryTypeName","src":"7247:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7246:15:17"},"returnParameters":{"id":5487,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5486,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5508,"src":"7285:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"},"typeName":{"id":5485,"name":"uint160","nodeType":"ElementaryTypeName","src":"7285:7:17","typeDescriptions":{"typeIdentifier":"t_uint160","typeString":"uint160"}},"visibility":"internal"}],"src":"7284:9:17"},"scope":6910,"src":"7228:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5535,"nodeType":"Block","src":"7803:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5511,"src":"7817:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7830:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5518,"name":"uint152","nodeType":"ElementaryTypeName","src":"7830:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"}],"id":5517,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"7825:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5520,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7825:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint152","typeString":"type(uint152)"}},"id":5521,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7839:3:17","memberName":"max","nodeType":"MemberAccess","src":"7825:17:17","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"src":"7817:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5529,"nodeType":"IfStatement","src":"7813:105:17","trueBody":{"id":5528,"nodeType":"Block","src":"7844:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":5524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7896:3:17","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":5525,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5511,"src":"7901:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5523,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"7865:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7865:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5527,"nodeType":"RevertStatement","src":"7858:49:17"}]}},{"expression":{"arguments":[{"id":5532,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5511,"src":"7942:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7934:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint152_$","typeString":"type(uint152)"},"typeName":{"id":5530,"name":"uint152","nodeType":"ElementaryTypeName","src":"7934:7:17","typeDescriptions":{}}},"id":5533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7934:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"functionReturnParameters":5515,"id":5534,"nodeType":"Return","src":"7927:21:17"}]},"documentation":{"id":5509,"nodeType":"StructuredDocumentation","src":"7452:280:17","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":5536,"implemented":true,"kind":"function","modifiers":[],"name":"toUint152","nameLocation":"7746:9:17","nodeType":"FunctionDefinition","parameters":{"id":5512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5511,"mutability":"mutable","name":"value","nameLocation":"7764:5:17","nodeType":"VariableDeclaration","scope":5536,"src":"7756:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5510,"name":"uint256","nodeType":"ElementaryTypeName","src":"7756:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7755:15:17"},"returnParameters":{"id":5515,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5514,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5536,"src":"7794:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"},"typeName":{"id":5513,"name":"uint152","nodeType":"ElementaryTypeName","src":"7794:7:17","typeDescriptions":{"typeIdentifier":"t_uint152","typeString":"uint152"}},"visibility":"internal"}],"src":"7793:9:17"},"scope":6910,"src":"7737:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5563,"nodeType":"Block","src":"8312:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5544,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"8326:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5547,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8339:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5546,"name":"uint144","nodeType":"ElementaryTypeName","src":"8339:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"}],"id":5545,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8334:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5548,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8334:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint144","typeString":"type(uint144)"}},"id":5549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8348:3:17","memberName":"max","nodeType":"MemberAccess","src":"8334:17:17","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"src":"8326:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5557,"nodeType":"IfStatement","src":"8322:105:17","trueBody":{"id":5556,"nodeType":"Block","src":"8353:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":5552,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8405:3:17","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":5553,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"8410:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5551,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"8374:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5554,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8374:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5555,"nodeType":"RevertStatement","src":"8367:49:17"}]}},{"expression":{"arguments":[{"id":5560,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5539,"src":"8451:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5559,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8443:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint144_$","typeString":"type(uint144)"},"typeName":{"id":5558,"name":"uint144","nodeType":"ElementaryTypeName","src":"8443:7:17","typeDescriptions":{}}},"id":5561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8443:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"functionReturnParameters":5543,"id":5562,"nodeType":"Return","src":"8436:21:17"}]},"documentation":{"id":5537,"nodeType":"StructuredDocumentation","src":"7961:280:17","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":5564,"implemented":true,"kind":"function","modifiers":[],"name":"toUint144","nameLocation":"8255:9:17","nodeType":"FunctionDefinition","parameters":{"id":5540,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5539,"mutability":"mutable","name":"value","nameLocation":"8273:5:17","nodeType":"VariableDeclaration","scope":5564,"src":"8265:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5538,"name":"uint256","nodeType":"ElementaryTypeName","src":"8265:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8264:15:17"},"returnParameters":{"id":5543,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5542,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5564,"src":"8303:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"},"typeName":{"id":5541,"name":"uint144","nodeType":"ElementaryTypeName","src":"8303:7:17","typeDescriptions":{"typeIdentifier":"t_uint144","typeString":"uint144"}},"visibility":"internal"}],"src":"8302:9:17"},"scope":6910,"src":"8246:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5591,"nodeType":"Block","src":"8821:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5578,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5572,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"8835:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8848:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5574,"name":"uint136","nodeType":"ElementaryTypeName","src":"8848:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"}],"id":5573,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"8843:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8843:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint136","typeString":"type(uint136)"}},"id":5577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8857:3:17","memberName":"max","nodeType":"MemberAccess","src":"8843:17:17","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"src":"8835:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5585,"nodeType":"IfStatement","src":"8831:105:17","trueBody":{"id":5584,"nodeType":"Block","src":"8862:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":5580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8914:3:17","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":5581,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"8919:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5579,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"8883:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8883:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5583,"nodeType":"RevertStatement","src":"8876:49:17"}]}},{"expression":{"arguments":[{"id":5588,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5567,"src":"8960:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5587,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8952:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint136_$","typeString":"type(uint136)"},"typeName":{"id":5586,"name":"uint136","nodeType":"ElementaryTypeName","src":"8952:7:17","typeDescriptions":{}}},"id":5589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8952:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"functionReturnParameters":5571,"id":5590,"nodeType":"Return","src":"8945:21:17"}]},"documentation":{"id":5565,"nodeType":"StructuredDocumentation","src":"8470:280:17","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":5592,"implemented":true,"kind":"function","modifiers":[],"name":"toUint136","nameLocation":"8764:9:17","nodeType":"FunctionDefinition","parameters":{"id":5568,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5567,"mutability":"mutable","name":"value","nameLocation":"8782:5:17","nodeType":"VariableDeclaration","scope":5592,"src":"8774:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5566,"name":"uint256","nodeType":"ElementaryTypeName","src":"8774:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8773:15:17"},"returnParameters":{"id":5571,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5570,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5592,"src":"8812:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"},"typeName":{"id":5569,"name":"uint136","nodeType":"ElementaryTypeName","src":"8812:7:17","typeDescriptions":{"typeIdentifier":"t_uint136","typeString":"uint136"}},"visibility":"internal"}],"src":"8811:9:17"},"scope":6910,"src":"8755:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5619,"nodeType":"Block","src":"9330:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5606,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5600,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"9344:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5603,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9357:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5602,"name":"uint128","nodeType":"ElementaryTypeName","src":"9357:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"}],"id":5601,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9352:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9352:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint128","typeString":"type(uint128)"}},"id":5605,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9366:3:17","memberName":"max","nodeType":"MemberAccess","src":"9352:17:17","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"src":"9344:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5613,"nodeType":"IfStatement","src":"9340:105:17","trueBody":{"id":5612,"nodeType":"Block","src":"9371:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":5608,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9423:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":5609,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"9428:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5607,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"9392:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9392:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5611,"nodeType":"RevertStatement","src":"9385:49:17"}]}},{"expression":{"arguments":[{"id":5616,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5595,"src":"9469:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5615,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9461:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint128_$","typeString":"type(uint128)"},"typeName":{"id":5614,"name":"uint128","nodeType":"ElementaryTypeName","src":"9461:7:17","typeDescriptions":{}}},"id":5617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9461:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"functionReturnParameters":5599,"id":5618,"nodeType":"Return","src":"9454:21:17"}]},"documentation":{"id":5593,"nodeType":"StructuredDocumentation","src":"8979:280:17","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":5620,"implemented":true,"kind":"function","modifiers":[],"name":"toUint128","nameLocation":"9273:9:17","nodeType":"FunctionDefinition","parameters":{"id":5596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5595,"mutability":"mutable","name":"value","nameLocation":"9291:5:17","nodeType":"VariableDeclaration","scope":5620,"src":"9283:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5594,"name":"uint256","nodeType":"ElementaryTypeName","src":"9283:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9282:15:17"},"returnParameters":{"id":5599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5620,"src":"9321:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"},"typeName":{"id":5597,"name":"uint128","nodeType":"ElementaryTypeName","src":"9321:7:17","typeDescriptions":{"typeIdentifier":"t_uint128","typeString":"uint128"}},"visibility":"internal"}],"src":"9320:9:17"},"scope":6910,"src":"9264:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5647,"nodeType":"Block","src":"9839:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"9853:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9866:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5630,"name":"uint120","nodeType":"ElementaryTypeName","src":"9866:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"}],"id":5629,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"9861:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9861:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint120","typeString":"type(uint120)"}},"id":5633,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9875:3:17","memberName":"max","nodeType":"MemberAccess","src":"9861:17:17","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"src":"9853:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5641,"nodeType":"IfStatement","src":"9849:105:17","trueBody":{"id":5640,"nodeType":"Block","src":"9880:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":5636,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9932:3:17","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":5637,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"9937:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5635,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"9901:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9901:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5639,"nodeType":"RevertStatement","src":"9894:49:17"}]}},{"expression":{"arguments":[{"id":5644,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5623,"src":"9978:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5643,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9970:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint120_$","typeString":"type(uint120)"},"typeName":{"id":5642,"name":"uint120","nodeType":"ElementaryTypeName","src":"9970:7:17","typeDescriptions":{}}},"id":5645,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9970:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"functionReturnParameters":5627,"id":5646,"nodeType":"Return","src":"9963:21:17"}]},"documentation":{"id":5621,"nodeType":"StructuredDocumentation","src":"9488:280:17","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":5648,"implemented":true,"kind":"function","modifiers":[],"name":"toUint120","nameLocation":"9782:9:17","nodeType":"FunctionDefinition","parameters":{"id":5624,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5623,"mutability":"mutable","name":"value","nameLocation":"9800:5:17","nodeType":"VariableDeclaration","scope":5648,"src":"9792:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5622,"name":"uint256","nodeType":"ElementaryTypeName","src":"9792:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9791:15:17"},"returnParameters":{"id":5627,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5626,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5648,"src":"9830:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"},"typeName":{"id":5625,"name":"uint120","nodeType":"ElementaryTypeName","src":"9830:7:17","typeDescriptions":{"typeIdentifier":"t_uint120","typeString":"uint120"}},"visibility":"internal"}],"src":"9829:9:17"},"scope":6910,"src":"9773:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5675,"nodeType":"Block","src":"10348:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5662,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5656,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"10362:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5659,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10375:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5658,"name":"uint112","nodeType":"ElementaryTypeName","src":"10375:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"}],"id":5657,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10370:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5660,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10370:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint112","typeString":"type(uint112)"}},"id":5661,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10384:3:17","memberName":"max","nodeType":"MemberAccess","src":"10370:17:17","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"src":"10362:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5669,"nodeType":"IfStatement","src":"10358:105:17","trueBody":{"id":5668,"nodeType":"Block","src":"10389:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":5664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10441:3:17","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":5665,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"10446:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5663,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"10410:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10410:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5667,"nodeType":"RevertStatement","src":"10403:49:17"}]}},{"expression":{"arguments":[{"id":5672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5651,"src":"10487:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10479:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint112_$","typeString":"type(uint112)"},"typeName":{"id":5670,"name":"uint112","nodeType":"ElementaryTypeName","src":"10479:7:17","typeDescriptions":{}}},"id":5673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10479:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"functionReturnParameters":5655,"id":5674,"nodeType":"Return","src":"10472:21:17"}]},"documentation":{"id":5649,"nodeType":"StructuredDocumentation","src":"9997:280:17","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":5676,"implemented":true,"kind":"function","modifiers":[],"name":"toUint112","nameLocation":"10291:9:17","nodeType":"FunctionDefinition","parameters":{"id":5652,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5651,"mutability":"mutable","name":"value","nameLocation":"10309:5:17","nodeType":"VariableDeclaration","scope":5676,"src":"10301:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5650,"name":"uint256","nodeType":"ElementaryTypeName","src":"10301:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10300:15:17"},"returnParameters":{"id":5655,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5654,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5676,"src":"10339:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"},"typeName":{"id":5653,"name":"uint112","nodeType":"ElementaryTypeName","src":"10339:7:17","typeDescriptions":{"typeIdentifier":"t_uint112","typeString":"uint112"}},"visibility":"internal"}],"src":"10338:9:17"},"scope":6910,"src":"10282:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5703,"nodeType":"Block","src":"10857:152:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5690,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5684,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5679,"src":"10871:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5687,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10884:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5686,"name":"uint104","nodeType":"ElementaryTypeName","src":"10884:7:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"}],"id":5685,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"10879:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5688,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10879:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint104","typeString":"type(uint104)"}},"id":5689,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10893:3:17","memberName":"max","nodeType":"MemberAccess","src":"10879:17:17","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"src":"10871:25:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5697,"nodeType":"IfStatement","src":"10867:105:17","trueBody":{"id":5696,"nodeType":"Block","src":"10898:74:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":5692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10950:3:17","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":5693,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5679,"src":"10955:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5691,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"10919:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10919:42:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5695,"nodeType":"RevertStatement","src":"10912:49:17"}]}},{"expression":{"arguments":[{"id":5700,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5679,"src":"10996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10988:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint104_$","typeString":"type(uint104)"},"typeName":{"id":5698,"name":"uint104","nodeType":"ElementaryTypeName","src":"10988:7:17","typeDescriptions":{}}},"id":5701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10988:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"functionReturnParameters":5683,"id":5702,"nodeType":"Return","src":"10981:21:17"}]},"documentation":{"id":5677,"nodeType":"StructuredDocumentation","src":"10506:280:17","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":5704,"implemented":true,"kind":"function","modifiers":[],"name":"toUint104","nameLocation":"10800:9:17","nodeType":"FunctionDefinition","parameters":{"id":5680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5679,"mutability":"mutable","name":"value","nameLocation":"10818:5:17","nodeType":"VariableDeclaration","scope":5704,"src":"10810:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5678,"name":"uint256","nodeType":"ElementaryTypeName","src":"10810:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10809:15:17"},"returnParameters":{"id":5683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5704,"src":"10848:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"},"typeName":{"id":5681,"name":"uint104","nodeType":"ElementaryTypeName","src":"10848:7:17","typeDescriptions":{"typeIdentifier":"t_uint104","typeString":"uint104"}},"visibility":"internal"}],"src":"10847:9:17"},"scope":6910,"src":"10791:218:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5731,"nodeType":"Block","src":"11360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5712,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"11374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5715,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5714,"name":"uint96","nodeType":"ElementaryTypeName","src":"11387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"}],"id":5713,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5716,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint96","typeString":"type(uint96)"}},"id":5717,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11395:3:17","memberName":"max","nodeType":"MemberAccess","src":"11382:16:17","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"src":"11374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5725,"nodeType":"IfStatement","src":"11370:103:17","trueBody":{"id":5724,"nodeType":"Block","src":"11400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":5720,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":5721,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"11456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5719,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"11421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5722,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5723,"nodeType":"RevertStatement","src":"11414:48:17"}]}},{"expression":{"arguments":[{"id":5728,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5707,"src":"11496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5727,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint96_$","typeString":"type(uint96)"},"typeName":{"id":5726,"name":"uint96","nodeType":"ElementaryTypeName","src":"11489:6:17","typeDescriptions":{}}},"id":5729,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"functionReturnParameters":5711,"id":5730,"nodeType":"Return","src":"11482:20:17"}]},"documentation":{"id":5705,"nodeType":"StructuredDocumentation","src":"11015:276:17","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":5732,"implemented":true,"kind":"function","modifiers":[],"name":"toUint96","nameLocation":"11305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5707,"mutability":"mutable","name":"value","nameLocation":"11322:5:17","nodeType":"VariableDeclaration","scope":5732,"src":"11314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5706,"name":"uint256","nodeType":"ElementaryTypeName","src":"11314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11313:15:17"},"returnParameters":{"id":5711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5710,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5732,"src":"11352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"},"typeName":{"id":5709,"name":"uint96","nodeType":"ElementaryTypeName","src":"11352:6:17","typeDescriptions":{"typeIdentifier":"t_uint96","typeString":"uint96"}},"visibility":"internal"}],"src":"11351:8:17"},"scope":6910,"src":"11296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5759,"nodeType":"Block","src":"11860:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5740,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"11874:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5743,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11887:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5742,"name":"uint88","nodeType":"ElementaryTypeName","src":"11887:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"}],"id":5741,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"11882:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5744,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11882:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint88","typeString":"type(uint88)"}},"id":5745,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11895:3:17","memberName":"max","nodeType":"MemberAccess","src":"11882:16:17","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"src":"11874:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5753,"nodeType":"IfStatement","src":"11870:103:17","trueBody":{"id":5752,"nodeType":"Block","src":"11900:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":5748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11952:2:17","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":5749,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"11956:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5747,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"11921:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11921:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5751,"nodeType":"RevertStatement","src":"11914:48:17"}]}},{"expression":{"arguments":[{"id":5756,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5735,"src":"11996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5755,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint88_$","typeString":"type(uint88)"},"typeName":{"id":5754,"name":"uint88","nodeType":"ElementaryTypeName","src":"11989:6:17","typeDescriptions":{}}},"id":5757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"functionReturnParameters":5739,"id":5758,"nodeType":"Return","src":"11982:20:17"}]},"documentation":{"id":5733,"nodeType":"StructuredDocumentation","src":"11515:276:17","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":5760,"implemented":true,"kind":"function","modifiers":[],"name":"toUint88","nameLocation":"11805:8:17","nodeType":"FunctionDefinition","parameters":{"id":5736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5735,"mutability":"mutable","name":"value","nameLocation":"11822:5:17","nodeType":"VariableDeclaration","scope":5760,"src":"11814:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5734,"name":"uint256","nodeType":"ElementaryTypeName","src":"11814:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11813:15:17"},"returnParameters":{"id":5739,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5738,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5760,"src":"11852:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"},"typeName":{"id":5737,"name":"uint88","nodeType":"ElementaryTypeName","src":"11852:6:17","typeDescriptions":{"typeIdentifier":"t_uint88","typeString":"uint88"}},"visibility":"internal"}],"src":"11851:8:17"},"scope":6910,"src":"11796:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5787,"nodeType":"Block","src":"12360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5768,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5763,"src":"12374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5771,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5770,"name":"uint80","nodeType":"ElementaryTypeName","src":"12387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"}],"id":5769,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5772,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint80","typeString":"type(uint80)"}},"id":5773,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12395:3:17","memberName":"max","nodeType":"MemberAccess","src":"12382:16:17","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"src":"12374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5781,"nodeType":"IfStatement","src":"12370:103:17","trueBody":{"id":5780,"nodeType":"Block","src":"12400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":5776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":5777,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5763,"src":"12456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5775,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"12421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5779,"nodeType":"RevertStatement","src":"12414:48:17"}]}},{"expression":{"arguments":[{"id":5784,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5763,"src":"12496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5783,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint80_$","typeString":"type(uint80)"},"typeName":{"id":5782,"name":"uint80","nodeType":"ElementaryTypeName","src":"12489:6:17","typeDescriptions":{}}},"id":5785,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"functionReturnParameters":5767,"id":5786,"nodeType":"Return","src":"12482:20:17"}]},"documentation":{"id":5761,"nodeType":"StructuredDocumentation","src":"12015:276:17","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":5788,"implemented":true,"kind":"function","modifiers":[],"name":"toUint80","nameLocation":"12305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5763,"mutability":"mutable","name":"value","nameLocation":"12322:5:17","nodeType":"VariableDeclaration","scope":5788,"src":"12314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5762,"name":"uint256","nodeType":"ElementaryTypeName","src":"12314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12313:15:17"},"returnParameters":{"id":5767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5766,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5788,"src":"12352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"},"typeName":{"id":5765,"name":"uint80","nodeType":"ElementaryTypeName","src":"12352:6:17","typeDescriptions":{"typeIdentifier":"t_uint80","typeString":"uint80"}},"visibility":"internal"}],"src":"12351:8:17"},"scope":6910,"src":"12296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5815,"nodeType":"Block","src":"12860:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5802,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5796,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"12874:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12887:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5798,"name":"uint72","nodeType":"ElementaryTypeName","src":"12887:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"}],"id":5797,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"12882:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12882:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint72","typeString":"type(uint72)"}},"id":5801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12895:3:17","memberName":"max","nodeType":"MemberAccess","src":"12882:16:17","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"src":"12874:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5809,"nodeType":"IfStatement","src":"12870:103:17","trueBody":{"id":5808,"nodeType":"Block","src":"12900:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":5804,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12952:2:17","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":5805,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"12956:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5803,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"12921:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5806,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12921:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5807,"nodeType":"RevertStatement","src":"12914:48:17"}]}},{"expression":{"arguments":[{"id":5812,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5791,"src":"12996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5811,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint72_$","typeString":"type(uint72)"},"typeName":{"id":5810,"name":"uint72","nodeType":"ElementaryTypeName","src":"12989:6:17","typeDescriptions":{}}},"id":5813,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"functionReturnParameters":5795,"id":5814,"nodeType":"Return","src":"12982:20:17"}]},"documentation":{"id":5789,"nodeType":"StructuredDocumentation","src":"12515:276:17","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":5816,"implemented":true,"kind":"function","modifiers":[],"name":"toUint72","nameLocation":"12805:8:17","nodeType":"FunctionDefinition","parameters":{"id":5792,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5791,"mutability":"mutable","name":"value","nameLocation":"12822:5:17","nodeType":"VariableDeclaration","scope":5816,"src":"12814:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5790,"name":"uint256","nodeType":"ElementaryTypeName","src":"12814:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12813:15:17"},"returnParameters":{"id":5795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5816,"src":"12852:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"},"typeName":{"id":5793,"name":"uint72","nodeType":"ElementaryTypeName","src":"12852:6:17","typeDescriptions":{"typeIdentifier":"t_uint72","typeString":"uint72"}},"visibility":"internal"}],"src":"12851:8:17"},"scope":6910,"src":"12796:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5843,"nodeType":"Block","src":"13360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5824,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"13374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5826,"name":"uint64","nodeType":"ElementaryTypeName","src":"13387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"}],"id":5825,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint64","typeString":"type(uint64)"}},"id":5829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13395:3:17","memberName":"max","nodeType":"MemberAccess","src":"13382:16:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"src":"13374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5837,"nodeType":"IfStatement","src":"13370:103:17","trueBody":{"id":5836,"nodeType":"Block","src":"13400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":5832,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":5833,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"13456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5831,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"13421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5834,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5835,"nodeType":"RevertStatement","src":"13414:48:17"}]}},{"expression":{"arguments":[{"id":5840,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5819,"src":"13496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5839,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint64_$","typeString":"type(uint64)"},"typeName":{"id":5838,"name":"uint64","nodeType":"ElementaryTypeName","src":"13489:6:17","typeDescriptions":{}}},"id":5841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":5823,"id":5842,"nodeType":"Return","src":"13482:20:17"}]},"documentation":{"id":5817,"nodeType":"StructuredDocumentation","src":"13015:276:17","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":5844,"implemented":true,"kind":"function","modifiers":[],"name":"toUint64","nameLocation":"13305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5819,"mutability":"mutable","name":"value","nameLocation":"13322:5:17","nodeType":"VariableDeclaration","scope":5844,"src":"13314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5818,"name":"uint256","nodeType":"ElementaryTypeName","src":"13314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13313:15:17"},"returnParameters":{"id":5823,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5822,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5844,"src":"13352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":5821,"name":"uint64","nodeType":"ElementaryTypeName","src":"13352:6:17","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"13351:8:17"},"scope":6910,"src":"13296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5871,"nodeType":"Block","src":"13860:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5852,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"13874:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5855,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13887:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5854,"name":"uint56","nodeType":"ElementaryTypeName","src":"13887:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"}],"id":5853,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"13882:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13882:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint56","typeString":"type(uint56)"}},"id":5857,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13895:3:17","memberName":"max","nodeType":"MemberAccess","src":"13882:16:17","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"src":"13874:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5865,"nodeType":"IfStatement","src":"13870:103:17","trueBody":{"id":5864,"nodeType":"Block","src":"13900:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":5860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13952:2:17","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":5861,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"13956:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5859,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"13921:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5862,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13921:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5863,"nodeType":"RevertStatement","src":"13914:48:17"}]}},{"expression":{"arguments":[{"id":5868,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5847,"src":"13996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint56_$","typeString":"type(uint56)"},"typeName":{"id":5866,"name":"uint56","nodeType":"ElementaryTypeName","src":"13989:6:17","typeDescriptions":{}}},"id":5869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"functionReturnParameters":5851,"id":5870,"nodeType":"Return","src":"13982:20:17"}]},"documentation":{"id":5845,"nodeType":"StructuredDocumentation","src":"13515:276:17","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":5872,"implemented":true,"kind":"function","modifiers":[],"name":"toUint56","nameLocation":"13805:8:17","nodeType":"FunctionDefinition","parameters":{"id":5848,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5847,"mutability":"mutable","name":"value","nameLocation":"13822:5:17","nodeType":"VariableDeclaration","scope":5872,"src":"13814:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5846,"name":"uint256","nodeType":"ElementaryTypeName","src":"13814:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13813:15:17"},"returnParameters":{"id":5851,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5850,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5872,"src":"13852:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"},"typeName":{"id":5849,"name":"uint56","nodeType":"ElementaryTypeName","src":"13852:6:17","typeDescriptions":{"typeIdentifier":"t_uint56","typeString":"uint56"}},"visibility":"internal"}],"src":"13851:8:17"},"scope":6910,"src":"13796:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5899,"nodeType":"Block","src":"14360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5880,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"14374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5882,"name":"uint48","nodeType":"ElementaryTypeName","src":"14387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"}],"id":5881,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint48","typeString":"type(uint48)"}},"id":5885,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14395:3:17","memberName":"max","nodeType":"MemberAccess","src":"14382:16:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"src":"14374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5893,"nodeType":"IfStatement","src":"14370:103:17","trueBody":{"id":5892,"nodeType":"Block","src":"14400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":5888,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":5889,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"14456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5887,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"14421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5891,"nodeType":"RevertStatement","src":"14414:48:17"}]}},{"expression":{"arguments":[{"id":5896,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5875,"src":"14496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint48_$","typeString":"type(uint48)"},"typeName":{"id":5894,"name":"uint48","nodeType":"ElementaryTypeName","src":"14489:6:17","typeDescriptions":{}}},"id":5897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"functionReturnParameters":5879,"id":5898,"nodeType":"Return","src":"14482:20:17"}]},"documentation":{"id":5873,"nodeType":"StructuredDocumentation","src":"14015:276:17","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":5900,"implemented":true,"kind":"function","modifiers":[],"name":"toUint48","nameLocation":"14305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5875,"mutability":"mutable","name":"value","nameLocation":"14322:5:17","nodeType":"VariableDeclaration","scope":5900,"src":"14314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5874,"name":"uint256","nodeType":"ElementaryTypeName","src":"14314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14313:15:17"},"returnParameters":{"id":5879,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5878,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5900,"src":"14352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"},"typeName":{"id":5877,"name":"uint48","nodeType":"ElementaryTypeName","src":"14352:6:17","typeDescriptions":{"typeIdentifier":"t_uint48","typeString":"uint48"}},"visibility":"internal"}],"src":"14351:8:17"},"scope":6910,"src":"14296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5927,"nodeType":"Block","src":"14860:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5908,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"14874:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5911,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14887:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5910,"name":"uint40","nodeType":"ElementaryTypeName","src":"14887:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"}],"id":5909,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14882:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14882:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint40","typeString":"type(uint40)"}},"id":5913,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14895:3:17","memberName":"max","nodeType":"MemberAccess","src":"14882:16:17","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"14874:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5921,"nodeType":"IfStatement","src":"14870:103:17","trueBody":{"id":5920,"nodeType":"Block","src":"14900:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":5916,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14952:2:17","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":5917,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"14956:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5915,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"14921:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5918,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14921:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5919,"nodeType":"RevertStatement","src":"14914:48:17"}]}},{"expression":{"arguments":[{"id":5924,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5903,"src":"14996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5923,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint40_$","typeString":"type(uint40)"},"typeName":{"id":5922,"name":"uint40","nodeType":"ElementaryTypeName","src":"14989:6:17","typeDescriptions":{}}},"id":5925,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"functionReturnParameters":5907,"id":5926,"nodeType":"Return","src":"14982:20:17"}]},"documentation":{"id":5901,"nodeType":"StructuredDocumentation","src":"14515:276:17","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":5928,"implemented":true,"kind":"function","modifiers":[],"name":"toUint40","nameLocation":"14805:8:17","nodeType":"FunctionDefinition","parameters":{"id":5904,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5903,"mutability":"mutable","name":"value","nameLocation":"14822:5:17","nodeType":"VariableDeclaration","scope":5928,"src":"14814:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5902,"name":"uint256","nodeType":"ElementaryTypeName","src":"14814:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14813:15:17"},"returnParameters":{"id":5907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5906,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5928,"src":"14852:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"},"typeName":{"id":5905,"name":"uint40","nodeType":"ElementaryTypeName","src":"14852:6:17","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"visibility":"internal"}],"src":"14851:8:17"},"scope":6910,"src":"14796:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5955,"nodeType":"Block","src":"15360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5936,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5931,"src":"15374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5938,"name":"uint32","nodeType":"ElementaryTypeName","src":"15387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"}],"id":5937,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5940,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint32","typeString":"type(uint32)"}},"id":5941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15395:3:17","memberName":"max","nodeType":"MemberAccess","src":"15382:16:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"src":"15374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5949,"nodeType":"IfStatement","src":"15370:103:17","trueBody":{"id":5948,"nodeType":"Block","src":"15400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":5944,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":5945,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5931,"src":"15456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5943,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"15421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5947,"nodeType":"RevertStatement","src":"15414:48:17"}]}},{"expression":{"arguments":[{"id":5952,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5931,"src":"15496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5951,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint32_$","typeString":"type(uint32)"},"typeName":{"id":5950,"name":"uint32","nodeType":"ElementaryTypeName","src":"15489:6:17","typeDescriptions":{}}},"id":5953,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"functionReturnParameters":5935,"id":5954,"nodeType":"Return","src":"15482:20:17"}]},"documentation":{"id":5929,"nodeType":"StructuredDocumentation","src":"15015:276:17","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":5956,"implemented":true,"kind":"function","modifiers":[],"name":"toUint32","nameLocation":"15305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5932,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5931,"mutability":"mutable","name":"value","nameLocation":"15322:5:17","nodeType":"VariableDeclaration","scope":5956,"src":"15314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5930,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15313:15:17"},"returnParameters":{"id":5935,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5934,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5956,"src":"15352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":5933,"name":"uint32","nodeType":"ElementaryTypeName","src":"15352:6:17","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"}],"src":"15351:8:17"},"scope":6910,"src":"15296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":5983,"nodeType":"Block","src":"15860:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5964,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5959,"src":"15874:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15887:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5966,"name":"uint24","nodeType":"ElementaryTypeName","src":"15887:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"}],"id":5965,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"15882:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5968,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15882:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint24","typeString":"type(uint24)"}},"id":5969,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"15895:3:17","memberName":"max","nodeType":"MemberAccess","src":"15882:16:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"src":"15874:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":5977,"nodeType":"IfStatement","src":"15870:103:17","trueBody":{"id":5976,"nodeType":"Block","src":"15900:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":5972,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15952:2:17","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":5973,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5959,"src":"15956:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5971,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"15921:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":5974,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15921:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":5975,"nodeType":"RevertStatement","src":"15914:48:17"}]}},{"expression":{"arguments":[{"id":5980,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5959,"src":"15996:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5979,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint24_$","typeString":"type(uint24)"},"typeName":{"id":5978,"name":"uint24","nodeType":"ElementaryTypeName","src":"15989:6:17","typeDescriptions":{}}},"id":5981,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"functionReturnParameters":5963,"id":5982,"nodeType":"Return","src":"15982:20:17"}]},"documentation":{"id":5957,"nodeType":"StructuredDocumentation","src":"15515:276:17","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":5984,"implemented":true,"kind":"function","modifiers":[],"name":"toUint24","nameLocation":"15805:8:17","nodeType":"FunctionDefinition","parameters":{"id":5960,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5959,"mutability":"mutable","name":"value","nameLocation":"15822:5:17","nodeType":"VariableDeclaration","scope":5984,"src":"15814:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5958,"name":"uint256","nodeType":"ElementaryTypeName","src":"15814:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15813:15:17"},"returnParameters":{"id":5963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5962,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":5984,"src":"15852:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"},"typeName":{"id":5961,"name":"uint24","nodeType":"ElementaryTypeName","src":"15852:6:17","typeDescriptions":{"typeIdentifier":"t_uint24","typeString":"uint24"}},"visibility":"internal"}],"src":"15851:8:17"},"scope":6910,"src":"15796:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6011,"nodeType":"Block","src":"16360:149:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":5998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":5992,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"16374:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":5995,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16387:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":5994,"name":"uint16","nodeType":"ElementaryTypeName","src":"16387:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"}],"id":5993,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16382:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":5996,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16382:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint16","typeString":"type(uint16)"}},"id":5997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16395:3:17","memberName":"max","nodeType":"MemberAccess","src":"16382:16:17","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"src":"16374:24:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6005,"nodeType":"IfStatement","src":"16370:103:17","trueBody":{"id":6004,"nodeType":"Block","src":"16400:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6000,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16452:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6001,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"16456:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":5999,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"16421:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6002,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16421:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6003,"nodeType":"RevertStatement","src":"16414:48:17"}]}},{"expression":{"arguments":[{"id":6008,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5987,"src":"16496:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6007,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16489:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint16_$","typeString":"type(uint16)"},"typeName":{"id":6006,"name":"uint16","nodeType":"ElementaryTypeName","src":"16489:6:17","typeDescriptions":{}}},"id":6009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16489:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"functionReturnParameters":5991,"id":6010,"nodeType":"Return","src":"16482:20:17"}]},"documentation":{"id":5985,"nodeType":"StructuredDocumentation","src":"16015:276:17","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":6012,"implemented":true,"kind":"function","modifiers":[],"name":"toUint16","nameLocation":"16305:8:17","nodeType":"FunctionDefinition","parameters":{"id":5988,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5987,"mutability":"mutable","name":"value","nameLocation":"16322:5:17","nodeType":"VariableDeclaration","scope":6012,"src":"16314:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":5986,"name":"uint256","nodeType":"ElementaryTypeName","src":"16314:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16313:15:17"},"returnParameters":{"id":5991,"nodeType":"ParameterList","parameters":[{"constant":false,"id":5990,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6012,"src":"16352:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"},"typeName":{"id":5989,"name":"uint16","nodeType":"ElementaryTypeName","src":"16352:6:17","typeDescriptions":{"typeIdentifier":"t_uint16","typeString":"uint16"}},"visibility":"internal"}],"src":"16351:8:17"},"scope":6910,"src":"16296:213:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6039,"nodeType":"Block","src":"16854:146:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6020,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"16868:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"expression":{"arguments":[{"id":6023,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16881:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6022,"name":"uint8","nodeType":"ElementaryTypeName","src":"16881:5:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":6021,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"16876:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6024,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16876:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":6025,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16888:3:17","memberName":"max","nodeType":"MemberAccess","src":"16876:15:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16868:23:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6033,"nodeType":"IfStatement","src":"16864:101:17","trueBody":{"id":6032,"nodeType":"Block","src":"16893:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6028,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16945:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6029,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"16948:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6027,"name":"SafeCastOverflowedUintDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5155,"src":"16914:30:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$returns$_t_error_$","typeString":"function (uint8,uint256) pure returns (error)"}},"id":6030,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16914:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6031,"nodeType":"RevertStatement","src":"16907:47:17"}]}},{"expression":{"arguments":[{"id":6036,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6015,"src":"16987:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6035,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16981:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":6034,"name":"uint8","nodeType":"ElementaryTypeName","src":"16981:5:17","typeDescriptions":{}}},"id":6037,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16981:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":6019,"id":6038,"nodeType":"Return","src":"16974:19:17"}]},"documentation":{"id":6013,"nodeType":"StructuredDocumentation","src":"16515:272:17","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":6040,"implemented":true,"kind":"function","modifiers":[],"name":"toUint8","nameLocation":"16801:7:17","nodeType":"FunctionDefinition","parameters":{"id":6016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6015,"mutability":"mutable","name":"value","nameLocation":"16817:5:17","nodeType":"VariableDeclaration","scope":6040,"src":"16809:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6014,"name":"uint256","nodeType":"ElementaryTypeName","src":"16809:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16808:15:17"},"returnParameters":{"id":6019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6018,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6040,"src":"16847:5:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":6017,"name":"uint8","nodeType":"ElementaryTypeName","src":"16847:5:17","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"16846:7:17"},"scope":6910,"src":"16792:208:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6062,"nodeType":"Block","src":"17236:128:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6048,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"17250:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"30","id":6049,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17258:1:17","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17250:9:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6056,"nodeType":"IfStatement","src":"17246:81:17","trueBody":{"id":6055,"nodeType":"Block","src":"17261:66:17","statements":[{"errorCall":{"arguments":[{"id":6052,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"17310:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6051,"name":"SafeCastOverflowedIntToUint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5160,"src":"17282:27:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_int256_$returns$_t_error_$","typeString":"function (int256) pure returns (error)"}},"id":6053,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17282:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6054,"nodeType":"RevertStatement","src":"17275:41:17"}]}},{"expression":{"arguments":[{"id":6059,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6043,"src":"17351:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17343:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6057,"name":"uint256","nodeType":"ElementaryTypeName","src":"17343:7:17","typeDescriptions":{}}},"id":6060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17343:14:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":6047,"id":6061,"nodeType":"Return","src":"17336:21:17"}]},"documentation":{"id":6041,"nodeType":"StructuredDocumentation","src":"17006:160:17","text":" @dev Converts a signed int256 into an unsigned uint256.\n Requirements:\n - input must be greater than or equal to 0."},"id":6063,"implemented":true,"kind":"function","modifiers":[],"name":"toUint256","nameLocation":"17180:9:17","nodeType":"FunctionDefinition","parameters":{"id":6044,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6043,"mutability":"mutable","name":"value","nameLocation":"17197:5:17","nodeType":"VariableDeclaration","scope":6063,"src":"17190:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6042,"name":"int256","nodeType":"ElementaryTypeName","src":"17190:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17189:14:17"},"returnParameters":{"id":6047,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6046,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6063,"src":"17227:7:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6045,"name":"uint256","nodeType":"ElementaryTypeName","src":"17227:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17226:9:17"},"scope":6910,"src":"17171:193:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6088,"nodeType":"Block","src":"17761:150:17","statements":[{"expression":{"id":6076,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6071,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6069,"src":"17771:10:17","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6074,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"17791:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6073,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17784:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int248_$","typeString":"type(int248)"},"typeName":{"id":6072,"name":"int248","nodeType":"ElementaryTypeName","src":"17784:6:17","typeDescriptions":{}}},"id":6075,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17784:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"src":"17771:26:17","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"id":6077,"nodeType":"ExpressionStatement","src":"17771:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6078,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6069,"src":"17811:10:17","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6079,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"17825:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"17811:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6087,"nodeType":"IfStatement","src":"17807:98:17","trueBody":{"id":6086,"nodeType":"Block","src":"17832:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323438","id":6082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17883:3:17","typeDescriptions":{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},"value":"248"},{"id":6083,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6066,"src":"17888:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_248_by_1","typeString":"int_const 248"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6081,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"17853:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6084,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17853:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6085,"nodeType":"RevertStatement","src":"17846:48:17"}]}}]},"documentation":{"id":6064,"nodeType":"StructuredDocumentation","src":"17370:312:17","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":6089,"implemented":true,"kind":"function","modifiers":[],"name":"toInt248","nameLocation":"17696:8:17","nodeType":"FunctionDefinition","parameters":{"id":6067,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6066,"mutability":"mutable","name":"value","nameLocation":"17712:5:17","nodeType":"VariableDeclaration","scope":6089,"src":"17705:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6065,"name":"int256","nodeType":"ElementaryTypeName","src":"17705:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"17704:14:17"},"returnParameters":{"id":6070,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6069,"mutability":"mutable","name":"downcasted","nameLocation":"17749:10:17","nodeType":"VariableDeclaration","scope":6089,"src":"17742:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"},"typeName":{"id":6068,"name":"int248","nodeType":"ElementaryTypeName","src":"17742:6:17","typeDescriptions":{"typeIdentifier":"t_int248","typeString":"int248"}},"visibility":"internal"}],"src":"17741:19:17"},"scope":6910,"src":"17687:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6114,"nodeType":"Block","src":"18308:150:17","statements":[{"expression":{"id":6102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6097,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6095,"src":"18318:10:17","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6100,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6092,"src":"18338:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6099,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18331:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int240_$","typeString":"type(int240)"},"typeName":{"id":6098,"name":"int240","nodeType":"ElementaryTypeName","src":"18331:6:17","typeDescriptions":{}}},"id":6101,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18331:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"src":"18318:26:17","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"id":6103,"nodeType":"ExpressionStatement","src":"18318:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6106,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6104,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6095,"src":"18358:10:17","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6105,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6092,"src":"18372:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18358:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6113,"nodeType":"IfStatement","src":"18354:98:17","trueBody":{"id":6112,"nodeType":"Block","src":"18379:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323430","id":6108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18430:3:17","typeDescriptions":{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},"value":"240"},{"id":6109,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6092,"src":"18435:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_240_by_1","typeString":"int_const 240"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6107,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18400:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6110,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18400:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6111,"nodeType":"RevertStatement","src":"18393:48:17"}]}}]},"documentation":{"id":6090,"nodeType":"StructuredDocumentation","src":"17917:312:17","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":6115,"implemented":true,"kind":"function","modifiers":[],"name":"toInt240","nameLocation":"18243:8:17","nodeType":"FunctionDefinition","parameters":{"id":6093,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6092,"mutability":"mutable","name":"value","nameLocation":"18259:5:17","nodeType":"VariableDeclaration","scope":6115,"src":"18252:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6091,"name":"int256","nodeType":"ElementaryTypeName","src":"18252:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18251:14:17"},"returnParameters":{"id":6096,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6095,"mutability":"mutable","name":"downcasted","nameLocation":"18296:10:17","nodeType":"VariableDeclaration","scope":6115,"src":"18289:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"},"typeName":{"id":6094,"name":"int240","nodeType":"ElementaryTypeName","src":"18289:6:17","typeDescriptions":{"typeIdentifier":"t_int240","typeString":"int240"}},"visibility":"internal"}],"src":"18288:19:17"},"scope":6910,"src":"18234:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6140,"nodeType":"Block","src":"18855:150:17","statements":[{"expression":{"id":6128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6123,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6121,"src":"18865:10:17","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6126,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6118,"src":"18885:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6125,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18878:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int232_$","typeString":"type(int232)"},"typeName":{"id":6124,"name":"int232","nodeType":"ElementaryTypeName","src":"18878:6:17","typeDescriptions":{}}},"id":6127,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18878:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"src":"18865:26:17","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"id":6129,"nodeType":"ExpressionStatement","src":"18865:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6132,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6130,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6121,"src":"18905:10:17","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6131,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6118,"src":"18919:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"18905:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6139,"nodeType":"IfStatement","src":"18901:98:17","trueBody":{"id":6138,"nodeType":"Block","src":"18926:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323332","id":6134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18977:3:17","typeDescriptions":{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},"value":"232"},{"id":6135,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6118,"src":"18982:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_232_by_1","typeString":"int_const 232"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6133,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"18947:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6136,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18947:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6137,"nodeType":"RevertStatement","src":"18940:48:17"}]}}]},"documentation":{"id":6116,"nodeType":"StructuredDocumentation","src":"18464:312:17","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":6141,"implemented":true,"kind":"function","modifiers":[],"name":"toInt232","nameLocation":"18790:8:17","nodeType":"FunctionDefinition","parameters":{"id":6119,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6118,"mutability":"mutable","name":"value","nameLocation":"18806:5:17","nodeType":"VariableDeclaration","scope":6141,"src":"18799:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6117,"name":"int256","nodeType":"ElementaryTypeName","src":"18799:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"18798:14:17"},"returnParameters":{"id":6122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6121,"mutability":"mutable","name":"downcasted","nameLocation":"18843:10:17","nodeType":"VariableDeclaration","scope":6141,"src":"18836:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"},"typeName":{"id":6120,"name":"int232","nodeType":"ElementaryTypeName","src":"18836:6:17","typeDescriptions":{"typeIdentifier":"t_int232","typeString":"int232"}},"visibility":"internal"}],"src":"18835:19:17"},"scope":6910,"src":"18781:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6166,"nodeType":"Block","src":"19402:150:17","statements":[{"expression":{"id":6154,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6149,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"19412:10:17","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6152,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"19432:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6151,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19425:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int224_$","typeString":"type(int224)"},"typeName":{"id":6150,"name":"int224","nodeType":"ElementaryTypeName","src":"19425:6:17","typeDescriptions":{}}},"id":6153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19425:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"src":"19412:26:17","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"id":6155,"nodeType":"ExpressionStatement","src":"19412:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6156,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6147,"src":"19452:10:17","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6157,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"19466:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19452:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6165,"nodeType":"IfStatement","src":"19448:98:17","trueBody":{"id":6164,"nodeType":"Block","src":"19473:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323234","id":6160,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19524:3:17","typeDescriptions":{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},"value":"224"},{"id":6161,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6144,"src":"19529:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_224_by_1","typeString":"int_const 224"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6159,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"19494:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6162,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19494:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6163,"nodeType":"RevertStatement","src":"19487:48:17"}]}}]},"documentation":{"id":6142,"nodeType":"StructuredDocumentation","src":"19011:312:17","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":6167,"implemented":true,"kind":"function","modifiers":[],"name":"toInt224","nameLocation":"19337:8:17","nodeType":"FunctionDefinition","parameters":{"id":6145,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6144,"mutability":"mutable","name":"value","nameLocation":"19353:5:17","nodeType":"VariableDeclaration","scope":6167,"src":"19346:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6143,"name":"int256","nodeType":"ElementaryTypeName","src":"19346:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19345:14:17"},"returnParameters":{"id":6148,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6147,"mutability":"mutable","name":"downcasted","nameLocation":"19390:10:17","nodeType":"VariableDeclaration","scope":6167,"src":"19383:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"},"typeName":{"id":6146,"name":"int224","nodeType":"ElementaryTypeName","src":"19383:6:17","typeDescriptions":{"typeIdentifier":"t_int224","typeString":"int224"}},"visibility":"internal"}],"src":"19382:19:17"},"scope":6910,"src":"19328:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6192,"nodeType":"Block","src":"19949:150:17","statements":[{"expression":{"id":6180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6175,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"19959:10:17","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6178,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"19979:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19972:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int216_$","typeString":"type(int216)"},"typeName":{"id":6176,"name":"int216","nodeType":"ElementaryTypeName","src":"19972:6:17","typeDescriptions":{}}},"id":6179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19972:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"src":"19959:26:17","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"id":6181,"nodeType":"ExpressionStatement","src":"19959:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6182,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6173,"src":"19999:10:17","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6183,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"20013:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"19999:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6191,"nodeType":"IfStatement","src":"19995:98:17","trueBody":{"id":6190,"nodeType":"Block","src":"20020:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323136","id":6186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20071:3:17","typeDescriptions":{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},"value":"216"},{"id":6187,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6170,"src":"20076:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_216_by_1","typeString":"int_const 216"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6185,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"20041:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6188,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20041:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6189,"nodeType":"RevertStatement","src":"20034:48:17"}]}}]},"documentation":{"id":6168,"nodeType":"StructuredDocumentation","src":"19558:312:17","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":6193,"implemented":true,"kind":"function","modifiers":[],"name":"toInt216","nameLocation":"19884:8:17","nodeType":"FunctionDefinition","parameters":{"id":6171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6170,"mutability":"mutable","name":"value","nameLocation":"19900:5:17","nodeType":"VariableDeclaration","scope":6193,"src":"19893:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6169,"name":"int256","nodeType":"ElementaryTypeName","src":"19893:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"19892:14:17"},"returnParameters":{"id":6174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6173,"mutability":"mutable","name":"downcasted","nameLocation":"19937:10:17","nodeType":"VariableDeclaration","scope":6193,"src":"19930:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"},"typeName":{"id":6172,"name":"int216","nodeType":"ElementaryTypeName","src":"19930:6:17","typeDescriptions":{"typeIdentifier":"t_int216","typeString":"int216"}},"visibility":"internal"}],"src":"19929:19:17"},"scope":6910,"src":"19875:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6218,"nodeType":"Block","src":"20496:150:17","statements":[{"expression":{"id":6206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6201,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"20506:10:17","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6204,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"20526:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20519:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int208_$","typeString":"type(int208)"},"typeName":{"id":6202,"name":"int208","nodeType":"ElementaryTypeName","src":"20519:6:17","typeDescriptions":{}}},"id":6205,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20519:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"src":"20506:26:17","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"id":6207,"nodeType":"ExpressionStatement","src":"20506:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6208,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6199,"src":"20546:10:17","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6209,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"20560:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"20546:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6217,"nodeType":"IfStatement","src":"20542:98:17","trueBody":{"id":6216,"nodeType":"Block","src":"20567:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323038","id":6212,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20618:3:17","typeDescriptions":{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},"value":"208"},{"id":6213,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6196,"src":"20623:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_208_by_1","typeString":"int_const 208"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6211,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"20588:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20588:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6215,"nodeType":"RevertStatement","src":"20581:48:17"}]}}]},"documentation":{"id":6194,"nodeType":"StructuredDocumentation","src":"20105:312:17","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":6219,"implemented":true,"kind":"function","modifiers":[],"name":"toInt208","nameLocation":"20431:8:17","nodeType":"FunctionDefinition","parameters":{"id":6197,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6196,"mutability":"mutable","name":"value","nameLocation":"20447:5:17","nodeType":"VariableDeclaration","scope":6219,"src":"20440:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6195,"name":"int256","nodeType":"ElementaryTypeName","src":"20440:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20439:14:17"},"returnParameters":{"id":6200,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6199,"mutability":"mutable","name":"downcasted","nameLocation":"20484:10:17","nodeType":"VariableDeclaration","scope":6219,"src":"20477:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"},"typeName":{"id":6198,"name":"int208","nodeType":"ElementaryTypeName","src":"20477:6:17","typeDescriptions":{"typeIdentifier":"t_int208","typeString":"int208"}},"visibility":"internal"}],"src":"20476:19:17"},"scope":6910,"src":"20422:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6244,"nodeType":"Block","src":"21043:150:17","statements":[{"expression":{"id":6232,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6227,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"21053:10:17","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6230,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"21073:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6229,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21066:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int200_$","typeString":"type(int200)"},"typeName":{"id":6228,"name":"int200","nodeType":"ElementaryTypeName","src":"21066:6:17","typeDescriptions":{}}},"id":6231,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21066:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"src":"21053:26:17","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"id":6233,"nodeType":"ExpressionStatement","src":"21053:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6234,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6225,"src":"21093:10:17","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6235,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"21107:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21093:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6243,"nodeType":"IfStatement","src":"21089:98:17","trueBody":{"id":6242,"nodeType":"Block","src":"21114:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"323030","id":6238,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21165:3:17","typeDescriptions":{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},"value":"200"},{"id":6239,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6222,"src":"21170:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_200_by_1","typeString":"int_const 200"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6237,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"21135:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6240,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21135:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6241,"nodeType":"RevertStatement","src":"21128:48:17"}]}}]},"documentation":{"id":6220,"nodeType":"StructuredDocumentation","src":"20652:312:17","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":6245,"implemented":true,"kind":"function","modifiers":[],"name":"toInt200","nameLocation":"20978:8:17","nodeType":"FunctionDefinition","parameters":{"id":6223,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6222,"mutability":"mutable","name":"value","nameLocation":"20994:5:17","nodeType":"VariableDeclaration","scope":6245,"src":"20987:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6221,"name":"int256","nodeType":"ElementaryTypeName","src":"20987:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"20986:14:17"},"returnParameters":{"id":6226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6225,"mutability":"mutable","name":"downcasted","nameLocation":"21031:10:17","nodeType":"VariableDeclaration","scope":6245,"src":"21024:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"},"typeName":{"id":6224,"name":"int200","nodeType":"ElementaryTypeName","src":"21024:6:17","typeDescriptions":{"typeIdentifier":"t_int200","typeString":"int200"}},"visibility":"internal"}],"src":"21023:19:17"},"scope":6910,"src":"20969:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6270,"nodeType":"Block","src":"21590:150:17","statements":[{"expression":{"id":6258,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6253,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"21600:10:17","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6256,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"21620:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6255,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21613:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int192_$","typeString":"type(int192)"},"typeName":{"id":6254,"name":"int192","nodeType":"ElementaryTypeName","src":"21613:6:17","typeDescriptions":{}}},"id":6257,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21613:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"src":"21600:26:17","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"id":6259,"nodeType":"ExpressionStatement","src":"21600:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6260,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6251,"src":"21640:10:17","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6261,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"21654:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"21640:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6269,"nodeType":"IfStatement","src":"21636:98:17","trueBody":{"id":6268,"nodeType":"Block","src":"21661:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313932","id":6264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21712:3:17","typeDescriptions":{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},"value":"192"},{"id":6265,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6248,"src":"21717:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_192_by_1","typeString":"int_const 192"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6263,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"21682:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6266,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21682:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6267,"nodeType":"RevertStatement","src":"21675:48:17"}]}}]},"documentation":{"id":6246,"nodeType":"StructuredDocumentation","src":"21199:312:17","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":6271,"implemented":true,"kind":"function","modifiers":[],"name":"toInt192","nameLocation":"21525:8:17","nodeType":"FunctionDefinition","parameters":{"id":6249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6248,"mutability":"mutable","name":"value","nameLocation":"21541:5:17","nodeType":"VariableDeclaration","scope":6271,"src":"21534:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6247,"name":"int256","nodeType":"ElementaryTypeName","src":"21534:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"21533:14:17"},"returnParameters":{"id":6252,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6251,"mutability":"mutable","name":"downcasted","nameLocation":"21578:10:17","nodeType":"VariableDeclaration","scope":6271,"src":"21571:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"},"typeName":{"id":6250,"name":"int192","nodeType":"ElementaryTypeName","src":"21571:6:17","typeDescriptions":{"typeIdentifier":"t_int192","typeString":"int192"}},"visibility":"internal"}],"src":"21570:19:17"},"scope":6910,"src":"21516:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6296,"nodeType":"Block","src":"22137:150:17","statements":[{"expression":{"id":6284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6279,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6277,"src":"22147:10:17","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6282,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"22167:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6281,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22160:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int184_$","typeString":"type(int184)"},"typeName":{"id":6280,"name":"int184","nodeType":"ElementaryTypeName","src":"22160:6:17","typeDescriptions":{}}},"id":6283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22160:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"src":"22147:26:17","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"id":6285,"nodeType":"ExpressionStatement","src":"22147:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6288,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6286,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6277,"src":"22187:10:17","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6287,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"22201:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22187:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6295,"nodeType":"IfStatement","src":"22183:98:17","trueBody":{"id":6294,"nodeType":"Block","src":"22208:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313834","id":6290,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22259:3:17","typeDescriptions":{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},"value":"184"},{"id":6291,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6274,"src":"22264:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_184_by_1","typeString":"int_const 184"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6289,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"22229:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22229:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6293,"nodeType":"RevertStatement","src":"22222:48:17"}]}}]},"documentation":{"id":6272,"nodeType":"StructuredDocumentation","src":"21746:312:17","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":6297,"implemented":true,"kind":"function","modifiers":[],"name":"toInt184","nameLocation":"22072:8:17","nodeType":"FunctionDefinition","parameters":{"id":6275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6274,"mutability":"mutable","name":"value","nameLocation":"22088:5:17","nodeType":"VariableDeclaration","scope":6297,"src":"22081:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6273,"name":"int256","nodeType":"ElementaryTypeName","src":"22081:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22080:14:17"},"returnParameters":{"id":6278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6277,"mutability":"mutable","name":"downcasted","nameLocation":"22125:10:17","nodeType":"VariableDeclaration","scope":6297,"src":"22118:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"},"typeName":{"id":6276,"name":"int184","nodeType":"ElementaryTypeName","src":"22118:6:17","typeDescriptions":{"typeIdentifier":"t_int184","typeString":"int184"}},"visibility":"internal"}],"src":"22117:19:17"},"scope":6910,"src":"22063:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6322,"nodeType":"Block","src":"22684:150:17","statements":[{"expression":{"id":6310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6305,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"22694:10:17","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6308,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"22714:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22707:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int176_$","typeString":"type(int176)"},"typeName":{"id":6306,"name":"int176","nodeType":"ElementaryTypeName","src":"22707:6:17","typeDescriptions":{}}},"id":6309,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22707:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"src":"22694:26:17","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"id":6311,"nodeType":"ExpressionStatement","src":"22694:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6314,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6312,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6303,"src":"22734:10:17","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6313,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"22748:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"22734:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6321,"nodeType":"IfStatement","src":"22730:98:17","trueBody":{"id":6320,"nodeType":"Block","src":"22755:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313736","id":6316,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"22806:3:17","typeDescriptions":{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},"value":"176"},{"id":6317,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6300,"src":"22811:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_176_by_1","typeString":"int_const 176"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6315,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"22776:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6318,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22776:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6319,"nodeType":"RevertStatement","src":"22769:48:17"}]}}]},"documentation":{"id":6298,"nodeType":"StructuredDocumentation","src":"22293:312:17","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":6323,"implemented":true,"kind":"function","modifiers":[],"name":"toInt176","nameLocation":"22619:8:17","nodeType":"FunctionDefinition","parameters":{"id":6301,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6300,"mutability":"mutable","name":"value","nameLocation":"22635:5:17","nodeType":"VariableDeclaration","scope":6323,"src":"22628:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6299,"name":"int256","nodeType":"ElementaryTypeName","src":"22628:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"22627:14:17"},"returnParameters":{"id":6304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6303,"mutability":"mutable","name":"downcasted","nameLocation":"22672:10:17","nodeType":"VariableDeclaration","scope":6323,"src":"22665:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"},"typeName":{"id":6302,"name":"int176","nodeType":"ElementaryTypeName","src":"22665:6:17","typeDescriptions":{"typeIdentifier":"t_int176","typeString":"int176"}},"visibility":"internal"}],"src":"22664:19:17"},"scope":6910,"src":"22610:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6348,"nodeType":"Block","src":"23231:150:17","statements":[{"expression":{"id":6336,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6331,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6329,"src":"23241:10:17","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6334,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"23261:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6333,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23254:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int168_$","typeString":"type(int168)"},"typeName":{"id":6332,"name":"int168","nodeType":"ElementaryTypeName","src":"23254:6:17","typeDescriptions":{}}},"id":6335,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23254:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"src":"23241:26:17","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"id":6337,"nodeType":"ExpressionStatement","src":"23241:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6338,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6329,"src":"23281:10:17","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6339,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"23295:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23281:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6347,"nodeType":"IfStatement","src":"23277:98:17","trueBody":{"id":6346,"nodeType":"Block","src":"23302:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313638","id":6342,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23353:3:17","typeDescriptions":{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},"value":"168"},{"id":6343,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6326,"src":"23358:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_168_by_1","typeString":"int_const 168"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6341,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"23323:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6344,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23323:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6345,"nodeType":"RevertStatement","src":"23316:48:17"}]}}]},"documentation":{"id":6324,"nodeType":"StructuredDocumentation","src":"22840:312:17","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":6349,"implemented":true,"kind":"function","modifiers":[],"name":"toInt168","nameLocation":"23166:8:17","nodeType":"FunctionDefinition","parameters":{"id":6327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6326,"mutability":"mutable","name":"value","nameLocation":"23182:5:17","nodeType":"VariableDeclaration","scope":6349,"src":"23175:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6325,"name":"int256","nodeType":"ElementaryTypeName","src":"23175:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23174:14:17"},"returnParameters":{"id":6330,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6329,"mutability":"mutable","name":"downcasted","nameLocation":"23219:10:17","nodeType":"VariableDeclaration","scope":6349,"src":"23212:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"},"typeName":{"id":6328,"name":"int168","nodeType":"ElementaryTypeName","src":"23212:6:17","typeDescriptions":{"typeIdentifier":"t_int168","typeString":"int168"}},"visibility":"internal"}],"src":"23211:19:17"},"scope":6910,"src":"23157:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6374,"nodeType":"Block","src":"23778:150:17","statements":[{"expression":{"id":6362,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6357,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6355,"src":"23788:10:17","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6360,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6352,"src":"23808:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6359,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23801:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int160_$","typeString":"type(int160)"},"typeName":{"id":6358,"name":"int160","nodeType":"ElementaryTypeName","src":"23801:6:17","typeDescriptions":{}}},"id":6361,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23801:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"src":"23788:26:17","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"id":6363,"nodeType":"ExpressionStatement","src":"23788:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6366,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6364,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6355,"src":"23828:10:17","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6365,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6352,"src":"23842:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"23828:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6373,"nodeType":"IfStatement","src":"23824:98:17","trueBody":{"id":6372,"nodeType":"Block","src":"23849:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313630","id":6368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23900:3:17","typeDescriptions":{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},"value":"160"},{"id":6369,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6352,"src":"23905:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_160_by_1","typeString":"int_const 160"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6367,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"23870:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23870:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6371,"nodeType":"RevertStatement","src":"23863:48:17"}]}}]},"documentation":{"id":6350,"nodeType":"StructuredDocumentation","src":"23387:312:17","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":6375,"implemented":true,"kind":"function","modifiers":[],"name":"toInt160","nameLocation":"23713:8:17","nodeType":"FunctionDefinition","parameters":{"id":6353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6352,"mutability":"mutable","name":"value","nameLocation":"23729:5:17","nodeType":"VariableDeclaration","scope":6375,"src":"23722:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6351,"name":"int256","nodeType":"ElementaryTypeName","src":"23722:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"23721:14:17"},"returnParameters":{"id":6356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6355,"mutability":"mutable","name":"downcasted","nameLocation":"23766:10:17","nodeType":"VariableDeclaration","scope":6375,"src":"23759:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"},"typeName":{"id":6354,"name":"int160","nodeType":"ElementaryTypeName","src":"23759:6:17","typeDescriptions":{"typeIdentifier":"t_int160","typeString":"int160"}},"visibility":"internal"}],"src":"23758:19:17"},"scope":6910,"src":"23704:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6400,"nodeType":"Block","src":"24325:150:17","statements":[{"expression":{"id":6388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6383,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"24335:10:17","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6386,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"24355:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6385,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24348:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int152_$","typeString":"type(int152)"},"typeName":{"id":6384,"name":"int152","nodeType":"ElementaryTypeName","src":"24348:6:17","typeDescriptions":{}}},"id":6387,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24348:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"src":"24335:26:17","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"id":6389,"nodeType":"ExpressionStatement","src":"24335:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6390,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6381,"src":"24375:10:17","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6391,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"24389:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24375:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6399,"nodeType":"IfStatement","src":"24371:98:17","trueBody":{"id":6398,"nodeType":"Block","src":"24396:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313532","id":6394,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24447:3:17","typeDescriptions":{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},"value":"152"},{"id":6395,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6378,"src":"24452:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_152_by_1","typeString":"int_const 152"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6393,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"24417:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24417:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6397,"nodeType":"RevertStatement","src":"24410:48:17"}]}}]},"documentation":{"id":6376,"nodeType":"StructuredDocumentation","src":"23934:312:17","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":6401,"implemented":true,"kind":"function","modifiers":[],"name":"toInt152","nameLocation":"24260:8:17","nodeType":"FunctionDefinition","parameters":{"id":6379,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6378,"mutability":"mutable","name":"value","nameLocation":"24276:5:17","nodeType":"VariableDeclaration","scope":6401,"src":"24269:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6377,"name":"int256","nodeType":"ElementaryTypeName","src":"24269:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24268:14:17"},"returnParameters":{"id":6382,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6381,"mutability":"mutable","name":"downcasted","nameLocation":"24313:10:17","nodeType":"VariableDeclaration","scope":6401,"src":"24306:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"},"typeName":{"id":6380,"name":"int152","nodeType":"ElementaryTypeName","src":"24306:6:17","typeDescriptions":{"typeIdentifier":"t_int152","typeString":"int152"}},"visibility":"internal"}],"src":"24305:19:17"},"scope":6910,"src":"24251:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6426,"nodeType":"Block","src":"24872:150:17","statements":[{"expression":{"id":6414,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6409,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6407,"src":"24882:10:17","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6412,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"24902:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6411,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24895:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int144_$","typeString":"type(int144)"},"typeName":{"id":6410,"name":"int144","nodeType":"ElementaryTypeName","src":"24895:6:17","typeDescriptions":{}}},"id":6413,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24895:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"src":"24882:26:17","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"id":6415,"nodeType":"ExpressionStatement","src":"24882:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6416,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6407,"src":"24922:10:17","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6417,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"24936:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"24922:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6425,"nodeType":"IfStatement","src":"24918:98:17","trueBody":{"id":6424,"nodeType":"Block","src":"24943:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313434","id":6420,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"24994:3:17","typeDescriptions":{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},"value":"144"},{"id":6421,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6404,"src":"24999:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_144_by_1","typeString":"int_const 144"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6419,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"24964:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24964:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6423,"nodeType":"RevertStatement","src":"24957:48:17"}]}}]},"documentation":{"id":6402,"nodeType":"StructuredDocumentation","src":"24481:312:17","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":6427,"implemented":true,"kind":"function","modifiers":[],"name":"toInt144","nameLocation":"24807:8:17","nodeType":"FunctionDefinition","parameters":{"id":6405,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6404,"mutability":"mutable","name":"value","nameLocation":"24823:5:17","nodeType":"VariableDeclaration","scope":6427,"src":"24816:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6403,"name":"int256","nodeType":"ElementaryTypeName","src":"24816:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"24815:14:17"},"returnParameters":{"id":6408,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6407,"mutability":"mutable","name":"downcasted","nameLocation":"24860:10:17","nodeType":"VariableDeclaration","scope":6427,"src":"24853:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"},"typeName":{"id":6406,"name":"int144","nodeType":"ElementaryTypeName","src":"24853:6:17","typeDescriptions":{"typeIdentifier":"t_int144","typeString":"int144"}},"visibility":"internal"}],"src":"24852:19:17"},"scope":6910,"src":"24798:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6452,"nodeType":"Block","src":"25419:150:17","statements":[{"expression":{"id":6440,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6435,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"25429:10:17","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6438,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6430,"src":"25449:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6437,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25442:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int136_$","typeString":"type(int136)"},"typeName":{"id":6436,"name":"int136","nodeType":"ElementaryTypeName","src":"25442:6:17","typeDescriptions":{}}},"id":6439,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25442:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"src":"25429:26:17","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"id":6441,"nodeType":"ExpressionStatement","src":"25429:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6444,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6442,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6433,"src":"25469:10:17","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6443,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6430,"src":"25483:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"25469:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6451,"nodeType":"IfStatement","src":"25465:98:17","trueBody":{"id":6450,"nodeType":"Block","src":"25490:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313336","id":6446,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25541:3:17","typeDescriptions":{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},"value":"136"},{"id":6447,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6430,"src":"25546:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_136_by_1","typeString":"int_const 136"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6445,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"25511:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25511:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6449,"nodeType":"RevertStatement","src":"25504:48:17"}]}}]},"documentation":{"id":6428,"nodeType":"StructuredDocumentation","src":"25028:312:17","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":6453,"implemented":true,"kind":"function","modifiers":[],"name":"toInt136","nameLocation":"25354:8:17","nodeType":"FunctionDefinition","parameters":{"id":6431,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6430,"mutability":"mutable","name":"value","nameLocation":"25370:5:17","nodeType":"VariableDeclaration","scope":6453,"src":"25363:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6429,"name":"int256","nodeType":"ElementaryTypeName","src":"25363:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25362:14:17"},"returnParameters":{"id":6434,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6433,"mutability":"mutable","name":"downcasted","nameLocation":"25407:10:17","nodeType":"VariableDeclaration","scope":6453,"src":"25400:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"},"typeName":{"id":6432,"name":"int136","nodeType":"ElementaryTypeName","src":"25400:6:17","typeDescriptions":{"typeIdentifier":"t_int136","typeString":"int136"}},"visibility":"internal"}],"src":"25399:19:17"},"scope":6910,"src":"25345:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6478,"nodeType":"Block","src":"25966:150:17","statements":[{"expression":{"id":6466,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6461,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6459,"src":"25976:10:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6464,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6456,"src":"25996:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6463,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25989:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int128_$","typeString":"type(int128)"},"typeName":{"id":6462,"name":"int128","nodeType":"ElementaryTypeName","src":"25989:6:17","typeDescriptions":{}}},"id":6465,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25989:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"src":"25976:26:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"id":6467,"nodeType":"ExpressionStatement","src":"25976:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6470,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6468,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6459,"src":"26016:10:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6469,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6456,"src":"26030:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26016:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6477,"nodeType":"IfStatement","src":"26012:98:17","trueBody":{"id":6476,"nodeType":"Block","src":"26037:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313238","id":6472,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26088:3:17","typeDescriptions":{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},"value":"128"},{"id":6473,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6456,"src":"26093:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_128_by_1","typeString":"int_const 128"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6471,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"26058:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6474,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26058:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6475,"nodeType":"RevertStatement","src":"26051:48:17"}]}}]},"documentation":{"id":6454,"nodeType":"StructuredDocumentation","src":"25575:312:17","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":6479,"implemented":true,"kind":"function","modifiers":[],"name":"toInt128","nameLocation":"25901:8:17","nodeType":"FunctionDefinition","parameters":{"id":6457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6456,"mutability":"mutable","name":"value","nameLocation":"25917:5:17","nodeType":"VariableDeclaration","scope":6479,"src":"25910:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6455,"name":"int256","nodeType":"ElementaryTypeName","src":"25910:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"25909:14:17"},"returnParameters":{"id":6460,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6459,"mutability":"mutable","name":"downcasted","nameLocation":"25954:10:17","nodeType":"VariableDeclaration","scope":6479,"src":"25947:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"},"typeName":{"id":6458,"name":"int128","nodeType":"ElementaryTypeName","src":"25947:6:17","typeDescriptions":{"typeIdentifier":"t_int128","typeString":"int128"}},"visibility":"internal"}],"src":"25946:19:17"},"scope":6910,"src":"25892:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6504,"nodeType":"Block","src":"26513:150:17","statements":[{"expression":{"id":6492,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6487,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"26523:10:17","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6490,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6482,"src":"26543:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6489,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"26536:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int120_$","typeString":"type(int120)"},"typeName":{"id":6488,"name":"int120","nodeType":"ElementaryTypeName","src":"26536:6:17","typeDescriptions":{}}},"id":6491,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26536:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"src":"26523:26:17","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"id":6493,"nodeType":"ExpressionStatement","src":"26523:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6494,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6485,"src":"26563:10:17","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6495,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6482,"src":"26577:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"26563:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6503,"nodeType":"IfStatement","src":"26559:98:17","trueBody":{"id":6502,"nodeType":"Block","src":"26584:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313230","id":6498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26635:3:17","typeDescriptions":{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},"value":"120"},{"id":6499,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6482,"src":"26640:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_120_by_1","typeString":"int_const 120"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6497,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"26605:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26605:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6501,"nodeType":"RevertStatement","src":"26598:48:17"}]}}]},"documentation":{"id":6480,"nodeType":"StructuredDocumentation","src":"26122:312:17","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":6505,"implemented":true,"kind":"function","modifiers":[],"name":"toInt120","nameLocation":"26448:8:17","nodeType":"FunctionDefinition","parameters":{"id":6483,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6482,"mutability":"mutable","name":"value","nameLocation":"26464:5:17","nodeType":"VariableDeclaration","scope":6505,"src":"26457:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6481,"name":"int256","nodeType":"ElementaryTypeName","src":"26457:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"26456:14:17"},"returnParameters":{"id":6486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6485,"mutability":"mutable","name":"downcasted","nameLocation":"26501:10:17","nodeType":"VariableDeclaration","scope":6505,"src":"26494:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"},"typeName":{"id":6484,"name":"int120","nodeType":"ElementaryTypeName","src":"26494:6:17","typeDescriptions":{"typeIdentifier":"t_int120","typeString":"int120"}},"visibility":"internal"}],"src":"26493:19:17"},"scope":6910,"src":"26439:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6530,"nodeType":"Block","src":"27060:150:17","statements":[{"expression":{"id":6518,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6513,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"27070:10:17","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6516,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6508,"src":"27090:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27083:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int112_$","typeString":"type(int112)"},"typeName":{"id":6514,"name":"int112","nodeType":"ElementaryTypeName","src":"27083:6:17","typeDescriptions":{}}},"id":6517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27083:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"src":"27070:26:17","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"id":6519,"nodeType":"ExpressionStatement","src":"27070:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6522,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6520,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6511,"src":"27110:10:17","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6521,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6508,"src":"27124:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27110:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6529,"nodeType":"IfStatement","src":"27106:98:17","trueBody":{"id":6528,"nodeType":"Block","src":"27131:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313132","id":6524,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27182:3:17","typeDescriptions":{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},"value":"112"},{"id":6525,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6508,"src":"27187:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_112_by_1","typeString":"int_const 112"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6523,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"27152:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27152:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6527,"nodeType":"RevertStatement","src":"27145:48:17"}]}}]},"documentation":{"id":6506,"nodeType":"StructuredDocumentation","src":"26669:312:17","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":6531,"implemented":true,"kind":"function","modifiers":[],"name":"toInt112","nameLocation":"26995:8:17","nodeType":"FunctionDefinition","parameters":{"id":6509,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6508,"mutability":"mutable","name":"value","nameLocation":"27011:5:17","nodeType":"VariableDeclaration","scope":6531,"src":"27004:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6507,"name":"int256","nodeType":"ElementaryTypeName","src":"27004:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27003:14:17"},"returnParameters":{"id":6512,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6511,"mutability":"mutable","name":"downcasted","nameLocation":"27048:10:17","nodeType":"VariableDeclaration","scope":6531,"src":"27041:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"},"typeName":{"id":6510,"name":"int112","nodeType":"ElementaryTypeName","src":"27041:6:17","typeDescriptions":{"typeIdentifier":"t_int112","typeString":"int112"}},"visibility":"internal"}],"src":"27040:19:17"},"scope":6910,"src":"26986:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6556,"nodeType":"Block","src":"27607:150:17","statements":[{"expression":{"id":6544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6539,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"27617:10:17","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6542,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"27637:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6541,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"27630:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int104_$","typeString":"type(int104)"},"typeName":{"id":6540,"name":"int104","nodeType":"ElementaryTypeName","src":"27630:6:17","typeDescriptions":{}}},"id":6543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27630:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"src":"27617:26:17","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"id":6545,"nodeType":"ExpressionStatement","src":"27617:26:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6546,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6537,"src":"27657:10:17","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6547,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"27671:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"27657:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6555,"nodeType":"IfStatement","src":"27653:98:17","trueBody":{"id":6554,"nodeType":"Block","src":"27678:73:17","statements":[{"errorCall":{"arguments":[{"hexValue":"313034","id":6550,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27729:3:17","typeDescriptions":{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},"value":"104"},{"id":6551,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6534,"src":"27734:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_104_by_1","typeString":"int_const 104"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6549,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"27699:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6552,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27699:41:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6553,"nodeType":"RevertStatement","src":"27692:48:17"}]}}]},"documentation":{"id":6532,"nodeType":"StructuredDocumentation","src":"27216:312:17","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":6557,"implemented":true,"kind":"function","modifiers":[],"name":"toInt104","nameLocation":"27542:8:17","nodeType":"FunctionDefinition","parameters":{"id":6535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6534,"mutability":"mutable","name":"value","nameLocation":"27558:5:17","nodeType":"VariableDeclaration","scope":6557,"src":"27551:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6533,"name":"int256","nodeType":"ElementaryTypeName","src":"27551:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"27550:14:17"},"returnParameters":{"id":6538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6537,"mutability":"mutable","name":"downcasted","nameLocation":"27595:10:17","nodeType":"VariableDeclaration","scope":6557,"src":"27588:17:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"},"typeName":{"id":6536,"name":"int104","nodeType":"ElementaryTypeName","src":"27588:6:17","typeDescriptions":{"typeIdentifier":"t_int104","typeString":"int104"}},"visibility":"internal"}],"src":"27587:19:17"},"scope":6910,"src":"27533:224:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6582,"nodeType":"Block","src":"28147:148:17","statements":[{"expression":{"id":6570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6565,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6563,"src":"28157:10:17","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6568,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"28176:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28170:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int96_$","typeString":"type(int96)"},"typeName":{"id":6566,"name":"int96","nodeType":"ElementaryTypeName","src":"28170:5:17","typeDescriptions":{}}},"id":6569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28170:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"src":"28157:25:17","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"id":6571,"nodeType":"ExpressionStatement","src":"28157:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6574,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6572,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6563,"src":"28196:10:17","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6573,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"28210:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28196:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6581,"nodeType":"IfStatement","src":"28192:97:17","trueBody":{"id":6580,"nodeType":"Block","src":"28217:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3936","id":6576,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28268:2:17","typeDescriptions":{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},"value":"96"},{"id":6577,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6560,"src":"28272:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_96_by_1","typeString":"int_const 96"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6575,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"28238:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6578,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28238:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6579,"nodeType":"RevertStatement","src":"28231:47:17"}]}}]},"documentation":{"id":6558,"nodeType":"StructuredDocumentation","src":"27763:307:17","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":6583,"implemented":true,"kind":"function","modifiers":[],"name":"toInt96","nameLocation":"28084:7:17","nodeType":"FunctionDefinition","parameters":{"id":6561,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6560,"mutability":"mutable","name":"value","nameLocation":"28099:5:17","nodeType":"VariableDeclaration","scope":6583,"src":"28092:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6559,"name":"int256","nodeType":"ElementaryTypeName","src":"28092:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28091:14:17"},"returnParameters":{"id":6564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6563,"mutability":"mutable","name":"downcasted","nameLocation":"28135:10:17","nodeType":"VariableDeclaration","scope":6583,"src":"28129:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"},"typeName":{"id":6562,"name":"int96","nodeType":"ElementaryTypeName","src":"28129:5:17","typeDescriptions":{"typeIdentifier":"t_int96","typeString":"int96"}},"visibility":"internal"}],"src":"28128:18:17"},"scope":6910,"src":"28075:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6608,"nodeType":"Block","src":"28685:148:17","statements":[{"expression":{"id":6596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6591,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"28695:10:17","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6594,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"28714:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6593,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"28708:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int88_$","typeString":"type(int88)"},"typeName":{"id":6592,"name":"int88","nodeType":"ElementaryTypeName","src":"28708:5:17","typeDescriptions":{}}},"id":6595,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28708:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"src":"28695:25:17","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"id":6597,"nodeType":"ExpressionStatement","src":"28695:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6600,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6598,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6589,"src":"28734:10:17","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6599,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"28748:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"28734:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6607,"nodeType":"IfStatement","src":"28730:97:17","trueBody":{"id":6606,"nodeType":"Block","src":"28755:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3838","id":6602,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28806:2:17","typeDescriptions":{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},"value":"88"},{"id":6603,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6586,"src":"28810:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_88_by_1","typeString":"int_const 88"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6601,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"28776:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28776:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6605,"nodeType":"RevertStatement","src":"28769:47:17"}]}}]},"documentation":{"id":6584,"nodeType":"StructuredDocumentation","src":"28301:307:17","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":6609,"implemented":true,"kind":"function","modifiers":[],"name":"toInt88","nameLocation":"28622:7:17","nodeType":"FunctionDefinition","parameters":{"id":6587,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6586,"mutability":"mutable","name":"value","nameLocation":"28637:5:17","nodeType":"VariableDeclaration","scope":6609,"src":"28630:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6585,"name":"int256","nodeType":"ElementaryTypeName","src":"28630:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"28629:14:17"},"returnParameters":{"id":6590,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6589,"mutability":"mutable","name":"downcasted","nameLocation":"28673:10:17","nodeType":"VariableDeclaration","scope":6609,"src":"28667:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"},"typeName":{"id":6588,"name":"int88","nodeType":"ElementaryTypeName","src":"28667:5:17","typeDescriptions":{"typeIdentifier":"t_int88","typeString":"int88"}},"visibility":"internal"}],"src":"28666:18:17"},"scope":6910,"src":"28613:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6634,"nodeType":"Block","src":"29223:148:17","statements":[{"expression":{"id":6622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6617,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6615,"src":"29233:10:17","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6620,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"29252:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6619,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29246:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int80_$","typeString":"type(int80)"},"typeName":{"id":6618,"name":"int80","nodeType":"ElementaryTypeName","src":"29246:5:17","typeDescriptions":{}}},"id":6621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29246:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"src":"29233:25:17","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"id":6623,"nodeType":"ExpressionStatement","src":"29233:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6626,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6624,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6615,"src":"29272:10:17","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6625,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"29286:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29272:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6633,"nodeType":"IfStatement","src":"29268:97:17","trueBody":{"id":6632,"nodeType":"Block","src":"29293:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3830","id":6628,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29344:2:17","typeDescriptions":{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},"value":"80"},{"id":6629,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6612,"src":"29348:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_80_by_1","typeString":"int_const 80"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6627,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"29314:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6630,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29314:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6631,"nodeType":"RevertStatement","src":"29307:47:17"}]}}]},"documentation":{"id":6610,"nodeType":"StructuredDocumentation","src":"28839:307:17","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":6635,"implemented":true,"kind":"function","modifiers":[],"name":"toInt80","nameLocation":"29160:7:17","nodeType":"FunctionDefinition","parameters":{"id":6613,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6612,"mutability":"mutable","name":"value","nameLocation":"29175:5:17","nodeType":"VariableDeclaration","scope":6635,"src":"29168:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6611,"name":"int256","nodeType":"ElementaryTypeName","src":"29168:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29167:14:17"},"returnParameters":{"id":6616,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6615,"mutability":"mutable","name":"downcasted","nameLocation":"29211:10:17","nodeType":"VariableDeclaration","scope":6635,"src":"29205:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"},"typeName":{"id":6614,"name":"int80","nodeType":"ElementaryTypeName","src":"29205:5:17","typeDescriptions":{"typeIdentifier":"t_int80","typeString":"int80"}},"visibility":"internal"}],"src":"29204:18:17"},"scope":6910,"src":"29151:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6660,"nodeType":"Block","src":"29761:148:17","statements":[{"expression":{"id":6648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6643,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6641,"src":"29771:10:17","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6646,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6638,"src":"29790:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6645,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"29784:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int72_$","typeString":"type(int72)"},"typeName":{"id":6644,"name":"int72","nodeType":"ElementaryTypeName","src":"29784:5:17","typeDescriptions":{}}},"id":6647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29784:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"src":"29771:25:17","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"id":6649,"nodeType":"ExpressionStatement","src":"29771:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6650,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6641,"src":"29810:10:17","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6651,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6638,"src":"29824:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"29810:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6659,"nodeType":"IfStatement","src":"29806:97:17","trueBody":{"id":6658,"nodeType":"Block","src":"29831:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3732","id":6654,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"29882:2:17","typeDescriptions":{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},"value":"72"},{"id":6655,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6638,"src":"29886:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_72_by_1","typeString":"int_const 72"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6653,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"29852:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6656,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29852:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6657,"nodeType":"RevertStatement","src":"29845:47:17"}]}}]},"documentation":{"id":6636,"nodeType":"StructuredDocumentation","src":"29377:307:17","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":6661,"implemented":true,"kind":"function","modifiers":[],"name":"toInt72","nameLocation":"29698:7:17","nodeType":"FunctionDefinition","parameters":{"id":6639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6638,"mutability":"mutable","name":"value","nameLocation":"29713:5:17","nodeType":"VariableDeclaration","scope":6661,"src":"29706:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6637,"name":"int256","nodeType":"ElementaryTypeName","src":"29706:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"29705:14:17"},"returnParameters":{"id":6642,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6641,"mutability":"mutable","name":"downcasted","nameLocation":"29749:10:17","nodeType":"VariableDeclaration","scope":6661,"src":"29743:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"},"typeName":{"id":6640,"name":"int72","nodeType":"ElementaryTypeName","src":"29743:5:17","typeDescriptions":{"typeIdentifier":"t_int72","typeString":"int72"}},"visibility":"internal"}],"src":"29742:18:17"},"scope":6910,"src":"29689:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6686,"nodeType":"Block","src":"30299:148:17","statements":[{"expression":{"id":6674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6669,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"30309:10:17","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6672,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6664,"src":"30328:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6671,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30322:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int64_$","typeString":"type(int64)"},"typeName":{"id":6670,"name":"int64","nodeType":"ElementaryTypeName","src":"30322:5:17","typeDescriptions":{}}},"id":6673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30322:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"src":"30309:25:17","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"id":6675,"nodeType":"ExpressionStatement","src":"30309:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6676,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6667,"src":"30348:10:17","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6677,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6664,"src":"30362:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30348:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6685,"nodeType":"IfStatement","src":"30344:97:17","trueBody":{"id":6684,"nodeType":"Block","src":"30369:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3634","id":6680,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30420:2:17","typeDescriptions":{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},"value":"64"},{"id":6681,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6664,"src":"30424:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6679,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"30390:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6682,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30390:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6683,"nodeType":"RevertStatement","src":"30383:47:17"}]}}]},"documentation":{"id":6662,"nodeType":"StructuredDocumentation","src":"29915:307:17","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":6687,"implemented":true,"kind":"function","modifiers":[],"name":"toInt64","nameLocation":"30236:7:17","nodeType":"FunctionDefinition","parameters":{"id":6665,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6664,"mutability":"mutable","name":"value","nameLocation":"30251:5:17","nodeType":"VariableDeclaration","scope":6687,"src":"30244:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6663,"name":"int256","nodeType":"ElementaryTypeName","src":"30244:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30243:14:17"},"returnParameters":{"id":6668,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6667,"mutability":"mutable","name":"downcasted","nameLocation":"30287:10:17","nodeType":"VariableDeclaration","scope":6687,"src":"30281:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"},"typeName":{"id":6666,"name":"int64","nodeType":"ElementaryTypeName","src":"30281:5:17","typeDescriptions":{"typeIdentifier":"t_int64","typeString":"int64"}},"visibility":"internal"}],"src":"30280:18:17"},"scope":6910,"src":"30227:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6712,"nodeType":"Block","src":"30837:148:17","statements":[{"expression":{"id":6700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6695,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"30847:10:17","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6698,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6690,"src":"30866:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"30860:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int56_$","typeString":"type(int56)"},"typeName":{"id":6696,"name":"int56","nodeType":"ElementaryTypeName","src":"30860:5:17","typeDescriptions":{}}},"id":6699,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30860:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"src":"30847:25:17","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"id":6701,"nodeType":"ExpressionStatement","src":"30847:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6704,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6702,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6693,"src":"30886:10:17","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6703,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6690,"src":"30900:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"30886:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6711,"nodeType":"IfStatement","src":"30882:97:17","trueBody":{"id":6710,"nodeType":"Block","src":"30907:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3536","id":6706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"30958:2:17","typeDescriptions":{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},"value":"56"},{"id":6707,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6690,"src":"30962:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_56_by_1","typeString":"int_const 56"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6705,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"30928:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30928:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6709,"nodeType":"RevertStatement","src":"30921:47:17"}]}}]},"documentation":{"id":6688,"nodeType":"StructuredDocumentation","src":"30453:307:17","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":6713,"implemented":true,"kind":"function","modifiers":[],"name":"toInt56","nameLocation":"30774:7:17","nodeType":"FunctionDefinition","parameters":{"id":6691,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6690,"mutability":"mutable","name":"value","nameLocation":"30789:5:17","nodeType":"VariableDeclaration","scope":6713,"src":"30782:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6689,"name":"int256","nodeType":"ElementaryTypeName","src":"30782:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"30781:14:17"},"returnParameters":{"id":6694,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6693,"mutability":"mutable","name":"downcasted","nameLocation":"30825:10:17","nodeType":"VariableDeclaration","scope":6713,"src":"30819:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"},"typeName":{"id":6692,"name":"int56","nodeType":"ElementaryTypeName","src":"30819:5:17","typeDescriptions":{"typeIdentifier":"t_int56","typeString":"int56"}},"visibility":"internal"}],"src":"30818:18:17"},"scope":6910,"src":"30765:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6738,"nodeType":"Block","src":"31375:148:17","statements":[{"expression":{"id":6726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6721,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6719,"src":"31385:10:17","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6724,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6716,"src":"31404:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6723,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31398:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int48_$","typeString":"type(int48)"},"typeName":{"id":6722,"name":"int48","nodeType":"ElementaryTypeName","src":"31398:5:17","typeDescriptions":{}}},"id":6725,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31398:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"src":"31385:25:17","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"id":6727,"nodeType":"ExpressionStatement","src":"31385:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6728,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6719,"src":"31424:10:17","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6729,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6716,"src":"31438:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31424:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6737,"nodeType":"IfStatement","src":"31420:97:17","trueBody":{"id":6736,"nodeType":"Block","src":"31445:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3438","id":6732,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31496:2:17","typeDescriptions":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"value":"48"},{"id":6733,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6716,"src":"31500:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6731,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"31466:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31466:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6735,"nodeType":"RevertStatement","src":"31459:47:17"}]}}]},"documentation":{"id":6714,"nodeType":"StructuredDocumentation","src":"30991:307:17","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":6739,"implemented":true,"kind":"function","modifiers":[],"name":"toInt48","nameLocation":"31312:7:17","nodeType":"FunctionDefinition","parameters":{"id":6717,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6716,"mutability":"mutable","name":"value","nameLocation":"31327:5:17","nodeType":"VariableDeclaration","scope":6739,"src":"31320:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6715,"name":"int256","nodeType":"ElementaryTypeName","src":"31320:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31319:14:17"},"returnParameters":{"id":6720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6719,"mutability":"mutable","name":"downcasted","nameLocation":"31363:10:17","nodeType":"VariableDeclaration","scope":6739,"src":"31357:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"},"typeName":{"id":6718,"name":"int48","nodeType":"ElementaryTypeName","src":"31357:5:17","typeDescriptions":{"typeIdentifier":"t_int48","typeString":"int48"}},"visibility":"internal"}],"src":"31356:18:17"},"scope":6910,"src":"31303:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6764,"nodeType":"Block","src":"31913:148:17","statements":[{"expression":{"id":6752,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6747,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6745,"src":"31923:10:17","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6750,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"31942:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6749,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31936:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int40_$","typeString":"type(int40)"},"typeName":{"id":6748,"name":"int40","nodeType":"ElementaryTypeName","src":"31936:5:17","typeDescriptions":{}}},"id":6751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31936:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"src":"31923:25:17","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"id":6753,"nodeType":"ExpressionStatement","src":"31923:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6754,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6745,"src":"31962:10:17","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6755,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"31976:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"31962:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6763,"nodeType":"IfStatement","src":"31958:97:17","trueBody":{"id":6762,"nodeType":"Block","src":"31983:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3430","id":6758,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32034:2:17","typeDescriptions":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"value":"40"},{"id":6759,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6742,"src":"32038:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6757,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"32004:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6760,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32004:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6761,"nodeType":"RevertStatement","src":"31997:47:17"}]}}]},"documentation":{"id":6740,"nodeType":"StructuredDocumentation","src":"31529:307:17","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":6765,"implemented":true,"kind":"function","modifiers":[],"name":"toInt40","nameLocation":"31850:7:17","nodeType":"FunctionDefinition","parameters":{"id":6743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6742,"mutability":"mutable","name":"value","nameLocation":"31865:5:17","nodeType":"VariableDeclaration","scope":6765,"src":"31858:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6741,"name":"int256","nodeType":"ElementaryTypeName","src":"31858:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"31857:14:17"},"returnParameters":{"id":6746,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6745,"mutability":"mutable","name":"downcasted","nameLocation":"31901:10:17","nodeType":"VariableDeclaration","scope":6765,"src":"31895:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"},"typeName":{"id":6744,"name":"int40","nodeType":"ElementaryTypeName","src":"31895:5:17","typeDescriptions":{"typeIdentifier":"t_int40","typeString":"int40"}},"visibility":"internal"}],"src":"31894:18:17"},"scope":6910,"src":"31841:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6790,"nodeType":"Block","src":"32451:148:17","statements":[{"expression":{"id":6778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6773,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"32461:10:17","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6776,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"32480:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6775,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32474:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int32_$","typeString":"type(int32)"},"typeName":{"id":6774,"name":"int32","nodeType":"ElementaryTypeName","src":"32474:5:17","typeDescriptions":{}}},"id":6777,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32474:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"src":"32461:25:17","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"id":6779,"nodeType":"ExpressionStatement","src":"32461:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6780,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6771,"src":"32500:10:17","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6781,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"32514:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"32500:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6789,"nodeType":"IfStatement","src":"32496:97:17","trueBody":{"id":6788,"nodeType":"Block","src":"32521:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3332","id":6784,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"32572:2:17","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"32"},{"id":6785,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6768,"src":"32576:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6783,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"32542:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6786,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32542:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6787,"nodeType":"RevertStatement","src":"32535:47:17"}]}}]},"documentation":{"id":6766,"nodeType":"StructuredDocumentation","src":"32067:307:17","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":6791,"implemented":true,"kind":"function","modifiers":[],"name":"toInt32","nameLocation":"32388:7:17","nodeType":"FunctionDefinition","parameters":{"id":6769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6768,"mutability":"mutable","name":"value","nameLocation":"32403:5:17","nodeType":"VariableDeclaration","scope":6791,"src":"32396:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6767,"name":"int256","nodeType":"ElementaryTypeName","src":"32396:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32395:14:17"},"returnParameters":{"id":6772,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6771,"mutability":"mutable","name":"downcasted","nameLocation":"32439:10:17","nodeType":"VariableDeclaration","scope":6791,"src":"32433:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"},"typeName":{"id":6770,"name":"int32","nodeType":"ElementaryTypeName","src":"32433:5:17","typeDescriptions":{"typeIdentifier":"t_int32","typeString":"int32"}},"visibility":"internal"}],"src":"32432:18:17"},"scope":6910,"src":"32379:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6816,"nodeType":"Block","src":"32989:148:17","statements":[{"expression":{"id":6804,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6799,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"32999:10:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6802,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6794,"src":"33018:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6801,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33012:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int24_$","typeString":"type(int24)"},"typeName":{"id":6800,"name":"int24","nodeType":"ElementaryTypeName","src":"33012:5:17","typeDescriptions":{}}},"id":6803,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33012:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"src":"32999:25:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"id":6805,"nodeType":"ExpressionStatement","src":"32999:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6806,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6797,"src":"33038:10:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6807,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6794,"src":"33052:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33038:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6815,"nodeType":"IfStatement","src":"33034:97:17","trueBody":{"id":6814,"nodeType":"Block","src":"33059:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3234","id":6810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33110:2:17","typeDescriptions":{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},"value":"24"},{"id":6811,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6794,"src":"33114:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6809,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"33080:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33080:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6813,"nodeType":"RevertStatement","src":"33073:47:17"}]}}]},"documentation":{"id":6792,"nodeType":"StructuredDocumentation","src":"32605:307:17","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":6817,"implemented":true,"kind":"function","modifiers":[],"name":"toInt24","nameLocation":"32926:7:17","nodeType":"FunctionDefinition","parameters":{"id":6795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6794,"mutability":"mutable","name":"value","nameLocation":"32941:5:17","nodeType":"VariableDeclaration","scope":6817,"src":"32934:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6793,"name":"int256","nodeType":"ElementaryTypeName","src":"32934:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"32933:14:17"},"returnParameters":{"id":6798,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6797,"mutability":"mutable","name":"downcasted","nameLocation":"32977:10:17","nodeType":"VariableDeclaration","scope":6817,"src":"32971:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"},"typeName":{"id":6796,"name":"int24","nodeType":"ElementaryTypeName","src":"32971:5:17","typeDescriptions":{"typeIdentifier":"t_int24","typeString":"int24"}},"visibility":"internal"}],"src":"32970:18:17"},"scope":6910,"src":"32917:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6842,"nodeType":"Block","src":"33527:148:17","statements":[{"expression":{"id":6830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6825,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6823,"src":"33537:10:17","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6828,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6820,"src":"33556:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"33550:5:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int16_$","typeString":"type(int16)"},"typeName":{"id":6826,"name":"int16","nodeType":"ElementaryTypeName","src":"33550:5:17","typeDescriptions":{}}},"id":6829,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33550:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"src":"33537:25:17","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"id":6831,"nodeType":"ExpressionStatement","src":"33537:25:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6832,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6823,"src":"33576:10:17","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6833,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6820,"src":"33590:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"33576:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6841,"nodeType":"IfStatement","src":"33572:97:17","trueBody":{"id":6840,"nodeType":"Block","src":"33597:72:17","statements":[{"errorCall":{"arguments":[{"hexValue":"3136","id":6836,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33648:2:17","typeDescriptions":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"value":"16"},{"id":6837,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6820,"src":"33652:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6835,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"33618:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33618:40:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6839,"nodeType":"RevertStatement","src":"33611:47:17"}]}}]},"documentation":{"id":6818,"nodeType":"StructuredDocumentation","src":"33143:307:17","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":6843,"implemented":true,"kind":"function","modifiers":[],"name":"toInt16","nameLocation":"33464:7:17","nodeType":"FunctionDefinition","parameters":{"id":6821,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6820,"mutability":"mutable","name":"value","nameLocation":"33479:5:17","nodeType":"VariableDeclaration","scope":6843,"src":"33472:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6819,"name":"int256","nodeType":"ElementaryTypeName","src":"33472:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"33471:14:17"},"returnParameters":{"id":6824,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6823,"mutability":"mutable","name":"downcasted","nameLocation":"33515:10:17","nodeType":"VariableDeclaration","scope":6843,"src":"33509:16:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"},"typeName":{"id":6822,"name":"int16","nodeType":"ElementaryTypeName","src":"33509:5:17","typeDescriptions":{"typeIdentifier":"t_int16","typeString":"int16"}},"visibility":"internal"}],"src":"33508:18:17"},"scope":6910,"src":"33455:220:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6868,"nodeType":"Block","src":"34058:146:17","statements":[{"expression":{"id":6856,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":6851,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"34068:10:17","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":6854,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"34086:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6853,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34081:4:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int8_$","typeString":"type(int8)"},"typeName":{"id":6852,"name":"int8","nodeType":"ElementaryTypeName","src":"34081:4:17","typeDescriptions":{}}},"id":6855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34081:11:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"src":"34068:24:17","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"id":6857,"nodeType":"ExpressionStatement","src":"34068:24:17"},{"condition":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6860,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6858,"name":"downcasted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6849,"src":"34106:10:17","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":6859,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"34120:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"34106:19:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6867,"nodeType":"IfStatement","src":"34102:96:17","trueBody":{"id":6866,"nodeType":"Block","src":"34127:71:17","statements":[{"errorCall":{"arguments":[{"hexValue":"38","id":6862,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34178:1:17","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},{"id":6863,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6846,"src":"34181:5:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6861,"name":"SafeCastOverflowedIntDowncast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5167,"src":"34148:29:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_int256_$returns$_t_error_$","typeString":"function (uint8,int256) pure returns (error)"}},"id":6864,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34148:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6865,"nodeType":"RevertStatement","src":"34141:46:17"}]}}]},"documentation":{"id":6844,"nodeType":"StructuredDocumentation","src":"33681:302:17","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":6869,"implemented":true,"kind":"function","modifiers":[],"name":"toInt8","nameLocation":"33997:6:17","nodeType":"FunctionDefinition","parameters":{"id":6847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6846,"mutability":"mutable","name":"value","nameLocation":"34011:5:17","nodeType":"VariableDeclaration","scope":6869,"src":"34004:12:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6845,"name":"int256","nodeType":"ElementaryTypeName","src":"34004:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34003:14:17"},"returnParameters":{"id":6850,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6849,"mutability":"mutable","name":"downcasted","nameLocation":"34046:10:17","nodeType":"VariableDeclaration","scope":6869,"src":"34041:15:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"},"typeName":{"id":6848,"name":"int8","nodeType":"ElementaryTypeName","src":"34041:4:17","typeDescriptions":{"typeIdentifier":"t_int8","typeString":"int8"}},"visibility":"internal"}],"src":"34040:17:17"},"scope":6910,"src":"33988:216:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6898,"nodeType":"Block","src":"34444:250:17","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":6886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6877,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"34557:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"expression":{"arguments":[{"id":6882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34578:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6881,"name":"int256","nodeType":"ElementaryTypeName","src":"34578:6:17","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"}],"id":6880,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"34573:4:17","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":6883,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34573:12:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_int256","typeString":"type(int256)"}},"id":6884,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"34586:3:17","memberName":"max","nodeType":"MemberAccess","src":"34573:16:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6879,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34565:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":6878,"name":"uint256","nodeType":"ElementaryTypeName","src":"34565:7:17","typeDescriptions":{}}},"id":6885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34565:25:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"34557:33:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":6892,"nodeType":"IfStatement","src":"34553:105:17","trueBody":{"id":6891,"nodeType":"Block","src":"34592:66:17","statements":[{"errorCall":{"arguments":[{"id":6888,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"34641:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6887,"name":"SafeCastOverflowedUintToInt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":5172,"src":"34613:27:17","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":6889,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34613:34:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":6890,"nodeType":"RevertStatement","src":"34606:41:17"}]}},{"expression":{"arguments":[{"id":6895,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6872,"src":"34681:5:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6894,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34674:6:17","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6893,"name":"int256","nodeType":"ElementaryTypeName","src":"34674:6:17","typeDescriptions":{}}},"id":6896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34674:13:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6876,"id":6897,"nodeType":"Return","src":"34667:20:17"}]},"documentation":{"id":6870,"nodeType":"StructuredDocumentation","src":"34210:165:17","text":" @dev Converts an unsigned uint256 into a signed int256.\n Requirements:\n - input must be less than or equal to maxInt256."},"id":6899,"implemented":true,"kind":"function","modifiers":[],"name":"toInt256","nameLocation":"34389:8:17","nodeType":"FunctionDefinition","parameters":{"id":6873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6872,"mutability":"mutable","name":"value","nameLocation":"34406:5:17","nodeType":"VariableDeclaration","scope":6899,"src":"34398:13:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6871,"name":"uint256","nodeType":"ElementaryTypeName","src":"34398:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34397:15:17"},"returnParameters":{"id":6876,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6875,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6899,"src":"34436:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6874,"name":"int256","nodeType":"ElementaryTypeName","src":"34436:6:17","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"34435:8:17"},"scope":6910,"src":"34380:314:17","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6908,"nodeType":"Block","src":"34853:87:17","statements":[{"AST":{"nativeSrc":"34888:46:17","nodeType":"YulBlock","src":"34888:46:17","statements":[{"nativeSrc":"34902:22:17","nodeType":"YulAssignment","src":"34902:22:17","value":{"arguments":[{"arguments":[{"name":"b","nativeSrc":"34921:1:17","nodeType":"YulIdentifier","src":"34921:1:17"}],"functionName":{"name":"iszero","nativeSrc":"34914:6:17","nodeType":"YulIdentifier","src":"34914:6:17"},"nativeSrc":"34914:9:17","nodeType":"YulFunctionCall","src":"34914:9:17"}],"functionName":{"name":"iszero","nativeSrc":"34907:6:17","nodeType":"YulIdentifier","src":"34907:6:17"},"nativeSrc":"34907:17:17","nodeType":"YulFunctionCall","src":"34907:17:17"},"variableNames":[{"name":"u","nativeSrc":"34902:1:17","nodeType":"YulIdentifier","src":"34902:1:17"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":6902,"isOffset":false,"isSlot":false,"src":"34921:1:17","valueSize":1},{"declaration":6905,"isOffset":false,"isSlot":false,"src":"34902:1:17","valueSize":1}],"flags":["memory-safe"],"id":6907,"nodeType":"InlineAssembly","src":"34863:71:17"}]},"documentation":{"id":6900,"nodeType":"StructuredDocumentation","src":"34700:90:17","text":" @dev Cast a boolean (false or true) to a uint256 (0 or 1) with no jump."},"id":6909,"implemented":true,"kind":"function","modifiers":[],"name":"toUint","nameLocation":"34804:6:17","nodeType":"FunctionDefinition","parameters":{"id":6903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6902,"mutability":"mutable","name":"b","nameLocation":"34816:1:17","nodeType":"VariableDeclaration","scope":6909,"src":"34811:6:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6901,"name":"bool","nodeType":"ElementaryTypeName","src":"34811:4:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34810:8:17"},"returnParameters":{"id":6906,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6905,"mutability":"mutable","name":"u","nameLocation":"34850:1:17","nodeType":"VariableDeclaration","scope":6909,"src":"34842:9:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":6904,"name":"uint256","nodeType":"ElementaryTypeName","src":"34842:7:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34841:11:17"},"scope":6910,"src":"34795:145:17","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":6911,"src":"769:34173:17","usedErrors":[5155,5160,5167,5172],"usedEvents":[]}],"src":"192:34751:17"},"id":17},"@openzeppelin/contracts/utils/math/SignedMath.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/math/SignedMath.sol","exportedSymbols":{"SafeCast":[6910],"SignedMath":[7054]},"id":7055,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":6912,"literals":["solidity","^","0.8",".20"],"nodeType":"PragmaDirective","src":"109:24:18"},{"absolutePath":"@openzeppelin/contracts/utils/math/SafeCast.sol","file":"./SafeCast.sol","id":6914,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7055,"sourceUnit":6911,"src":"135:40:18","symbolAliases":[{"foreign":{"id":6913,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"143:8:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"SignedMath","contractDependencies":[],"contractKind":"library","documentation":{"id":6915,"nodeType":"StructuredDocumentation","src":"177:80:18","text":" @dev Standard signed math utilities missing in the Solidity language."},"fullyImplemented":true,"id":7054,"linearizedBaseContracts":[7054],"name":"SignedMath","nameLocation":"266:10:18","nodeType":"ContractDefinition","nodes":[{"body":{"id":6944,"nodeType":"Block","src":"746:215:18","statements":[{"id":6943,"nodeType":"UncheckedBlock","src":"756:199:18","statements":[{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6927,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"894:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6939,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6928,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6920,"src":"900:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":6929,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6922,"src":"904:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"900:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6931,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"899:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"arguments":[{"id":6936,"name":"condition","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6918,"src":"932:9:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"expression":{"id":6934,"name":"SafeCast","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6910,"src":"916:8:18","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCast_$6910_$","typeString":"type(library SafeCast)"}},"id":6935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"925:6:18","memberName":"toUint","nodeType":"MemberAccess","referencedDeclaration":6909,"src":"916:15:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$returns$_t_uint256_$","typeString":"function (bool) pure returns (uint256)"}},"id":6937,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"916:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":6933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"909:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":6932,"name":"int256","nodeType":"ElementaryTypeName","src":"909:6:18","typeDescriptions":{}}},"id":6938,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"909:34:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"899:44:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6940,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"898:46:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"894:50:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6926,"id":6942,"nodeType":"Return","src":"887:57:18"}]}]},"documentation":{"id":6916,"nodeType":"StructuredDocumentation","src":"283: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":6945,"implemented":true,"kind":"function","modifiers":[],"name":"ternary","nameLocation":"671:7:18","nodeType":"FunctionDefinition","parameters":{"id":6923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6918,"mutability":"mutable","name":"condition","nameLocation":"684:9:18","nodeType":"VariableDeclaration","scope":6945,"src":"679:14:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":6917,"name":"bool","nodeType":"ElementaryTypeName","src":"679:4:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":6920,"mutability":"mutable","name":"a","nameLocation":"702:1:18","nodeType":"VariableDeclaration","scope":6945,"src":"695:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6919,"name":"int256","nodeType":"ElementaryTypeName","src":"695:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6922,"mutability":"mutable","name":"b","nameLocation":"712:1:18","nodeType":"VariableDeclaration","scope":6945,"src":"705:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6921,"name":"int256","nodeType":"ElementaryTypeName","src":"705:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"678:36:18"},"returnParameters":{"id":6926,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6925,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6945,"src":"738:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6924,"name":"int256","nodeType":"ElementaryTypeName","src":"738:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"737:8:18"},"scope":7054,"src":"662:299:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6963,"nodeType":"Block","src":"1102:44:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6958,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6956,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6948,"src":"1127:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":6957,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6950,"src":"1131:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1127:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6959,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6948,"src":"1134:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6960,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6950,"src":"1137:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6955,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"1119:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":6961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1119:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6954,"id":6962,"nodeType":"Return","src":"1112:27:18"}]},"documentation":{"id":6946,"nodeType":"StructuredDocumentation","src":"967:66:18","text":" @dev Returns the largest of two signed numbers."},"id":6964,"implemented":true,"kind":"function","modifiers":[],"name":"max","nameLocation":"1047:3:18","nodeType":"FunctionDefinition","parameters":{"id":6951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6948,"mutability":"mutable","name":"a","nameLocation":"1058:1:18","nodeType":"VariableDeclaration","scope":6964,"src":"1051:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6947,"name":"int256","nodeType":"ElementaryTypeName","src":"1051:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6950,"mutability":"mutable","name":"b","nameLocation":"1068:1:18","nodeType":"VariableDeclaration","scope":6964,"src":"1061:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6949,"name":"int256","nodeType":"ElementaryTypeName","src":"1061:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1050:20:18"},"returnParameters":{"id":6954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6964,"src":"1094:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6952,"name":"int256","nodeType":"ElementaryTypeName","src":"1094:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1093:8:18"},"scope":7054,"src":"1038:108:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":6982,"nodeType":"Block","src":"1288:44:18","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6975,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6967,"src":"1313:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":6976,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"1317:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1313:5:18","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":6978,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6967,"src":"1320:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},{"id":6979,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6969,"src":"1323:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_int256","typeString":"int256"},{"typeIdentifier":"t_int256","typeString":"int256"}],"id":6974,"name":"ternary","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6945,"src":"1305:7:18","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bool_$_t_int256_$_t_int256_$returns$_t_int256_$","typeString":"function (bool,int256,int256) pure returns (int256)"}},"id":6980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:20:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6973,"id":6981,"nodeType":"Return","src":"1298:27:18"}]},"documentation":{"id":6965,"nodeType":"StructuredDocumentation","src":"1152:67:18","text":" @dev Returns the smallest of two signed numbers."},"id":6983,"implemented":true,"kind":"function","modifiers":[],"name":"min","nameLocation":"1233:3:18","nodeType":"FunctionDefinition","parameters":{"id":6970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6967,"mutability":"mutable","name":"a","nameLocation":"1244:1:18","nodeType":"VariableDeclaration","scope":6983,"src":"1237:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6966,"name":"int256","nodeType":"ElementaryTypeName","src":"1237:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6969,"mutability":"mutable","name":"b","nameLocation":"1254:1:18","nodeType":"VariableDeclaration","scope":6983,"src":"1247:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6968,"name":"int256","nodeType":"ElementaryTypeName","src":"1247:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1236:20:18"},"returnParameters":{"id":6973,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6972,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":6983,"src":"1280:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6971,"name":"int256","nodeType":"ElementaryTypeName","src":"1280:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1279:8:18"},"scope":7054,"src":"1224:108:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7026,"nodeType":"Block","src":"1537:162:18","statements":[{"assignments":[6994],"declarations":[{"constant":false,"id":6994,"mutability":"mutable","name":"x","nameLocation":"1606:1:18","nodeType":"VariableDeclaration","scope":7026,"src":"1599:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6993,"name":"int256","nodeType":"ElementaryTypeName","src":"1599:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7007,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7006,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":6997,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6995,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"1611:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"id":6996,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"1615:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1611:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":6998,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1610:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7004,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":6999,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"1622:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":7000,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"1626:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1622:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7002,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1621:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"31","id":7003,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1632:1:18","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1621:12:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7005,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1620:14:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1610:24:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"1599:35:18"},{"expression":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7008,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"1651:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":7016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":7013,"name":"x","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6994,"src":"1671:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7012,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1663:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7011,"name":"uint256","nodeType":"ElementaryTypeName","src":"1663:7:18","typeDescriptions":{}}},"id":7014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1663:10:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":7015,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1677:3:18","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"1663:17:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7010,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1656:6:18","typeDescriptions":{"typeIdentifier":"t_type$_t_int256_$","typeString":"type(int256)"},"typeName":{"id":7009,"name":"int256","nodeType":"ElementaryTypeName","src":"1656:6:18","typeDescriptions":{}}},"id":7017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1656:25:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7018,"name":"a","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6986,"src":"1685:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":7019,"name":"b","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6988,"src":"1689:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1685:5:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7021,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1684:7:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1656:35:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7023,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"1655:37:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"1651:41:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"functionReturnParameters":6992,"id":7025,"nodeType":"Return","src":"1644:48:18"}]},"documentation":{"id":6984,"nodeType":"StructuredDocumentation","src":"1338:126:18","text":" @dev Returns the average of two signed numbers without overflow.\n The result is rounded towards zero."},"id":7027,"implemented":true,"kind":"function","modifiers":[],"name":"average","nameLocation":"1478:7:18","nodeType":"FunctionDefinition","parameters":{"id":6989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6986,"mutability":"mutable","name":"a","nameLocation":"1493:1:18","nodeType":"VariableDeclaration","scope":7027,"src":"1486:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6985,"name":"int256","nodeType":"ElementaryTypeName","src":"1486:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"},{"constant":false,"id":6988,"mutability":"mutable","name":"b","nameLocation":"1503:1:18","nodeType":"VariableDeclaration","scope":7027,"src":"1496:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6987,"name":"int256","nodeType":"ElementaryTypeName","src":"1496:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1485:20:18"},"returnParameters":{"id":6992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":6991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7027,"src":"1529:6:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":6990,"name":"int256","nodeType":"ElementaryTypeName","src":"1529:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1528:8:18"},"scope":7054,"src":"1469:230:18","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":7052,"nodeType":"Block","src":"1843:767:18","statements":[{"id":7051,"nodeType":"UncheckedBlock","src":"1853:751:18","statements":[{"assignments":[7036],"declarations":[{"constant":false,"id":7036,"mutability":"mutable","name":"mask","nameLocation":"2424:4:18","nodeType":"VariableDeclaration","scope":7051,"src":"2417:11:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7035,"name":"int256","nodeType":"ElementaryTypeName","src":"2417:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"id":7040,"initialValue":{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7037,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"2431:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"hexValue":"323535","id":7038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2436:3:18","typeDescriptions":{"typeIdentifier":"t_rational_255_by_1","typeString":"int_const 255"},"value":"255"},"src":"2431:8:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"VariableDeclarationStatement","src":"2417:22:18"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7048,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"id":7045,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":7043,"name":"n","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7030,"src":"2576:1:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":7044,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"2580:4:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2576:8:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"id":7046,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"2575:10:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"nodeType":"BinaryOperation","operator":"^","rightExpression":{"id":7047,"name":"mask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7036,"src":"2588:4:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"src":"2575:17:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"id":7042,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2567:7:18","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":7041,"name":"uint256","nodeType":"ElementaryTypeName","src":"2567:7:18","typeDescriptions":{}}},"id":7049,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2567:26:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":7034,"id":7050,"nodeType":"Return","src":"2560:33:18"}]}]},"documentation":{"id":7028,"nodeType":"StructuredDocumentation","src":"1705:78:18","text":" @dev Returns the absolute unsigned value of a signed value."},"id":7053,"implemented":true,"kind":"function","modifiers":[],"name":"abs","nameLocation":"1797:3:18","nodeType":"FunctionDefinition","parameters":{"id":7031,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7030,"mutability":"mutable","name":"n","nameLocation":"1808:1:18","nodeType":"VariableDeclaration","scope":7053,"src":"1801:8:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"},"typeName":{"id":7029,"name":"int256","nodeType":"ElementaryTypeName","src":"1801:6:18","typeDescriptions":{"typeIdentifier":"t_int256","typeString":"int256"}},"visibility":"internal"}],"src":"1800:10:18"},"returnParameters":{"id":7034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7033,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7053,"src":"1834:7:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7032,"name":"uint256","nodeType":"ElementaryTypeName","src":"1834:7:18","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1833:9:18"},"scope":7054,"src":"1788:822:18","stateMutability":"pure","virtual":false,"visibility":"internal"}],"scope":7055,"src":"258:2354:18","usedErrors":[],"usedEvents":[]}],"src":"109:2504:18"},"id":18},"contracts/mocks/MockUSDT.sol":{"ast":{"absolutePath":"contracts/mocks/MockUSDT.sol","exportedSymbols":{"ERC20":[676],"ERC20Permit":[908],"MockUSDT":[7098]},"id":7099,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":7056,"literals":["solidity","0.8",".28"],"nodeType":"PragmaDirective","src":"81:23:19"},{"absolutePath":"@openzeppelin/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","id":7058,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7099,"sourceUnit":677,"src":"106:68:19","symbolAliases":[{"foreign":{"id":7057,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"114:5:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol","file":"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol","id":7060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":7099,"sourceUnit":909,"src":"175:91:19","symbolAliases":[{"foreign":{"id":7059,"name":"ERC20Permit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":908,"src":"183:11:19","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":7062,"name":"ERC20","nameLocations":["492:5:19"],"nodeType":"IdentifierPath","referencedDeclaration":676,"src":"492:5:19"},"id":7063,"nodeType":"InheritanceSpecifier","src":"492:5:19"},{"baseName":{"id":7064,"name":"ERC20Permit","nameLocations":["499:11:19"],"nodeType":"IdentifierPath","referencedDeclaration":908,"src":"499:11:19"},"id":7065,"nodeType":"InheritanceSpecifier","src":"499:11:19"}],"canonicalName":"MockUSDT","contractDependencies":[],"contractKind":"contract","documentation":{"id":7061,"nodeType":"StructuredDocumentation","src":"268:203:19","text":"@dev Dev-only ERC20 used to mimic USDT-like behavior (6 decimals).\n      Name/symbol are intentionally \"MockUSDT\"/\"mUSDT\" to avoid collisions\n      with real tokens in wallets and token lists."},"fullyImplemented":true,"id":7098,"linearizedBaseContracts":[7098,908,1068,3438,24,970,676,66,934,754,1000],"name":"MockUSDT","nameLocation":"480:8:19","nodeType":"ContractDefinition","nodes":[{"body":{"id":7075,"nodeType":"Block","src":"582:2:19","statements":[]},"id":7076,"implemented":true,"kind":"constructor","modifiers":[{"arguments":[{"hexValue":"4d6f636b55534454","id":7068,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"537:10:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_288148444b906285accebc25f3948809e77655c70384550e31033b8a4738bd22","typeString":"literal_string \"MockUSDT\""},"value":"MockUSDT"},{"hexValue":"6d55534454","id":7069,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"549:7:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_87d6c88746910d1d723ba1a6428a07b8455502c6f47d344b272b350e2394614c","typeString":"literal_string \"mUSDT\""},"value":"mUSDT"}],"id":7070,"kind":"baseConstructorSpecifier","modifierName":{"id":7067,"name":"ERC20","nameLocations":["531:5:19"],"nodeType":"IdentifierPath","referencedDeclaration":676,"src":"531:5:19"},"nodeType":"ModifierInvocation","src":"531:26:19"},{"arguments":[{"hexValue":"4d6f636b55534454","id":7072,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"570:10:19","typeDescriptions":{"typeIdentifier":"t_stringliteral_288148444b906285accebc25f3948809e77655c70384550e31033b8a4738bd22","typeString":"literal_string \"MockUSDT\""},"value":"MockUSDT"}],"id":7073,"kind":"baseConstructorSpecifier","modifierName":{"id":7071,"name":"ERC20Permit","nameLocations":["558:11:19"],"nodeType":"IdentifierPath","referencedDeclaration":908,"src":"558:11:19"},"nodeType":"ModifierInvocation","src":"558:23:19"}],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":7066,"nodeType":"ParameterList","parameters":[],"src":"528:2:19"},"returnParameters":{"id":7074,"nodeType":"ParameterList","parameters":[],"src":"582:0:19"},"scope":7098,"src":"517:67:19","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[240],"body":{"id":7084,"nodeType":"Block","src":"647:25:19","statements":[{"expression":{"hexValue":"36","id":7082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"664:1:19","typeDescriptions":{"typeIdentifier":"t_rational_6_by_1","typeString":"int_const 6"},"value":"6"},"functionReturnParameters":7081,"id":7083,"nodeType":"Return","src":"657:8:19"}]},"functionSelector":"313ce567","id":7085,"implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"599:8:19","nodeType":"FunctionDefinition","overrides":{"id":7078,"nodeType":"OverrideSpecifier","overrides":[],"src":"622:8:19"},"parameters":{"id":7077,"nodeType":"ParameterList","parameters":[],"src":"607:2:19"},"returnParameters":{"id":7081,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7080,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":7085,"src":"640:5:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":7079,"name":"uint8","nodeType":"ElementaryTypeName","src":"640:5:19","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"639:7:19"},"scope":7098,"src":"590:82:19","stateMutability":"pure","virtual":false,"visibility":"public"},{"body":{"id":7096,"nodeType":"Block","src":"717:42:19","statements":[{"expression":{"arguments":[{"expression":{"id":7091,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"733:3:19","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":7092,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"737:6:19","memberName":"sender","nodeType":"MemberAccess","src":"733:10:19","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":7093,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":7087,"src":"745:6:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":7090,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"727:5:19","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":7094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"727:25:19","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":7095,"nodeType":"ExpressionStatement","src":"727:25:19"}]},"functionSelector":"a0712d68","id":7097,"implemented":true,"kind":"function","modifiers":[],"name":"mint","nameLocation":"687:4:19","nodeType":"FunctionDefinition","parameters":{"id":7088,"nodeType":"ParameterList","parameters":[{"constant":false,"id":7087,"mutability":"mutable","name":"amount","nameLocation":"700:6:19","nodeType":"VariableDeclaration","scope":7097,"src":"692:14:19","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":7086,"name":"uint256","nodeType":"ElementaryTypeName","src":"692:7:19","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"691:16:19"},"returnParameters":{"id":7089,"nodeType":"ParameterList","parameters":[],"src":"717:0:19"},"scope":7098,"src":"678:81:19","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":7099,"src":"471:290:19","usedErrors":[36,41,46,55,60,65,785,792,1010,1134,1136,2874,2879,2884],"usedEvents":[4,688,697]}],"src":"81:682:19"},"id":19}},"contracts":{"@openzeppelin/contracts/interfaces/IERC5267.sol":{"IERC5267":{"abi":[{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":\"IERC5267\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]}},\"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.28+commit.7893614a\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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.28+commit.7893614a\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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.28+commit.7893614a\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]}},\"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.28+commit.7893614a\"},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"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\":\"See {IERC20-totalSupply}.\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a\",\"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@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.28+commit.7893614a\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol":{"ERC20Permit":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"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":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","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":[],"name":"EIP712DomainChanged","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","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"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":[],\"name\":\"EIP712DomainChanged\",\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"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\"}],\"devdoc\":{\"details\":\"Implementation of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[ERC-2612]. Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on `{IERC20-approve}`, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"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.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Initializes the {EIP712} domain separator using the `name` parameter, and setting `version` to `\\\"1\\\"`. It's a good idea to use the same `name` that is defined as the ERC-20 token name.\"},\"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}.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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/ERC20Permit.sol\":\"ERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a\",\"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x0c60057e7351874f086db8dc9291b7ada9ad62cb7725befd2991430d04a74572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cdfd1fc36410d45046f88ff9864350146b194736c32834baa38d99b843ffbe\",\"dweb:/ipfs/QmdVmqgFKjgEBURy4KUwWDA6J1LEg1BKcHcXsx4nkeHAD2\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@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/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.28+commit.7893614a\"},\"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\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]}},\"version\":1}"}},"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol":{"IERC20Permit":{"abi":[{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 Permit extension allowing approvals to be made via signatures, as defined in https://eips.ethereum.org/EIPS/eip-2612[ERC-2612]. Adds the {permit} method, which can be used to change an account's ERC-20 allowance (see {IERC20-allowance}) by presenting a message signed by the account. By not relying on {IERC20-approve}, the token holder account doesn't need to send a transaction, and thus is not required to hold Ether at all. ==== Security Considerations There are two important considerations concerning the use of `permit`. The first is that a valid permit signature expresses an allowance, and it should not be assumed to convey additional meaning. In particular, it should not be considered as an intention to spend the allowance in any specific way. The second is that because permits have built-in replay protection and can be submitted by anyone, they can be frontrun. A protocol that uses permits should take this into consideration and allow a `permit` call to fail. Combining these two aspects, a pattern that may be generally recommended is: ```solidity function doThingWithPermit(..., uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) public {     try token.permit(msg.sender, address(this), value, deadline, v, r, s) {} catch {}     doThing(..., value); } function doThing(..., uint256 value) public {     token.safeTransferFrom(msg.sender, address(this), value);     ... } ``` Observe that: 1) `msg.sender` is used as the owner, leaving no ambiguity as to the signer intent, and 2) the use of `try/catch` allows the permit to fail and makes the code tolerant to frontrunning. (See also {SafeERC20-safeTransferFrom}). Additionally, note that smart contract wallets (such as Argent or Safe) are not able to produce permit signatures, so contracts should have entry points that don't rely on permit.\",\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":\"IERC20Permit\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]}},\"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.28+commit.7893614a\"},\"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\":200},\"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/Nonces.sol":{"Nonces":{"abi":[{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"nonces(address)":"7ecebe00"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Provides tracking nonces for addresses. Nonces will only increment.\",\"errors\":{\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}]},\"kind\":\"dev\",\"methods\":{\"nonces(address)\":{\"details\":\"Returns the next unused nonce for an address.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Nonces.sol\":\"Nonces\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/Panic.sol":{"Panic":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea26469706673582212207a34c2eef62c6e83829e81894afb95995147f98c6b0092b8b777b768044045ff64736f6c634300081c0033","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 PUSH27 0x34C2EEF62C6E83829E81894AFB95995147F98C6B0092B8B777B768 DIV BLOCKHASH GASLIMIT SELFDESTRUCT PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"657:1315:9:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea26469706673582212207a34c2eef62c6e83829e81894afb95995147f98c6b0092b8b777b768044045ff64736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH27 0x34C2EEF62C6E83829E81894AFB95995147F98C6B0092B8B777B768 DIV BLOCKHASH GASLIMIT SELFDESTRUCT PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"657:1315:9:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":200},\"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/ShortStrings.sol":{"ShortStrings":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122013be973747cb240a5293e27fcc2a3fa7472775b800172412f95ece108b7ff66d64736f6c634300081c0033","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 SGT 0xBE SWAP8 CALLDATACOPY SELFBALANCE 0xCB 0x24 EXP MSTORE SWAP4 0xE2 PUSH32 0xCC2A3FA7472775B800172412F95ECE108B7FF66D64736F6C634300081C003300 ","sourceMap":"1255:3046:10:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea264697066735822122013be973747cb240a5293e27fcc2a3fa7472775b800172412f95ece108b7ff66d64736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SGT 0xBE SWAP8 CALLDATACOPY SELFBALANCE 0xCB 0x24 EXP MSTORE SWAP4 0xE2 PUSH32 0xCC2A3FA7472775B800172412F95ECE108B7FF66D64736F6C634300081C003300 ","sourceMap":"1255:3046:10:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"This library provides functions to convert short memory strings into a `ShortString` type that can be used as an immutable variable. Strings of arbitrary length can be optimized using this library if they are short enough (up to 31 bytes) by packing them with their length (1 byte) in a single EVM word (32 bytes). Additionally, a fallback mechanism can be used for every other case. Usage example: ```solidity contract Named {     using ShortStrings for *;     ShortString private immutable _name;     string private _nameFallback;     constructor(string memory contractName) {         _name = contractName.toShortStringWithFallback(_nameFallback);     }     function name() external view returns (string memory) {         return _name.toStringWithFallback(_nameFallback);     } } ```\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":\"ShortStrings\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/StorageSlot.sol":{"StorageSlot":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122075ff3ee7558f3370d11093f8b835cf8b00825d1f592fd2c0f3cc239fbf6babf164736f6c634300081c0033","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 PUSH22 0xFF3EE7558F3370D11093F8B835CF8B00825D1F592FD2 0xC0 RETURN 0xCC 0x23 SWAP16 0xBF PUSH12 0xABF164736F6C634300081C00 CALLER ","sourceMap":"1407:2774:11:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea264697066735822122075ff3ee7558f3370d11093f8b835cf8b00825d1f592fd2c0f3cc239fbf6babf164736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH22 0xFF3EE7558F3370D11093F8B835CF8B00825D1F592FD2 0xC0 RETURN 0xCC 0x23 SWAP16 0xBF PUSH12 0xABF164736F6C634300081C00 CALLER ","sourceMap":"1407:2774:11:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library for reading and writing primitive types to specific storage slots. Storage slots are often used to avoid storage conflict when dealing with upgradeable contracts. This library helps with reading and writing to such slots without the need for inline assembly. The functions in this library return Slot structs that contain a `value` member that can be used to read or write. Example usage to set ERC-1967 implementation slot: ```solidity contract ERC1967 {     // Define the slot. Alternatively, use the SlotDerivation library to derive the slot.     bytes32 internal constant _IMPLEMENTATION_SLOT = 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;     function _getImplementation() internal view returns (address) {         return StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value;     }     function _setImplementation(address newImplementation) internal {         require(newImplementation.code.length > 0);         StorageSlot.getAddressSlot(_IMPLEMENTATION_SLOT).value = newImplementation;     } } ``` TIP: Consider using this library along with {SlotDerivation}.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":\"StorageSlot\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]}},\"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":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea264697066735822122044b46454b59dac62749dc8a5bbe325e8b991a5d94ee8b31a4c8e6a0cd42b8df964736f6c634300081c0033","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 PREVRANDAO 0xB4 PUSH5 0x54B59DAC62 PUSH21 0x9DC8A5BBE325E8B991A5D94EE8B31A4C8E6A0CD42B DUP14 0xF9 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"297:18980:12:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea264697066735822122044b46454b59dac62749dc8a5bbe325e8b991a5d94ee8b31a4c8e6a0cd42b8df964736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PREVRANDAO 0xB4 PUSH5 0x54B59DAC62 PUSH21 0x9DC8A5BBE325E8B991A5D94EE8B31A4C8E6A0CD42B DUP14 0xF9 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"297:18980:12:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":200},\"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\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"@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/cryptography/ECDSA.sol":{"ECDSA":{"abi":[{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220d286f0dcd9d2495565483d027853f3e0194b08d550d81d3af6cf406383e4b2ed64736f6c634300081c0033","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 0xD2 DUP7 CREATE 0xDC 0xD9 0xD2 BLOBHASH SSTORE PUSH6 0x483D027853F3 0xE0 NOT 0x4B ADDMOD 0xD5 POP 0xD8 SAR GASPRICE 0xF6 0xCF BLOCKHASH PUSH4 0x83E4B2ED PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"344:7470:13:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220d286f0dcd9d2495565483d027853f3e0194b08d550d81d3af6cf406383e4b2ed64736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xD2 DUP7 CREATE 0xDC 0xD9 0xD2 BLOBHASH SSTORE PUSH6 0x483D027853F3 0xE0 NOT 0x4B ADDMOD 0xD5 POP 0xD8 SAR GASPRICE 0xF6 0xCF BLOCKHASH PUSH4 0x83E4B2ED PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"344:7470:13:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"}],\"devdoc\":{\"details\":\"Elliptic Curve Digital Signature Algorithm (ECDSA) operations. These functions can be used to verify that a message was signed by the holder of the private keys of a given address.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}]},\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":\"ECDSA\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]}},\"version\":1}"}},"@openzeppelin/contracts/utils/cryptography/EIP712.sol":{"EIP712":{"abi":[{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","type":"event"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"eip712Domain()":"84b0196e"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EIP712DomainChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"state-variable-immutable\",\"details\":\"https://eips.ethereum.org/EIPS/eip-712[EIP-712] is a standard for hashing and signing of typed structured data. The encoding scheme specified in the EIP requires a domain separator and a hash of the typed structured data, whose encoding is very generic and therefore its implementation in Solidity is not feasible, thus this contract does not implement the encoding itself. Protocols need to implement the type-specific encoding they need in order to produce the hash of their typed data using a combination of `abi.encode` and `keccak256`. This contract implements the EIP-712 domain separator ({_domainSeparatorV4}) that is used as part of the encoding scheme, and the final step of the encoding to obtain the message digest that is then signed via ECDSA ({_hashTypedDataV4}). The implementation of the domain separator was designed to be as efficient as possible while still properly updating the chain id to protect against replay attacks on an eventual fork of the chain. NOTE: This contract implements the version of the encoding known as \\\"v4\\\", as implemented by the JSON RPC method https://docs.metamask.io/guide/signing-data.html[`eth_signTypedDataV4` in MetaMask]. NOTE: In the upgradeable version of this contract, the cached values will correspond to the address, and the domain separator of the implementation contract. This will cause the {_domainSeparatorV4} function to always rebuild the separator from the immutable values, which is cheaper than accessing a cached version in cold storage.\",\"events\":{\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Initializes the domain separator and parameter caches. The meaning of `name` and `version` is specified in https://eips.ethereum.org/EIPS/eip-712#definition-of-domainseparator[EIP-712]: - `name`: the user readable name of the signing domain, i.e. the name of the DApp or the protocol. - `version`: the current major version of the signing domain. NOTE: These parameters cannot be changed except through a xref:learn::upgrading-smart-contracts.adoc[smart contract upgrade].\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":\"EIP712\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x0c60057e7351874f086db8dc9291b7ada9ad62cb7725befd2991430d04a74572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cdfd1fc36410d45046f88ff9864350146b194736c32834baa38d99b843ffbe\",\"dweb:/ipfs/QmdVmqgFKjgEBURy4KUwWDA6J1LEg1BKcHcXsx4nkeHAD2\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@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/cryptography/MessageHashUtils.sol":{"MessageHashUtils":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220f8bf5f32fbc21651a5990b74a1b8070a7d0e6f22b0907395fd9817477ebf6ea964736f6c634300081c0033","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 0xF8 0xBF PUSH0 ORIGIN 0xFB 0xC2 AND MLOAD 0xA5 SWAP10 SIGNEXTEND PUSH21 0xA1B8070A7D0E6F22B0907395FD9817477EBF6EA964 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"521:3729:15:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220f8bf5f32fbc21651a5990b74a1b8070a7d0e6f22b0907395fd9817477ebf6ea964736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF8 0xBF PUSH0 ORIGIN 0xFB 0xC2 AND MLOAD 0xA5 SWAP10 SIGNEXTEND PUSH21 0xA1B8070A7D0E6F22B0907395FD9817477EBF6EA964 PUSH20 0x6F6C634300081C00330000000000000000000000 ","sourceMap":"521:3729:15:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Signature message hash utilities for producing digests to be consumed by {ECDSA} recovery or signing. The library provides methods for generating a hash of a message that conforms to the https://eips.ethereum.org/EIPS/eip-191[ERC-191] and https://eips.ethereum.org/EIPS/eip-712[EIP 712] specifications.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":\"MessageHashUtils\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"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\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@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/math/Math.sol":{"Math":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220df7c34c847ba92759d2a0c5ebd36a4f354bd94607b28b5d202bd0af5b720cf9664736f6c634300081c0033","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 0xDF PUSH29 0x34C847BA92759D2A0C5EBD36A4F354BD94607B28B5D202BD0AF5B720CF SWAP7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:31863:16:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220df7c34c847ba92759d2a0c5ebd36a4f354bd94607b28b5d202bd0af5b720cf9664736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDF PUSH29 0x34C847BA92759D2A0C5EBD36A4F354BD94607B28B5D202BD0AF5B720CF SWAP7 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"281:31863:16:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":200},\"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":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220e11824dc518bd9c2a5a3ab4e9d5db12b47445e46a8a3b31b60f70a072affa9c164736f6c634300081c0033","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 0xE1 XOR 0x24 0xDC MLOAD DUP12 0xD9 0xC2 0xA5 LOG3 0xAB 0x4E SWAP14 TSTORE 0xB1 0x2B SELFBALANCE PREVRANDAO MCOPY CHAINID 0xA8 LOG3 0xB3 SHL PUSH1 0xF7 EXP SMOD 0x2A SELFDESTRUCT 0xA9 0xC1 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"769:34173:17:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220e11824dc518bd9c2a5a3ab4e9d5db12b47445e46a8a3b31b60f70a072affa9c164736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 XOR 0x24 0xDC MLOAD DUP12 0xD9 0xC2 0xA5 LOG3 0xAB 0x4E SWAP14 TSTORE 0xB1 0x2B SELFBALANCE PREVRANDAO MCOPY CHAINID 0xA8 LOG3 0xB3 SHL PUSH1 0xF7 EXP SMOD 0x2A SELFDESTRUCT 0xA9 0xC1 PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"769:34173:17:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":200},\"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":"60808060405234601757603a9081601d823930815050f35b600080fdfe600080fdfea2646970667358221220beea8e313b980f7f2fa28d2fb9eba3a2e0c80b95eab03c9e520eb063d168b2ea64736f6c634300081c0033","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 0xBE 0xEA DUP15 BALANCE EXTCODESIZE SWAP9 0xF PUSH32 0x2FA28D2FB9EBA3A2E0C80B95EAB03C9E520EB063D168B2EA64736F6C63430008 SHR STOP CALLER ","sourceMap":"258:2354:18:-:0;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"600080fdfea2646970667358221220beea8e313b980f7f2fa28d2fb9eba3a2e0c80b95eab03c9e520eb063d168b2ea64736f6c634300081c0033","opcodes":"PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xBE 0xEA DUP15 BALANCE EXTCODESIZE SWAP9 0xF PUSH32 0x2FA28D2FB9EBA3A2E0C80B95EAB03C9E520EB063D168B2EA64736F6C63430008 SHR STOP CALLER ","sourceMap":"258:2354:18:-:0;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"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\":200},\"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/mocks/MockUSDT.sol":{"MockUSDT":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"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":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","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":[],"name":"EIP712DomainChanged","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":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"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":"pure","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","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"}],"evm":{"bytecode":{"functionDebugData":{"finalize_allocation":{"entryPoint":1088,"id":null,"parameterSlots":2,"returnSlots":0},"fun_toShortStringWithFallback":{"entryPoint":1123,"id":1278,"parameterSlots":1,"returnSlots":1},"fun_toShortStringWithFallback_5615":{"entryPoint":1553,"id":1278,"parameterSlots":1,"returnSlots":1}},"generatedSources":[],"linkReferences":{},"object":"6101606040523461043b57604051610018604082610440565b600881526020810167135bd8dad554d11560c21b81526040519061003d604083610440565b6008825267135bd8dad554d11560c21b602083015260405192610061604085610440565b60058452641b5554d11560da1b602085015260405193610082604086610440565b60018552603160f81b60208601908152845190946001600160401b0382116103385760035490600182811c92168015610431575b60208310146103185781601f8493116103c1575b50602090601f83116001146103595760009261034e575b50508160011b916000199060031b1c1916176003555b8051906001600160401b0382116103385760045490600182811c9216801561032e575b60208310146103185781601f8493116102a8575b50602090601f831160011461024057600092610235575b50508160011b916000199060031b1c1916176004555b61016481610463565b6101205261017184610611565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526101da60c082610440565b5190206080523060c052604051610d1590816107b08239608051816109da015260a05181610a97015260c051816109a4015260e05181610a2901526101005181610a4f015261012051816104230152610140518161044c0152f35b015190503880610145565b600460009081528281209350601f198516905b8181106102905750908460019594939210610277575b505050811b0160045561015b565b015160001960f88460031b161c19169055388080610269565b92936020600181928786015181550195019301610253565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101916020851061030e575b90601f859493920160051c01905b8181106102ff575061012e565b600081558493506001016102f2565b90915081906102e4565b634e487b7160e01b600052602260045260246000fd5b91607f169161011a565b634e487b7160e01b600052604160045260246000fd5b0151905038806100e1565b600360009081528281209350601f198516905b8181106103a95750908460019594939210610390575b505050811b016003556100f7565b015160001960f88460031b161c19169055388080610382565b9293602060018192878601518155019501930161036c565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610427575b90601f859493920160051c01905b81811061041857506100ca565b6000815584935060010161040b565b90915081906103fd565b91607f16916100b6565b600080fd5b601f909101601f19168101906001600160401b0382119082101761033857604052565b908151602081106000146104fb575090601f81511161049f57602081519101516020821061048f571790565b6000198260200360031b1b161790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106104e35750508160006044809484010152601f80199101168101030190fd5b602082820181015160448784010152859350016104c1565b6001600160401b03811161033857600554600181811c91168015610607575b602082101461031857601f81116105d1575b50602092601f821160011461056c5792819293600092610561575b50508160011b916000199060031b1c19161760055560ff90565b015190503880610547565b601f198216936005600052806000209160005b8681106105b957508360019596106105a0575b505050811b0160055560ff90565b015160001960f88460031b161c19169055388080610592565b9192602060018192868501518155019401920161057f565b6005600052601f6020600020910160051c810190601f830160051c015b8181106105fb575061052c565b600081556001016105ee565b90607f169061051a565b90815160208110600014610699575090601f81511161063d57602081519101516020821061048f571790565b6040519063305a27a960e01b8252602060048301528181519182602483015260005b8381106106815750508160006044809484010152601f80199101168101030190fd5b6020828201810151604487840101528593500161065f565b6001600160401b03811161033857600654600181811c911680156107a5575b602082101461031857601f811161076f575b50602092601f821160011461070a57928192936000926106ff575b50508160011b916000199060031b1c19161760065560ff90565b0151905038806106e5565b601f198216936006600052806000209160005b868110610757575083600195961061073e575b505050811b0160065560ff90565b015160001960f88460031b161c19169055388080610730565b9192602060018192868501518155019401920161071d565b6006600052601f6020600020910160051c810190601f830160051c015b81811061079957506106ca565b6000815560010161078c565b90607f16906106b856fe608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146106eb57508063095ea7b3146106c557806318160ddd146106a757806323b872dd146105ba578063313ce5671461059e5780633644e5151461057b57806370a08231146105415780637ecebe001461050757806384b0196e1461040a57806395d89b4114610325578063a0712d681461028b578063a9059cbb1461025a578063d505accf1461010f5763dd62ed3e146100b957600080fd5b3461010a57604036600319011261010a576100d26107d1565b6100da6107e7565b6001600160a01b039182166000908152600160209081526040808320949093168252928352819020549051908152f35b600080fd5b3461010a5760e036600319011261010a576101286107d1565b6101306107e7565b604435906064359260843560ff8116810361010a578442116102455761020661020f9160018060a01b038416968760005260076020526040600020908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c081526101d460e0826108ba565b5190206101df6109a1565b906040519161190160f01b83526002830152602282015260c43591604260a4359220610bc2565b90929192610c57565b6001600160a01b031684810361022c575061022a9350610abd565b005b84906325c0072360e11b60005260045260245260446000fd5b8463313c898160e11b60005260045260246000fd5b3461010a57604036600319011261010a576102806102766107d1565b60243590336108f2565b602060405160018152f35b3461010a57602036600319011261010a57600435331561030f576002548181018091116102f9576002556000903382528160205260408220818154019055604051908152817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a380f35b634e487b7160e01b600052601160045260246000fd5b63ec442f0560e01b600052600060045260246000fd5b3461010a57600036600319011261010a576040516000600454610347816107fd565b80845290600181169081156103e65750600114610387575b6103838361036f818503826108ba565b604051918291602083526020830190610790565b0390f35b600460009081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106103cc5750909150810160200161036f61035f565b9192600181602092548385880101520191019092916103b4565b60ff191660208086019190915291151560051b8401909101915061036f905061035f565b3461010a57600036600319011261010a576104a96104477f0000000000000000000000000000000000000000000000000000000000000000610b24565b6104707f0000000000000000000000000000000000000000000000000000000000000000610b8b565b60206104b76040519261048383856108ba565b600084526000368137604051958695600f60f81b875260e08588015260e0870190610790565b908582036040870152610790565b466060850152306080850152600060a085015283810360c085015281808451928381520193019160005b8281106104f057505050500390f35b8351855286955093810193928101926001016104e1565b3461010a57602036600319011261010a576001600160a01b036105286107d1565b1660005260076020526020604060002054604051908152f35b3461010a57602036600319011261010a576001600160a01b036105626107d1565b1660005260006020526020604060002054604051908152f35b3461010a57600036600319011261010a5760206105966109a1565b604051908152f35b3461010a57600036600319011261010a57602060405160068152f35b3461010a57606036600319011261010a576105d36107d1565b6105db6107e7565b6001600160a01b038216600081815260016020908152604080832033845290915290205490926044359291600019811061061b575b5061028093506108f2565b83811061068a57841561067457331561065e57610280946000526001602052604060002060018060a01b0333166000526020528360406000209103905584610610565b634a1406b160e11b600052600060045260246000fd5b63e602df0560e01b600052600060045260246000fd5b8390637dc7a0d960e11b6000523360045260245260445260646000fd5b3461010a57600036600319011261010a576020600254604051908152f35b3461010a57604036600319011261010a576102806106e16107d1565b6024359033610abd565b3461010a57600036600319011261010a57600060035461070a816107fd565b80845290600181169081156103e65750600114610731576103838361036f818503826108ba565b600360009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106107765750909150810160200161036f61035f565b91926001816020925483858801015201910190929161075e565b919082519283825260005b8481106107bc575050826000602080949584010152601f8019910116010190565b8060208092840101518282860101520161079b565b600435906001600160a01b038216820361010a57565b602435906001600160a01b038216820361010a57565b90600182811c9216801561082d575b602083101461081757565b634e487b7160e01b600052602260045260246000fd5b91607f169161080c565b60009291815491610847836107fd565b808352926001811690811561089d575060011461086357505050565b60009081526020812093945091925b838310610883575060209250010190565b600181602092949394548385870101520191019190610872565b915050602093945060ff929192191683830152151560051b010190565b90601f8019910116810190811067ffffffffffffffff8211176108dc57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031690811561098b576001600160a01b031691821561030f5760008281528060205260408120548281106109715791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b634b637e8f60e11b600052600060045260246000fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610a94575b156109fc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152610a8e60c0826108ba565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146109d3565b6001600160a01b0316908115610674576001600160a01b031691821561065e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60ff8114610b6e5760ff811690601f8211610b5d576040805192610b4882856108ba565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b50604051610b8881610b81816005610837565b03826108ba565b90565b60ff8114610baf5760ff811690601f8211610b5d576040805192610b4882856108ba565b50604051610b8881610b81816006610837565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411610c4b579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15610c3f576000516001600160a01b03811615610c335790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b50505060009160039190565b9190916004811015610cc95780610c6d57509050565b600060018203610c885763f645eedf60e01b60005260046000fd5b5060028103610ca6578263fce698f760e01b60005260045260246000fd5b9091600360009214610cb6575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220b25610541fc8b234b4f056fbb29a70848f66f05cda18c1223a2129d48ebb385f64736f6c634300081c0033","opcodes":"PUSH2 0x160 PUSH1 0x40 MSTORE CALLVALUE PUSH2 0x43B JUMPI PUSH1 0x40 MLOAD PUSH2 0x18 PUSH1 0x40 DUP3 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x8 DUP2 MSTORE PUSH1 0x20 DUP2 ADD PUSH8 0x135BD8DAD554D115 PUSH1 0xC2 SHL DUP2 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH2 0x3D PUSH1 0x40 DUP4 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x8 DUP3 MSTORE PUSH8 0x135BD8DAD554D115 PUSH1 0xC2 SHL PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x40 MLOAD SWAP3 PUSH2 0x61 PUSH1 0x40 DUP6 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x5 DUP5 MSTORE PUSH5 0x1B5554D115 PUSH1 0xDA SHL PUSH1 0x20 DUP6 ADD MSTORE PUSH1 0x40 MLOAD SWAP4 PUSH2 0x82 PUSH1 0x40 DUP7 PUSH2 0x440 JUMP JUMPDEST PUSH1 0x1 DUP6 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL PUSH1 0x20 DUP7 ADD SWAP1 DUP2 MSTORE DUP5 MLOAD SWAP1 SWAP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x338 JUMPI PUSH1 0x3 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x431 JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x318 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x3C1 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x359 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x34E 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 SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT PUSH2 0x338 JUMPI PUSH1 0x4 SLOAD SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x32E JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x318 JUMPI DUP2 PUSH1 0x1F DUP5 SWAP4 GT PUSH2 0x2A8 JUMPI JUMPDEST POP PUSH1 0x20 SWAP1 PUSH1 0x1F DUP4 GT PUSH1 0x1 EQ PUSH2 0x240 JUMPI PUSH1 0x0 SWAP3 PUSH2 0x235 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x4 SSTORE JUMPDEST PUSH2 0x164 DUP2 PUSH2 0x463 JUMP JUMPDEST PUSH2 0x120 MSTORE PUSH2 0x171 DUP5 PUSH2 0x611 JUMP JUMPDEST PUSH2 0x140 MSTORE MLOAD SWAP1 KECCAK256 SWAP2 DUP3 PUSH1 0xE0 MSTORE MLOAD SWAP1 KECCAK256 DUP1 PUSH2 0x100 MSTORE CHAINID PUSH1 0xA0 MSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP5 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0x1DA PUSH1 0xC0 DUP3 PUSH2 0x440 JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH1 0x80 MSTORE ADDRESS PUSH1 0xC0 MSTORE PUSH1 0x40 MLOAD PUSH2 0xD15 SWAP1 DUP2 PUSH2 0x7B0 DUP3 CODECOPY PUSH1 0x80 MLOAD DUP2 PUSH2 0x9DA ADD MSTORE PUSH1 0xA0 MLOAD DUP2 PUSH2 0xA97 ADD MSTORE PUSH1 0xC0 MLOAD DUP2 PUSH2 0x9A4 ADD MSTORE PUSH1 0xE0 MLOAD DUP2 PUSH2 0xA29 ADD MSTORE PUSH2 0x100 MLOAD DUP2 PUSH2 0xA4F ADD MSTORE PUSH2 0x120 MLOAD DUP2 PUSH2 0x423 ADD MSTORE PUSH2 0x140 MLOAD DUP2 PUSH2 0x44C ADD MSTORE RETURN JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x145 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x290 JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x277 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x4 SSTORE PUSH2 0x15B JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x269 JUMP JUMPDEST SWAP3 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x253 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 MSTORE SWAP1 SWAP2 POP PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x30E JUMPI JUMPDEST SWAP1 PUSH1 0x1F DUP6 SWAP5 SWAP4 SWAP3 ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x2FF JUMPI POP PUSH2 0x12E JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE DUP5 SWAP4 POP PUSH1 0x1 ADD PUSH2 0x2F2 JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x2E4 JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x11A 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 0xE1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE DUP3 DUP2 KECCAK256 SWAP4 POP PUSH1 0x1F NOT DUP6 AND SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x3A9 JUMPI POP SWAP1 DUP5 PUSH1 0x1 SWAP6 SWAP5 SWAP4 SWAP3 LT PUSH2 0x390 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x3 SSTORE PUSH2 0xF7 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x382 JUMP JUMPDEST SWAP3 SWAP4 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP8 DUP7 ADD MLOAD DUP2 SSTORE ADD SWAP6 ADD SWAP4 ADD PUSH2 0x36C JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 MSTORE SWAP1 SWAP2 POP PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B PUSH1 0x1F DUP5 ADD PUSH1 0x5 SHR DUP2 ADD SWAP2 PUSH1 0x20 DUP6 LT PUSH2 0x427 JUMPI JUMPDEST SWAP1 PUSH1 0x1F DUP6 SWAP5 SWAP4 SWAP3 ADD PUSH1 0x5 SHR ADD SWAP1 JUMPDEST DUP2 DUP2 LT PUSH2 0x418 JUMPI POP PUSH2 0xCA JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE DUP5 SWAP4 POP PUSH1 0x1 ADD PUSH2 0x40B JUMP JUMPDEST SWAP1 SWAP2 POP DUP2 SWAP1 PUSH2 0x3FD JUMP JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0xB6 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND DUP2 ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP3 GT SWAP1 DUP3 LT OR PUSH2 0x338 JUMPI PUSH1 0x40 MSTORE JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH1 0x0 EQ PUSH2 0x4FB JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x49F JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x48F JUMPI OR SWAP1 JUMP JUMPDEST PUSH1 0x0 NOT DUP3 PUSH1 0x20 SUB PUSH1 0x3 SHL SHL AND OR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP4 ADD MSTORE DUP2 DUP2 MLOAD SWAP2 DUP3 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x4E3 JUMPI POP POP DUP2 PUSH1 0x0 PUSH1 0x44 DUP1 SWAP5 DUP5 ADD ADD MSTORE PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x44 DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x4C1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x338 JUMPI PUSH1 0x5 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x607 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x318 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x5D1 JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x56C JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x561 JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x5 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x547 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH1 0x5 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x5B9 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x5A0 JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x5 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x592 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x57F JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x5FB JUMPI POP PUSH2 0x52C JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x5EE JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x51A JUMP JUMPDEST SWAP1 DUP2 MLOAD PUSH1 0x20 DUP2 LT PUSH1 0x0 EQ PUSH2 0x699 JUMPI POP SWAP1 PUSH1 0x1F DUP2 MLOAD GT PUSH2 0x63D JUMPI PUSH1 0x20 DUP2 MLOAD SWAP2 ADD MLOAD PUSH1 0x20 DUP3 LT PUSH2 0x48F JUMPI OR SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 PUSH4 0x305A27A9 PUSH1 0xE0 SHL DUP3 MSTORE PUSH1 0x20 PUSH1 0x4 DUP4 ADD MSTORE DUP2 DUP2 MLOAD SWAP2 DUP3 PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x0 JUMPDEST DUP4 DUP2 LT PUSH2 0x681 JUMPI POP POP DUP2 PUSH1 0x0 PUSH1 0x44 DUP1 SWAP5 DUP5 ADD ADD MSTORE PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SUB ADD SWAP1 REVERT JUMPDEST PUSH1 0x20 DUP3 DUP3 ADD DUP2 ADD MLOAD PUSH1 0x44 DUP8 DUP5 ADD ADD MSTORE DUP6 SWAP4 POP ADD PUSH2 0x65F JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB DUP2 GT PUSH2 0x338 JUMPI PUSH1 0x6 SLOAD PUSH1 0x1 DUP2 DUP2 SHR SWAP2 AND DUP1 ISZERO PUSH2 0x7A5 JUMPI JUMPDEST PUSH1 0x20 DUP3 LT EQ PUSH2 0x318 JUMPI PUSH1 0x1F DUP2 GT PUSH2 0x76F JUMPI JUMPDEST POP PUSH1 0x20 SWAP3 PUSH1 0x1F DUP3 GT PUSH1 0x1 EQ PUSH2 0x70A JUMPI SWAP3 DUP2 SWAP3 SWAP4 PUSH1 0x0 SWAP3 PUSH2 0x6FF JUMPI JUMPDEST POP POP DUP2 PUSH1 0x1 SHL SWAP2 PUSH1 0x0 NOT SWAP1 PUSH1 0x3 SHL SHR NOT AND OR PUSH1 0x6 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD SWAP1 POP CODESIZE DUP1 PUSH2 0x6E5 JUMP JUMPDEST PUSH1 0x1F NOT DUP3 AND SWAP4 PUSH1 0x6 PUSH1 0x0 MSTORE DUP1 PUSH1 0x0 KECCAK256 SWAP2 PUSH1 0x0 JUMPDEST DUP7 DUP2 LT PUSH2 0x757 JUMPI POP DUP4 PUSH1 0x1 SWAP6 SWAP7 LT PUSH2 0x73E JUMPI JUMPDEST POP POP POP DUP2 SHL ADD PUSH1 0x6 SSTORE PUSH1 0xFF SWAP1 JUMP JUMPDEST ADD MLOAD PUSH1 0x0 NOT PUSH1 0xF8 DUP5 PUSH1 0x3 SHL AND SHR NOT AND SWAP1 SSTORE CODESIZE DUP1 DUP1 PUSH2 0x730 JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x20 PUSH1 0x1 DUP2 SWAP3 DUP7 DUP6 ADD MLOAD DUP2 SSTORE ADD SWAP5 ADD SWAP3 ADD PUSH2 0x71D JUMP JUMPDEST PUSH1 0x6 PUSH1 0x0 MSTORE PUSH1 0x1F PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP2 ADD PUSH1 0x5 SHR DUP2 ADD SWAP1 PUSH1 0x1F DUP4 ADD PUSH1 0x5 SHR ADD JUMPDEST DUP2 DUP2 LT PUSH2 0x799 JUMPI POP PUSH2 0x6CA JUMP JUMPDEST PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x78C JUMP JUMPDEST SWAP1 PUSH1 0x7F AND SWAP1 PUSH2 0x6B8 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 0x6EB JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x10F JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0xD2 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0xDA PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP4 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0xE0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x128 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x10A JUMPI DUP5 TIMESTAMP GT PUSH2 0x245 JUMPI PUSH2 0x206 PUSH2 0x20F SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP7 DUP8 PUSH1 0x0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP5 MSTORE DUP11 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x60 DUP5 ADD MSTORE DUP10 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x1D4 PUSH1 0xE0 DUP3 PUSH2 0x8BA JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1DF PUSH2 0x9A1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0xBC2 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP2 SUB PUSH2 0x22C JUMPI POP PUSH2 0x22A SWAP4 POP PUSH2 0xABD JUMP JUMPDEST STOP JUMPDEST DUP5 SWAP1 PUSH4 0x25C00723 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST DUP5 PUSH4 0x313C8981 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x280 PUSH2 0x276 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x4 CALLDATALOAD CALLER ISZERO PUSH2 0x30F JUMPI PUSH1 0x2 SLOAD DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2F9 JUMPI PUSH1 0x2 SSTORE PUSH1 0x0 SWAP1 CALLER DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE DUP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x20 CALLER SWAP4 LOG3 DUP1 RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0xEC442F05 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x4 SLOAD PUSH2 0x347 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x3E6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x387 JUMPI JUMPDEST PUSH2 0x383 DUP4 PUSH2 0x36F DUP2 DUP6 SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x790 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x3CC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x36F PUSH2 0x35F JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x36F SWAP1 POP PUSH2 0x35F JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x4A9 PUSH2 0x447 PUSH32 0x0 PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x470 PUSH32 0x0 PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x20 PUSH2 0x4B7 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x483 DUP4 DUP6 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x0 DUP5 MSTORE PUSH1 0x0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 DUP6 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x790 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x790 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP2 DUP1 DUP5 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4F0 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4E1 JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x528 PUSH2 0x7D1 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x562 PUSH2 0x7D1 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 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH2 0x596 PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x6 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x5D3 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x5DB PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 SWAP2 PUSH1 0x0 NOT DUP2 LT PUSH2 0x61B JUMPI JUMPDEST POP PUSH2 0x280 SWAP4 POP PUSH2 0x8F2 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x68A JUMPI DUP5 ISZERO PUSH2 0x674 JUMPI CALLER ISZERO PUSH2 0x65E JUMPI PUSH2 0x280 SWAP5 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB CALLER AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP5 PUSH2 0x610 JUMP JUMPDEST PUSH4 0x4A1406B1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0xE602DF05 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 SWAP1 PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x280 PUSH2 0x6E1 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0xABD JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x70A DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x3E6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x731 JUMPI PUSH2 0x383 DUP4 PUSH2 0x36F DUP2 DUP6 SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x776 JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x36F PUSH2 0x35F JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x75E JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x7BC JUMPI POP POP DUP3 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP5 SWAP6 DUP5 ADD ADD MSTORE PUSH1 0x1F DUP1 NOT SWAP2 ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x79B JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x10A JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x10A JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x82D JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x817 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x847 DUP4 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x89D JUMPI POP PUSH1 0x1 EQ PUSH2 0x863 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x883 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x8DC 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x98B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT PUSH2 0x971 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 SWAP2 PUSH1 0x64 SWAP3 DUP5 PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH4 0x4B637E8F PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA94 JUMPI JUMPDEST ISZERO PUSH2 0x9FC JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0xA8E PUSH1 0xC0 DUP3 PUSH2 0x8BA JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x674 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x65E JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 DUP4 PUSH1 0x0 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP6 PUSH1 0x0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0xB5D JUMPI PUSH1 0x40 DUP1 MLOAD SWAP3 PUSH2 0xB48 DUP3 DUP6 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP6 MSTORE DUP5 ADD SWAP2 PUSH1 0x1F NOT ADD CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB88 DUP2 PUSH2 0xB81 DUP2 PUSH1 0x5 PUSH2 0x837 JUMP JUMPDEST SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0xBAF JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0xB5D JUMPI PUSH1 0x40 DUP1 MLOAD SWAP3 PUSH2 0xB48 DUP3 DUP6 PUSH2 0x8BA JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB88 DUP2 PUSH2 0xB81 DUP2 PUSH1 0x6 PUSH2 0x837 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0xC4B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH1 0x0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0xC3F JUMPI PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xC33 JUMPI SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH1 0x0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x4 DUP2 LT ISZERO PUSH2 0xCC9 JUMPI DUP1 PUSH2 0xC6D JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 SUB PUSH2 0xC88 JUMPI PUSH4 0xF645EEDF PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP2 SUB PUSH2 0xCA6 JUMPI DUP3 PUSH4 0xFCE698F7 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x3 PUSH1 0x0 SWAP3 EQ PUSH2 0xCB6 JUMPI POP POP JUMP JUMPDEST PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP3 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 SWAP2 POP REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 JUMP LT SLOAD 0x1F 0xC8 0xB2 CALLVALUE 0xB4 CREATE JUMP 0xFB 0xB2 SWAP11 PUSH17 0x848F66F05CDA18C1223A2129D48EBB385F PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"471:290:19:-:0;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;471:290:19;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;471:290:19;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;471:290:19;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;471:290:19;;;;;;;;;;-1:-1:-1;;;;;471:290:19;;;;1648:13:2;471:290:19;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;1648:13:2;471:290:19;;;;;1648:13:2;471:290:19;;;;;-1:-1:-1;;;;;471:290:19;;;;1671:17:2;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;1648:13:2;471:290:19;;;;;1671:17:2;471:290:19;;3501:45:14;;;:::i;:::-;3493:53;;3567:51;;;:::i;:::-;3556:62;;471:290:19;3642:22:14;;3628:36;;;;471:290:19;3691:25:14;;3674:42;;;3744:13;3727:30;;471:290:19;;4304:80:14;471:290:19;4304:80:14;;2079:95;;;;471:290:19;2079:95:14;;;;;;;3744:13;2079:95;;;;4378:4;3727:30;2079:95;;;3727:30;4304:80;;;;;;:::i;:::-;471:290:19;4294:91:14;;2079:95;3767:48;4378:4;4304:80;3825:27;471:290:19;;;;;;;;2079:95:14;471:290:19;;;;;3727:30:14;471:290:19;;;;;4304:80:14;471:290:19;;;;;3628:36:14;471:290:19;;;;;3674:42:14;471:290:19;;;;;3493:53:14;471:290:19;;;;;3556:62:14;471:290:19;;;;;;;;;;-1:-1:-1;471:290:19;;;;;1671:17:2;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;;;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:2;471:290:19;;;;;;;;;;1648:13:2;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1671:17:2;-1:-1:-1;471:290:19;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;471:290:19;;;;;;;;-1:-1:-1;471:290:19;;1671:17:2;471:290:19;;-1:-1:-1;471:290:19;;;;;;;;;;;;-1:-1:-1;471:290:19;;1671:17:2;471:290:19;;-1:-1:-1;471:290:19;;;;;-1:-1:-1;471:290:19;;;;;1648:13:2;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;;;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:2;471:290:19;;;;;;;;;;1648:13:2;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1648:13:2;-1:-1:-1;471:290:19;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;-1:-1:-1;;;;;471:290:19;;;;;;;;;;:::o;2887:340:10:-;;471:290:19;;3032:2:10;3010:24;;3006:215;3032:2;;;471:290:19;;1854:2:10;471:290:19;;1840:16:10;1836:72;;3032:2;471:290:19;;;;2079:95:14;3032:2:10;471:290:19;;;;1949:36:10;3050:27;:::o;471:290:19:-;;;;3032:2:10;471:290:19;;;;;1949:36:10;3050:27;:::o;1836:72::-;471:290:19;;1879:18:10;;;;;;3032:2;1879:18;;;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:2:10;471:290:19;;;;;;;1879:18:10;;;;471:290:19;3032:2:10;471:290:19;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;3006:215:10;-1:-1:-1;;;;;471:290:19;;;;;;;;;;;;;;;;3006:215:10;3032:2;471:290:19;;;;;;;;;;3006:215:10;471:290:19;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:10;3168:42;:::o;471:290:19:-;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1390:66:10;3168:42;:::o;471:290:19:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;;;;;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2887:340:10;;471:290:19;;3032:2:10;3010:24;;3006:215;3032:2;;;471:290:19;;1854:2:10;471:290:19;;1840:16:10;1836:72;;3032:2;471:290:19;;;;2079:95:14;3032:2:10;471:290:19;;;;1949:36:10;3050:27;:::o;1836:72::-;471:290:19;;1879:18:10;;;;;;3032:2;1879:18;;;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;1854:2:10;471:290:19;;;;;;;1879:18:10;;;;471:290:19;3032:2:10;471:290:19;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;3006:215:10;-1:-1:-1;;;;;471:290:19;;;;3601:16:14;471:290:19;;;;;;;;;;;3006:215:10;3032:2;471:290:19;;;;;;;;;;3006:215:10;471:290:19;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:16:14;471:290:19;1390:66:10;3168:42;:::o;471:290:19:-;;;;-1:-1:-1;471:290:19;;;;;;;;;;3601:16:14;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;3601:16:14;471:290:19;1390:66:10;3168:42;:::o;471:290:19:-;;;;;;;;;;;;;;;;;;;;;;;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;3601:16:14;471:290:19;;;3032:2:10;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"abi_decode_address":{"entryPoint":2023,"id":null,"parameterSlots":0,"returnSlots":1},"abi_decode_address_5759":{"entryPoint":2001,"id":null,"parameterSlots":0,"returnSlots":1},"abi_encode_string":{"entryPoint":1936,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_string_storage":{"entryPoint":2103,"id":null,"parameterSlots":2,"returnSlots":1},"extract_byte_array_length":{"entryPoint":2045,"id":null,"parameterSlots":1,"returnSlots":1},"finalize_allocation":{"entryPoint":2234,"id":null,"parameterSlots":2,"returnSlots":0},"fun_approve":{"entryPoint":2749,"id":627,"parameterSlots":3,"returnSlots":0},"fun_domainSeparatorV4":{"entryPoint":2465,"id":3334,"parameterSlots":0,"returnSlots":1},"fun_throwError":{"entryPoint":3159,"id":3210,"parameterSlots":2,"returnSlots":0},"fun_toStringWithFallback":{"entryPoint":2852,"id":1305,"parameterSlots":1,"returnSlots":1},"fun_toStringWithFallback_5767":{"entryPoint":2955,"id":1305,"parameterSlots":1,"returnSlots":1},"fun_transfer":{"entryPoint":2290,"id":406,"parameterSlots":3,"returnSlots":0},"fun_tryRecover":{"entryPoint":3010,"id":3125,"parameterSlots":4,"returnSlots":3}},"generatedSources":[],"immutableReferences":{"3232":[{"length":32,"start":2522}],"3234":[{"length":32,"start":2711}],"3236":[{"length":32,"start":2468}],"3238":[{"length":32,"start":2601}],"3240":[{"length":32,"start":2639}],"3243":[{"length":32,"start":1059}],"3246":[{"length":32,"start":1100}]},"linkReferences":{},"object":"608080604052600436101561001357600080fd5b60003560e01c90816306fdde03146106eb57508063095ea7b3146106c557806318160ddd146106a757806323b872dd146105ba578063313ce5671461059e5780633644e5151461057b57806370a08231146105415780637ecebe001461050757806384b0196e1461040a57806395d89b4114610325578063a0712d681461028b578063a9059cbb1461025a578063d505accf1461010f5763dd62ed3e146100b957600080fd5b3461010a57604036600319011261010a576100d26107d1565b6100da6107e7565b6001600160a01b039182166000908152600160209081526040808320949093168252928352819020549051908152f35b600080fd5b3461010a5760e036600319011261010a576101286107d1565b6101306107e7565b604435906064359260843560ff8116810361010a578442116102455761020661020f9160018060a01b038416968760005260076020526040600020908154916001830190556040519060208201927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c984528a604084015260018060a01b038916606084015289608084015260a083015260c082015260c081526101d460e0826108ba565b5190206101df6109a1565b906040519161190160f01b83526002830152602282015260c43591604260a4359220610bc2565b90929192610c57565b6001600160a01b031684810361022c575061022a9350610abd565b005b84906325c0072360e11b60005260045260245260446000fd5b8463313c898160e11b60005260045260246000fd5b3461010a57604036600319011261010a576102806102766107d1565b60243590336108f2565b602060405160018152f35b3461010a57602036600319011261010a57600435331561030f576002548181018091116102f9576002556000903382528160205260408220818154019055604051908152817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60203393a380f35b634e487b7160e01b600052601160045260246000fd5b63ec442f0560e01b600052600060045260246000fd5b3461010a57600036600319011261010a576040516000600454610347816107fd565b80845290600181169081156103e65750600114610387575b6103838361036f818503826108ba565b604051918291602083526020830190610790565b0390f35b600460009081527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106103cc5750909150810160200161036f61035f565b9192600181602092548385880101520191019092916103b4565b60ff191660208086019190915291151560051b8401909101915061036f905061035f565b3461010a57600036600319011261010a576104a96104477f0000000000000000000000000000000000000000000000000000000000000000610b24565b6104707f0000000000000000000000000000000000000000000000000000000000000000610b8b565b60206104b76040519261048383856108ba565b600084526000368137604051958695600f60f81b875260e08588015260e0870190610790565b908582036040870152610790565b466060850152306080850152600060a085015283810360c085015281808451928381520193019160005b8281106104f057505050500390f35b8351855286955093810193928101926001016104e1565b3461010a57602036600319011261010a576001600160a01b036105286107d1565b1660005260076020526020604060002054604051908152f35b3461010a57602036600319011261010a576001600160a01b036105626107d1565b1660005260006020526020604060002054604051908152f35b3461010a57600036600319011261010a5760206105966109a1565b604051908152f35b3461010a57600036600319011261010a57602060405160068152f35b3461010a57606036600319011261010a576105d36107d1565b6105db6107e7565b6001600160a01b038216600081815260016020908152604080832033845290915290205490926044359291600019811061061b575b5061028093506108f2565b83811061068a57841561067457331561065e57610280946000526001602052604060002060018060a01b0333166000526020528360406000209103905584610610565b634a1406b160e11b600052600060045260246000fd5b63e602df0560e01b600052600060045260246000fd5b8390637dc7a0d960e11b6000523360045260245260445260646000fd5b3461010a57600036600319011261010a576020600254604051908152f35b3461010a57604036600319011261010a576102806106e16107d1565b6024359033610abd565b3461010a57600036600319011261010a57600060035461070a816107fd565b80845290600181169081156103e65750600114610731576103838361036f818503826108ba565b600360009081527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b8082106107765750909150810160200161036f61035f565b91926001816020925483858801015201910190929161075e565b919082519283825260005b8481106107bc575050826000602080949584010152601f8019910116010190565b8060208092840101518282860101520161079b565b600435906001600160a01b038216820361010a57565b602435906001600160a01b038216820361010a57565b90600182811c9216801561082d575b602083101461081757565b634e487b7160e01b600052602260045260246000fd5b91607f169161080c565b60009291815491610847836107fd565b808352926001811690811561089d575060011461086357505050565b60009081526020812093945091925b838310610883575060209250010190565b600181602092949394548385870101520191019190610872565b915050602093945060ff929192191683830152151560051b010190565b90601f8019910116810190811067ffffffffffffffff8211176108dc57604052565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031690811561098b576001600160a01b031691821561030f5760008281528060205260408120548281106109715791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b634b637e8f60e11b600052600060045260246000fd5b307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161480610a94575b156109fc577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a08152610a8e60c0826108ba565b51902090565b507f000000000000000000000000000000000000000000000000000000000000000046146109d3565b6001600160a01b0316908115610674576001600160a01b031691821561065e5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b60ff8114610b6e5760ff811690601f8211610b5d576040805192610b4882856108ba565b6020808552840191601f190136833783525290565b632cd44ac360e21b60005260046000fd5b50604051610b8881610b81816005610837565b03826108ba565b90565b60ff8114610baf5760ff811690601f8211610b5d576040805192610b4882856108ba565b50604051610b8881610b81816006610837565b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411610c4b579160209360809260ff60009560405194855216868401526040830152606082015282805260015afa15610c3f576000516001600160a01b03811615610c335790600090600090565b50600090600190600090565b6040513d6000823e3d90fd5b50505060009160039190565b9190916004811015610cc95780610c6d57509050565b600060018203610c885763f645eedf60e01b60005260046000fd5b5060028103610ca6578263fce698f760e01b60005260045260246000fd5b9091600360009214610cb6575050565b6335e2f38360e21b825260045260249150fd5b634e487b7160e01b600052602160045260246000fdfea2646970667358221220b25610541fc8b234b4f056fbb29a70848f66f05cda18c1223a2129d48ebb385f64736f6c634300081c0033","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 0x6EB JUMPI POP DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x6C5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x6A7 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x5BA JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x59E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x57B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x541 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x507 JUMPI DUP1 PUSH4 0x84B0196E EQ PUSH2 0x40A JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x325 JUMPI DUP1 PUSH4 0xA0712D68 EQ PUSH2 0x28B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x25A JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x10F JUMPI PUSH4 0xDD62ED3E EQ PUSH2 0xB9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0xD2 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0xDA PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP4 AND DUP3 MSTORE SWAP3 DUP4 MSTORE DUP2 SWAP1 KECCAK256 SLOAD SWAP1 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0xE0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x128 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x130 PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x44 CALLDATALOAD SWAP1 PUSH1 0x64 CALLDATALOAD SWAP3 PUSH1 0x84 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 SUB PUSH2 0x10A JUMPI DUP5 TIMESTAMP GT PUSH2 0x245 JUMPI PUSH2 0x206 PUSH2 0x20F SWAP2 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP7 DUP8 PUSH1 0x0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP1 DUP2 SLOAD SWAP2 PUSH1 0x1 DUP4 ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 PUSH1 0x20 DUP3 ADD SWAP3 PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP5 MSTORE DUP11 PUSH1 0x40 DUP5 ADD MSTORE PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB DUP10 AND PUSH1 0x60 DUP5 ADD MSTORE DUP10 PUSH1 0x80 DUP5 ADD MSTORE PUSH1 0xA0 DUP4 ADD MSTORE PUSH1 0xC0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 MSTORE PUSH2 0x1D4 PUSH1 0xE0 DUP3 PUSH2 0x8BA JUMP JUMPDEST MLOAD SWAP1 KECCAK256 PUSH2 0x1DF PUSH2 0x9A1 JUMP JUMPDEST SWAP1 PUSH1 0x40 MLOAD SWAP2 PUSH2 0x1901 PUSH1 0xF0 SHL DUP4 MSTORE PUSH1 0x2 DUP4 ADD MSTORE PUSH1 0x22 DUP3 ADD MSTORE PUSH1 0xC4 CALLDATALOAD SWAP2 PUSH1 0x42 PUSH1 0xA4 CALLDATALOAD SWAP3 KECCAK256 PUSH2 0xBC2 JUMP JUMPDEST SWAP1 SWAP3 SWAP2 SWAP3 PUSH2 0xC57 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 DUP2 SUB PUSH2 0x22C JUMPI POP PUSH2 0x22A SWAP4 POP PUSH2 0xABD JUMP JUMPDEST STOP JUMPDEST DUP5 SWAP1 PUSH4 0x25C00723 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 PUSH1 0x0 REVERT JUMPDEST DUP5 PUSH4 0x313C8981 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x280 PUSH2 0x276 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0x8F2 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x4 CALLDATALOAD CALLER ISZERO PUSH2 0x30F JUMPI PUSH1 0x2 SLOAD DUP2 DUP2 ADD DUP1 SWAP2 GT PUSH2 0x2F9 JUMPI PUSH1 0x2 SSTORE PUSH1 0x0 SWAP1 CALLER DUP3 MSTORE DUP2 PUSH1 0x20 MSTORE PUSH1 0x40 DUP3 KECCAK256 DUP2 DUP2 SLOAD ADD SWAP1 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE DUP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x20 CALLER SWAP4 LOG3 DUP1 RETURN JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0xEC442F05 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x4 SLOAD PUSH2 0x347 DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x3E6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x387 JUMPI JUMPDEST PUSH2 0x383 DUP4 PUSH2 0x36F DUP2 DUP6 SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP2 DUP3 SWAP2 PUSH1 0x20 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP1 PUSH2 0x790 JUMP JUMPDEST SUB SWAP1 RETURN JUMPDEST PUSH1 0x4 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0x8A35ACFBC15FF81A39AE7D344FD709F28E8600B4AA8C65C6B64BFE7FE36BD19B SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x3CC JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x36F PUSH2 0x35F JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0xFF NOT AND PUSH1 0x20 DUP1 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE SWAP2 ISZERO ISZERO PUSH1 0x5 SHL DUP5 ADD SWAP1 SWAP2 ADD SWAP2 POP PUSH2 0x36F SWAP1 POP PUSH2 0x35F JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x4A9 PUSH2 0x447 PUSH32 0x0 PUSH2 0xB24 JUMP JUMPDEST PUSH2 0x470 PUSH32 0x0 PUSH2 0xB8B JUMP JUMPDEST PUSH1 0x20 PUSH2 0x4B7 PUSH1 0x40 MLOAD SWAP3 PUSH2 0x483 DUP4 DUP6 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x0 DUP5 MSTORE PUSH1 0x0 CALLDATASIZE DUP2 CALLDATACOPY PUSH1 0x40 MLOAD SWAP6 DUP7 SWAP6 PUSH1 0xF PUSH1 0xF8 SHL DUP8 MSTORE PUSH1 0xE0 DUP6 DUP9 ADD MSTORE PUSH1 0xE0 DUP8 ADD SWAP1 PUSH2 0x790 JUMP JUMPDEST SWAP1 DUP6 DUP3 SUB PUSH1 0x40 DUP8 ADD MSTORE PUSH2 0x790 JUMP JUMPDEST CHAINID PUSH1 0x60 DUP6 ADD MSTORE ADDRESS PUSH1 0x80 DUP6 ADD MSTORE PUSH1 0x0 PUSH1 0xA0 DUP6 ADD MSTORE DUP4 DUP2 SUB PUSH1 0xC0 DUP6 ADD MSTORE DUP2 DUP1 DUP5 MLOAD SWAP3 DUP4 DUP2 MSTORE ADD SWAP4 ADD SWAP2 PUSH1 0x0 JUMPDEST DUP3 DUP2 LT PUSH2 0x4F0 JUMPI POP POP POP POP SUB SWAP1 RETURN JUMPDEST DUP4 MLOAD DUP6 MSTORE DUP7 SWAP6 POP SWAP4 DUP2 ADD SWAP4 SWAP3 DUP2 ADD SWAP3 PUSH1 0x1 ADD PUSH2 0x4E1 JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x528 PUSH2 0x7D1 JUMP JUMPDEST AND PUSH1 0x0 MSTORE PUSH1 0x7 PUSH1 0x20 MSTORE PUSH1 0x20 PUSH1 0x40 PUSH1 0x0 KECCAK256 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x20 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB PUSH2 0x562 PUSH2 0x7D1 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 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH2 0x596 PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x6 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x60 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x5D3 PUSH2 0x7D1 JUMP JUMPDEST PUSH2 0x5DB PUSH2 0x7E7 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP1 SWAP3 PUSH1 0x44 CALLDATALOAD SWAP3 SWAP2 PUSH1 0x0 NOT DUP2 LT PUSH2 0x61B JUMPI JUMPDEST POP PUSH2 0x280 SWAP4 POP PUSH2 0x8F2 JUMP JUMPDEST DUP4 DUP2 LT PUSH2 0x68A JUMPI DUP5 ISZERO PUSH2 0x674 JUMPI CALLER ISZERO PUSH2 0x65E JUMPI PUSH2 0x280 SWAP5 PUSH1 0x0 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 PUSH1 0x1 DUP1 PUSH1 0xA0 SHL SUB CALLER AND PUSH1 0x0 MSTORE PUSH1 0x20 MSTORE DUP4 PUSH1 0x40 PUSH1 0x0 KECCAK256 SWAP2 SUB SWAP1 SSTORE DUP5 PUSH2 0x610 JUMP JUMPDEST PUSH4 0x4A1406B1 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH4 0xE602DF05 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP4 SWAP1 PUSH4 0x7DC7A0D9 PUSH1 0xE1 SHL PUSH1 0x0 MSTORE CALLER PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE PUSH1 0x64 PUSH1 0x0 REVERT JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x20 PUSH1 0x2 SLOAD PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE RETURN JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x40 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH2 0x280 PUSH2 0x6E1 PUSH2 0x7D1 JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 CALLER PUSH2 0xABD JUMP JUMPDEST CALLVALUE PUSH2 0x10A JUMPI PUSH1 0x0 CALLDATASIZE PUSH1 0x3 NOT ADD SLT PUSH2 0x10A JUMPI PUSH1 0x0 PUSH1 0x3 SLOAD PUSH2 0x70A DUP2 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP5 MSTORE SWAP1 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x3E6 JUMPI POP PUSH1 0x1 EQ PUSH2 0x731 JUMPI PUSH2 0x383 DUP4 PUSH2 0x36F DUP2 DUP6 SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x3 PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH32 0xC2575A0E9E593C00F959F8C92F12DB2869C3395A3B0502D05E2516446F71F85B SWAP4 SWAP3 POP SWAP1 JUMPDEST DUP1 DUP3 LT PUSH2 0x776 JUMPI POP SWAP1 SWAP2 POP DUP2 ADD PUSH1 0x20 ADD PUSH2 0x36F PUSH2 0x35F JUMP JUMPDEST SWAP2 SWAP3 PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SLOAD DUP4 DUP6 DUP9 ADD ADD MSTORE ADD SWAP2 ADD SWAP1 SWAP3 SWAP2 PUSH2 0x75E JUMP JUMPDEST SWAP2 SWAP1 DUP3 MLOAD SWAP3 DUP4 DUP3 MSTORE PUSH1 0x0 JUMPDEST DUP5 DUP2 LT PUSH2 0x7BC JUMPI POP POP DUP3 PUSH1 0x0 PUSH1 0x20 DUP1 SWAP5 SWAP6 DUP5 ADD ADD MSTORE PUSH1 0x1F DUP1 NOT SWAP2 ADD AND ADD ADD SWAP1 JUMP JUMPDEST DUP1 PUSH1 0x20 DUP1 SWAP3 DUP5 ADD ADD MLOAD DUP3 DUP3 DUP7 ADD ADD MSTORE ADD PUSH2 0x79B JUMP JUMPDEST PUSH1 0x4 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x10A JUMPI JUMP JUMPDEST PUSH1 0x24 CALLDATALOAD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND DUP3 SUB PUSH2 0x10A JUMPI JUMP JUMPDEST SWAP1 PUSH1 0x1 DUP3 DUP2 SHR SWAP3 AND DUP1 ISZERO PUSH2 0x82D JUMPI JUMPDEST PUSH1 0x20 DUP4 LT EQ PUSH2 0x817 JUMPI JUMP JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP2 PUSH1 0x7F AND SWAP2 PUSH2 0x80C JUMP JUMPDEST PUSH1 0x0 SWAP3 SWAP2 DUP2 SLOAD SWAP2 PUSH2 0x847 DUP4 PUSH2 0x7FD JUMP JUMPDEST DUP1 DUP4 MSTORE SWAP3 PUSH1 0x1 DUP2 AND SWAP1 DUP2 ISZERO PUSH2 0x89D JUMPI POP PUSH1 0x1 EQ PUSH2 0x863 JUMPI POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 KECCAK256 SWAP4 SWAP5 POP SWAP2 SWAP3 JUMPDEST DUP4 DUP4 LT PUSH2 0x883 JUMPI POP PUSH1 0x20 SWAP3 POP ADD ADD SWAP1 JUMP JUMPDEST PUSH1 0x1 DUP2 PUSH1 0x20 SWAP3 SWAP5 SWAP4 SWAP5 SLOAD DUP4 DUP6 DUP8 ADD ADD MSTORE ADD SWAP2 ADD SWAP2 SWAP1 PUSH2 0x872 JUMP JUMPDEST SWAP2 POP POP PUSH1 0x20 SWAP4 SWAP5 POP PUSH1 0xFF SWAP3 SWAP2 SWAP3 NOT AND DUP4 DUP4 ADD MSTORE ISZERO ISZERO PUSH1 0x5 SHL ADD ADD SWAP1 JUMP JUMPDEST SWAP1 PUSH1 0x1F DUP1 NOT SWAP2 ADD AND DUP2 ADD SWAP1 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR PUSH2 0x8DC 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 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x98B JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x30F JUMPI PUSH1 0x0 DUP3 DUP2 MSTORE DUP1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 LT PUSH2 0x971 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 SWAP2 PUSH1 0x64 SWAP3 DUP5 PUSH4 0x391434E3 PUSH1 0xE2 SHL DUP5 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 MSTORE PUSH1 0x44 MSTORE REVERT JUMPDEST PUSH4 0x4B637E8F PUSH1 0xE1 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH32 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA94 JUMPI JUMPDEST ISZERO PUSH2 0x9FC JUMPI PUSH32 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 ADD SWAP1 PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP3 MSTORE PUSH32 0x0 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x0 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 MSTORE PUSH2 0xA8E PUSH1 0xC0 DUP3 PUSH2 0x8BA JUMP JUMPDEST MLOAD SWAP1 KECCAK256 SWAP1 JUMP JUMPDEST POP PUSH32 0x0 CHAINID EQ PUSH2 0x9D3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 DUP2 ISZERO PUSH2 0x674 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP2 DUP3 ISZERO PUSH2 0x65E JUMPI PUSH1 0x20 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP2 DUP4 PUSH1 0x0 MSTORE PUSH1 0x1 DUP3 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP6 PUSH1 0x0 MSTORE DUP3 MSTORE DUP1 PUSH1 0x40 PUSH1 0x0 KECCAK256 SSTORE PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE LOG3 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0xB6E JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0xB5D JUMPI PUSH1 0x40 DUP1 MLOAD SWAP3 PUSH2 0xB48 DUP3 DUP6 PUSH2 0x8BA JUMP JUMPDEST PUSH1 0x20 DUP1 DUP6 MSTORE DUP5 ADD SWAP2 PUSH1 0x1F NOT ADD CALLDATASIZE DUP4 CALLDATACOPY DUP4 MSTORE MSTORE SWAP1 JUMP JUMPDEST PUSH4 0x2CD44AC3 PUSH1 0xE2 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB88 DUP2 PUSH2 0xB81 DUP2 PUSH1 0x5 PUSH2 0x837 JUMP JUMPDEST SUB DUP3 PUSH2 0x8BA JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0xFF DUP2 EQ PUSH2 0xBAF JUMPI PUSH1 0xFF DUP2 AND SWAP1 PUSH1 0x1F DUP3 GT PUSH2 0xB5D JUMPI PUSH1 0x40 DUP1 MLOAD SWAP3 PUSH2 0xB48 DUP3 DUP6 PUSH2 0x8BA JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB88 DUP2 PUSH2 0xB81 DUP2 PUSH1 0x6 PUSH2 0x837 JUMP JUMPDEST SWAP2 SWAP1 PUSH32 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0 DUP5 GT PUSH2 0xC4B JUMPI SWAP2 PUSH1 0x20 SWAP4 PUSH1 0x80 SWAP3 PUSH1 0xFF PUSH1 0x0 SWAP6 PUSH1 0x40 MLOAD SWAP5 DUP6 MSTORE AND DUP7 DUP5 ADD MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE DUP3 DUP1 MSTORE PUSH1 0x1 GAS STATICCALL ISZERO PUSH2 0xC3F JUMPI PUSH1 0x0 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO PUSH2 0xC33 JUMPI SWAP1 PUSH1 0x0 SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST POP PUSH1 0x0 SWAP1 PUSH1 0x1 SWAP1 PUSH1 0x0 SWAP1 JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x0 DUP3 RETURNDATACOPY RETURNDATASIZE SWAP1 REVERT JUMPDEST POP POP POP PUSH1 0x0 SWAP2 PUSH1 0x3 SWAP2 SWAP1 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 PUSH1 0x4 DUP2 LT ISZERO PUSH2 0xCC9 JUMPI DUP1 PUSH2 0xC6D JUMPI POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 SUB PUSH2 0xC88 JUMPI PUSH4 0xF645EEDF PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x2 DUP2 SUB PUSH2 0xCA6 JUMPI DUP3 PUSH4 0xFCE698F7 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP1 SWAP2 PUSH1 0x3 PUSH1 0x0 SWAP3 EQ PUSH2 0xCB6 JUMPI POP POP JUMP JUMPDEST PUSH4 0x35E2F383 PUSH1 0xE2 SHL DUP3 MSTORE PUSH1 0x4 MSTORE PUSH1 0x24 SWAP2 POP REVERT JUMPDEST PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x21 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xB2 JUMP LT SLOAD 0x1F 0xC8 0xB2 CALLVALUE 0xB4 CREATE JUMP 0xFB 0xB2 SWAP11 PUSH17 0x848F66F05CDA18C1223A2129D48EBB385F PUSH5 0x736F6C6343 STOP ADDMOD SHR STOP CALLER ","sourceMap":"471:290:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;1886:15:4;;:26;1882:97;;7051:25:13;7105:8;471:290:19;;;;;;;;;;;;1121:7:8;471:290:19;;;;;;;;;;;;;;;;2020:78:4;471:290:19;2020:78:4;;471:290:19;1024:95:4;471:290:19;;1024:95:4;471:290:19;1024:95:4;;471:290:19;;;;;;;;;1024:95:4;;471:290:19;1024:95:4;471:290:19;1024:95:4;;471:290:19;;1024:95:4;;471:290:19;;1024:95:4;;471:290:19;;2020:78:4;;;471:290:19;2020:78:4;;:::i;:::-;471:290:19;2010:89:4;;5153:20:14;;:::i;:::-;3993:249:15;471:290:19;3993:249:15;;-1:-1:-1;;;3993:249:15;;;;;;;;;;471:290:19;;;3993:249:15;471:290:19;;3993:249:15;;7051:25:13;:::i;:::-;7105:8;;;;;:::i;:::-;-1:-1:-1;;;;;471:290:19;2223:15:4;;;2219:88;;8823:4:2;;;;;:::i;:::-;471:290:19;2219:88:4;2261:35;;;;;471:290:19;2261:35:4;471:290:19;;;;;;2261:35:4;1882:97;1935:33;;;;471:290:19;1935:33:4;471:290:19;;;;1935:33:4;471:290:19;;;;;;-1:-1:-1;;471:290:19;;;;3440:5:2;471:290:19;;:::i;:::-;;;735:10:7;;3440:5:2;:::i;:::-;471:290:19;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;733:10;7509:21:2;7505:91;;6214:21;471:290:19;;;;;;;;;6214:21:2;471:290:19;;733:10;;471:290;;;;;;;;;;;;;;;;;;;733:10;7064:25:2;471:290:19;733:10;7064:25:2;;471:290:19;;;;;;;;;;;;;;7505:91:2;7553:32;;;471:290:19;7553:32:2;471:290:19;;;;;7553:32:2;471:290:19;;;;;;-1:-1:-1;;471:290:19;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;471:290:19;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;-1:-1:-1;471:290:19;;;;;;;;-1:-1:-1;;471:290:19;;;;;6198:41:14;:5;:41;:::i;:::-;6653:47;:8;:47;:::i;:::-;471:290:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;5689:13:14;471:290:19;;;;5724:4:14;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;-1:-1:-1;;;;;471:290:19;;:::i;:::-;;;;624:7:8;471:290:19;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;-1:-1:-1;;;;;471:290:19;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;2744:20:4;;:::i;:::-;471:290:19;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;;664:1;471:290;;;;;;;;;-1:-1:-1;;471:290:19;;;;;;:::i;:::-;;;:::i;:::-;-1:-1:-1;;;;;471:290:19;;;;;;;;;;;;;;;735:10:7;471:290:19;;;;;;;;;;;;;;-1:-1:-1;;10561:36:2;;10557:309;;471:290:19;4967:5:2;;;;;:::i;10557:309::-;10617:24;;;10613:130;;9794:19;;9790:89;;735:10:7;9892:21:2;9888:90;;4967:5;471:290:19;;;;;;;;;;;;;;735:10:7;471:290:19;-1:-1:-1;471:290:19;;;;;-1:-1:-1;471:290:19;;;;;10557:309:2;;;9888:90;9936:31;;;471:290:19;9936:31:2;471:290:19;;;;;9936:31:2;9790:89;9836:32;;;471:290:19;9836:32:2;471:290:19;;;;;9836:32:2;10613:130;10668:60;;;;;471:290:19;10668:60:2;735:10:7;471:290:19;;;;;;;;10668:60:2;471:290:19;;;;;;-1:-1:-1;;471:290:19;;;;;2908:12:2;471:290:19;;;;;;;;;;;;;-1:-1:-1;;471:290:19;;;;8823:4:2;471:290:19;;:::i;:::-;;;735:10:7;;8823:4:2;:::i;471:290:19:-;;;;;;-1:-1:-1;;471:290:19;;;;;1837:5:2;471:290:19;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1837:5:2;471:290:19;;;;;;;-1:-1:-1;471:290:19;;;;;;;-1:-1:-1;471:290:19;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;471:290:19;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;471:290:19;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;471:290:19;;;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;471:290:19;;;;;-1:-1:-1;471:290:19;5374:300:2;-1:-1:-1;;;;;471:290:19;;5457:18:2;;5453:86;;-1:-1:-1;;;;;471:290:19;;5552:16:2;;5548:86;;5473:1;471:290:19;;;;;;;;;;6321:19:2;;;6317:115;;471:290:19;;;;7064:25:2;471:290:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7064:25:2;5374:300::o;6317:115::-;6367:50;471:290:19;6367:50:2;;;;;;;;471:290:19;;;;;6367:50:2;5453:86;5498:30;;;5473:1;5498:30;5473:1;5498:30;471:290:19;;5473:1:2;5498:30;3945:262:14;4029:4;4038:11;-1:-1:-1;;;;;471:290:19;4021:28:14;;:63;;3945:262;4017:184;;;4107:22;4100:29;:::o;4017:184::-;471:290:19;;4304:80:14;;;471:290:19;2079:95:14;471:290:19;;4326:11:14;471:290:19;2079:95:14;;471:290:19;4339:14:14;2079:95;;;471:290:19;4355:13:14;2079:95;;;471:290:19;4029:4:14;2079:95;;;471:290:19;2079:95:14;4304:80;;;;;;:::i;:::-;471:290:19;4294:91:14;;4160:30;:::o;4021:63::-;4070:14;;4053:13;:31;4021:63;;9682:432:2;-1:-1:-1;;;;;471:290:19;;9794:19:2;;9790:89;;-1:-1:-1;;;;;471:290:19;;9892:21:2;;9888:90;;471:290:19;10066:31:2;471:290:19;;9811:1:2;471:290:19;8823:4:2;471:290:19;;;9811:1:2;471:290:19;;-1:-1:-1;471:290:19;;;;;-1:-1:-1;471:290:19;;;;;;;10066:31:2;9682:432::o;3368:267:10:-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;471:290:19;;;;;;;;:::i;:::-;2311:2:10;471:290:19;;;;;;-1:-1:-1;;471:290:19;;;;2324:106:10;;;3553:22;:::o;2675:69::-;2713:20;;;-1:-1:-1;2713:20:10;;-1:-1:-1;2713:20:10;3487:142;471:290:19;;;1390:66:10;;;;6225:13:14;1390:66:10;:::i;:::-;;;;:::i;:::-;3606:12;:::o;3368:267::-;1390:66;3491:46;;1390:66;;;2625:40;;2679:11;2688:2;2679:11;;2675:69;;471:290:19;;;;;;;;:::i;3487:142:10:-;471:290:19;;;1390:66:10;;;;6683:16:14;1390:66:10;:::i;5203:1551:13:-;;;6283:66;6270:79;;6266:164;;471:290:19;;;;;;-1:-1:-1;471:290:19;;;;;;;;;;;;;;;;;;;6541:24:13;;;;;;;;;-1:-1:-1;6541:24:13;-1:-1:-1;;;;;471:290:19;;6579:20:13;6575:113;;6698:49;-1:-1:-1;6698:49:13;-1:-1:-1;5203:1551:13;:::o;6575:113::-;6615:62;-1:-1:-1;6615:62:13;6541:24;6615:62;-1:-1:-1;6615:62:13;:::o;6541:24::-;471:290:19;;;-1:-1:-1;471:290:19;;;;;6266:164:13;6365:54;;;6381:1;6365:54;6385:30;6365:54;;:::o;7280:532::-;;;;471:290:19;;;;;;7366:29:13;;;7411:7;;;:::o;7362:444::-;7375:20;471:290:19;7462:38:13;;471:290:19;;7523:23:13;;;7375:20;7523:23;471:290:19;7375:20:13;7523:23;7458:348;-1:-1:-1;7576:35:13;7567:44;;7576:35;;7634:46;;;;7375:20;7634:46;471:290:19;;;7375:20:13;7634:46;7563:243;471:290:19;;7710:30:13;7375:20;7701:39;;7697:109;;7563:243;;7280:532::o;7697:109::-;-1:-1:-1;;;7763:32:13;;471:290:19;;;;-1:-1:-1;7763:32:13;471:290:19;;;;7375:20:13;471:290:19;;;;;7375:20:13;471:290:19"},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","mint(uint256)":"a0712d68","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"}},"metadata":"{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"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\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"ERC2612ExpiredSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"ERC2612InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentNonce\",\"type\":\"uint256\"}],\"name\":\"InvalidAccountNonce\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidShortString\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"str\",\"type\":\"string\"}],\"name\":\"StringTooLong\",\"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\":[],\"name\":\"EIP712DomainChanged\",\"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\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"eip712Domain\",\"outputs\":[{\"internalType\":\"bytes1\",\"name\":\"fields\",\"type\":\"bytes1\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"chainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"verifyingContract\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"},{\"internalType\":\"uint256[]\",\"name\":\"extensions\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"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\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"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\"}],\"devdoc\":{\"details\":\"Dev-only ERC20 used to mimic USDT-like behavior (6 decimals).      Name/symbol are intentionally \\\"MockUSDT\\\"/\\\"mUSDT\\\" to avoid collisions      with real tokens in wallets and token lists.\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature derives the `address(0)`.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"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.\"}}],\"ERC2612ExpiredSignature(uint256)\":[{\"details\":\"Permit deadline has expired.\"}],\"ERC2612InvalidSigner(address,address)\":[{\"details\":\"Mismatched signature.\"}],\"InvalidAccountNonce(address,uint256)\":[{\"details\":\"The nonce used for an `account` is not the expected current nonce.\"}]},\"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.\"},\"EIP712DomainChanged()\":{\"details\":\"MAY be emitted to signal that the domain could have changed.\"},\"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\":{\"DOMAIN_SEPARATOR()\":{\"details\":\"Returns the domain separator used in the encoding of the signature for {permit}, as defined by {EIP712}.\"},\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"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}.\"},\"eip712Domain()\":{\"details\":\"returns the fields and values that describe the domain separator used by this contract for EIP-712 signature.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"nonces(address)\":{\"details\":\"Returns the current nonce for `owner`. This value must be included whenever a signature is generated for {permit}. Every successful call to {permit} increases ``owner``'s nonce by one. This prevents a signature from being used multiple times.\"},\"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)\":{\"details\":\"Sets `value` as the allowance of `spender` over ``owner``'s tokens, given ``owner``'s signed approval. IMPORTANT: The same issues {IERC20-approve} has related to transaction ordering also apply here. Emits an {Approval} event. Requirements: - `spender` cannot be the zero address. - `deadline` must be a timestamp in the future. - `v`, `r` and `s` must be a valid `secp256k1` signature from `owner` over the EIP712-formatted function arguments. - the signature must use ``owner``'s current nonce (see {nonces}). For more information on the signature format, see the https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section]. CAUTION: See Security Considerations above.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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\":{\"contracts/mocks/MockUSDT.sol\":\"MockUSDT\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[],\"viaIR\":true},\"sources\":{\"@openzeppelin/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"@openzeppelin/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x41f6b3b9e030561e7896dbef372b499cc8d418a80c3884a4d65a68f2fdc7493a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://80b0992a11b2fd1f75ced2971696d07bbd1d19ce6761dd50d8b6d48aa435f42a\",\"dweb:/ipfs/QmZDe5xd2gXHjVEjv9t8C1KQ68K5T8qFwdinwQgmP3rF3x\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol\":{\"keccak256\":\"0xaa7f0646f49ebe2606eeca169f85c56451bbaeeeb06265fa076a03369a25d1d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ee931d4e832385765967efe6366dcc6d00d6a2d794f9c66ee38283c03882de9c\",\"dweb:/ipfs/QmR6SkuJGYxpQeLz38rBdghqaWqEPfzUsL9kBoXgEXKtbD\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"@openzeppelin/contracts/utils/Nonces.sol\":{\"keccak256\":\"0x0082767004fca261c332e9ad100868327a863a88ef724e844857128845ab350f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://132dce9686a54e025eb5ba5d2e48208f847a1ec3e60a3e527766d7bf53fb7f9e\",\"dweb:/ipfs/QmXn1a2nUZMpu2z6S88UoTfMVtY2YNh86iGrzJDYmMkKeZ\"]},\"@openzeppelin/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"@openzeppelin/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0x1fcf8cceb1a67e6c8512267e780933c4a3f63ef44756e6c818fda79be51c8402\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://617d7d57f6f9cd449068b4d23daf485676d083aae648e038d05eb3a13291de35\",\"dweb:/ipfs/QmPADWPiGaSzZDFNpFEUx4ZPqhzPkYncBpHyTfAGcfsqzy\"]},\"@openzeppelin/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0x81c274a60a7ae232ae3dc9ff3a4011b4849a853c13b0832cd3351bb1bb2f0dae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9da0c20dc74358a2a76330818f3bac9d1e2ce3371aec847b9cbf5d147fbae4f6\",\"dweb:/ipfs/QmeczhmnFv1hbXKGLwbYXY6Rrytc9a5A2YaRi5QMMgjPnb\"]},\"@openzeppelin/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x69f54c02b7d81d505910ec198c11ed4c6a728418a868b906b4a0cf29946fda84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8e25e4bdb7ae1f21d23bfee996e22736fc0ab44cfabedac82a757b1edc5623b9\",\"dweb:/ipfs/QmQdWQvB6JCP9ZMbzi8EvQ1PTETqkcTWrbcVurS7DKpa5n\"]},\"@openzeppelin/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0x0c60057e7351874f086db8dc9291b7ada9ad62cb7725befd2991430d04a74572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cdfd1fc36410d45046f88ff9864350146b194736c32834baa38d99b843ffbe\",\"dweb:/ipfs/QmdVmqgFKjgEBURy4KUwWDA6J1LEg1BKcHcXsx4nkeHAD2\"]},\"@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x26670fef37d4adf55570ba78815eec5f31cb017e708f61886add4fc4da665631\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b16d45febff462bafd8a5669f904796a835baf607df58a8461916d3bf4f08c59\",\"dweb:/ipfs/QmU2eJFpjmT4vxeJWJyLeQb8Xht1kdB8Y6MKLDPFA9WPux\"]},\"@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/mocks/MockUSDT.sol\":{\"keccak256\":\"0x04b3ed04e9b7b1e2d8149192d12d6debdf71c64eac73e0cb420db2331315612c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a738d74d8002fb1f7387bbff941cdc0b420a18a12069237e5d57cc5b3e79644\",\"dweb:/ipfs/QmXAZyJX97zoSpwFYxr2TBJZuqZ9jpwj6xodjdwXz4jSSi\"]}},\"version\":1}"}}}}}

Graph