{"id":"0812526c1b0079a59f6df3a3e4253bc1","_format":"hh-sol-build-info-1","solcVersion":"0.8.19","solcLongVersion":"0.8.19+commit.7dd6d404","input":{"language":"Solidity","sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (proxy/utils/Initializable.sol)\n\npragma solidity ^0.8.2;\n\nimport \"../../utils/AddressUpgradeable.sol\";\n\n/**\n * @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n * behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n * external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n * function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n *\n * The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n * reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n * case an upgrade adds a module that needs to be initialized.\n *\n * For example:\n *\n * [.hljs-theme-light.nopadding]\n * ```solidity\n * contract MyToken is ERC20Upgradeable {\n *     function initialize() initializer public {\n *         __ERC20_init(\"MyToken\", \"MTK\");\n *     }\n * }\n *\n * contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n *     function initializeV2() reinitializer(2) public {\n *         __ERC20Permit_init(\"MyToken\");\n *     }\n * }\n * ```\n *\n * TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n * possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n *\n * CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n * that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n *\n * [CAUTION]\n * ====\n * Avoid leaving a contract uninitialized.\n *\n * An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n * contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n * the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n *\n * [.hljs-theme-light.nopadding]\n * ```\n * /// @custom:oz-upgrades-unsafe-allow constructor\n * constructor() {\n *     _disableInitializers();\n * }\n * ```\n * ====\n */\nabstract contract Initializable {\n    /**\n     * @dev Indicates that the contract has been initialized.\n     * @custom:oz-retyped-from bool\n     */\n    uint8 private _initialized;\n\n    /**\n     * @dev Indicates that the contract is in the process of being initialized.\n     */\n    bool private _initializing;\n\n    /**\n     * @dev Triggered when the contract has been initialized or reinitialized.\n     */\n    event Initialized(uint8 version);\n\n    /**\n     * @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n     * `onlyInitializing` functions can be used to initialize parent contracts.\n     *\n     * Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n     * constructor.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier initializer() {\n        bool isTopLevelCall = !_initializing;\n        require(\n            (isTopLevelCall && _initialized < 1) || (!AddressUpgradeable.isContract(address(this)) && _initialized == 1),\n            \"Initializable: contract is already initialized\"\n        );\n        _initialized = 1;\n        if (isTopLevelCall) {\n            _initializing = true;\n        }\n        _;\n        if (isTopLevelCall) {\n            _initializing = false;\n            emit Initialized(1);\n        }\n    }\n\n    /**\n     * @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n     * contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n     * used to initialize parent contracts.\n     *\n     * A reinitializer may be used after the original initialization step. This is essential to configure modules that\n     * are added through upgrades and that require initialization.\n     *\n     * When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n     * cannot be nested. If one is invoked in the context of another, execution will revert.\n     *\n     * Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n     * a contract, executing them in the right order is up to the developer or operator.\n     *\n     * WARNING: setting the version to 255 will prevent any future reinitialization.\n     *\n     * Emits an {Initialized} event.\n     */\n    modifier reinitializer(uint8 version) {\n        require(!_initializing && _initialized < version, \"Initializable: contract is already initialized\");\n        _initialized = version;\n        _initializing = true;\n        _;\n        _initializing = false;\n        emit Initialized(version);\n    }\n\n    /**\n     * @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n     * {initializer} and {reinitializer} modifiers, directly or indirectly.\n     */\n    modifier onlyInitializing() {\n        require(_initializing, \"Initializable: contract is not initializing\");\n        _;\n    }\n\n    /**\n     * @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n     * Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n     * to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n     * through proxies.\n     *\n     * Emits an {Initialized} event the first time it is successfully executed.\n     */\n    function _disableInitializers() internal virtual {\n        require(!_initializing, \"Initializable: contract is initializing\");\n        if (_initialized != type(uint8).max) {\n            _initialized = type(uint8).max;\n            emit Initialized(type(uint8).max);\n        }\n    }\n\n    /**\n     * @dev Returns the highest version that has been initialized. See {reinitializer}.\n     */\n    function _getInitializedVersion() internal view returns (uint8) {\n        return _initialized;\n    }\n\n    /**\n     * @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}.\n     */\n    function _isInitializing() internal view returns (bool) {\n        return _initializing;\n    }\n}\n"},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary AddressUpgradeable {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Address.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/Address.sol)\n\npragma solidity ^0.8.1;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n    /**\n     * @dev Returns true if `account` is a contract.\n     *\n     * [IMPORTANT]\n     * ====\n     * It is unsafe to assume that an address for which this function returns\n     * false is an externally-owned account (EOA) and not a contract.\n     *\n     * Among others, `isContract` will return false for the following\n     * types of addresses:\n     *\n     *  - an externally-owned account\n     *  - a contract in construction\n     *  - an address where a contract will be created\n     *  - an address where a contract lived, but was destroyed\n     *\n     * Furthermore, `isContract` will also return true if the target contract within\n     * the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n     * which only has an effect at the end of a transaction.\n     * ====\n     *\n     * [IMPORTANT]\n     * ====\n     * You shouldn't rely on `isContract` to protect against flash loan attacks!\n     *\n     * Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n     * like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n     * constructor.\n     * ====\n     */\n    function isContract(address account) internal view returns (bool) {\n        // This method relies on extcodesize/address.code.length, which returns 0\n        // for contracts in construction, since the code is only stored at the end\n        // of the constructor execution.\n\n        return account.code.length > 0;\n    }\n\n    /**\n     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n     * `recipient`, forwarding all available gas and reverting on errors.\n     *\n     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n     * of certain opcodes, possibly making contracts go over the 2300 gas limit\n     * imposed by `transfer`, making them unable to receive funds via\n     * `transfer`. {sendValue} removes this limitation.\n     *\n     * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n     *\n     * IMPORTANT: because control is transferred to `recipient`, care must be\n     * taken to not create reentrancy vulnerabilities. Consider using\n     * {ReentrancyGuard} or the\n     * https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n     */\n    function sendValue(address payable recipient, uint256 amount) internal {\n        require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n        (bool success, ) = recipient.call{value: amount}(\"\");\n        require(success, \"Address: unable to send value, recipient may have reverted\");\n    }\n\n    /**\n     * @dev Performs a Solidity function call using a low level `call`. A\n     * plain `call` is an unsafe replacement for a function call: use this\n     * function instead.\n     *\n     * If `target` reverts with a revert reason, it is bubbled up by this\n     * function (like regular Solidity function calls).\n     *\n     * Returns the raw returned data. To convert to the expected return value,\n     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n     *\n     * Requirements:\n     *\n     * - `target` must be a contract.\n     * - calling `target` with `data` must not revert.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, \"Address: low-level call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n     * `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, 0, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but also transferring `value` wei to `target`.\n     *\n     * Requirements:\n     *\n     * - the calling contract must have an ETH balance of at least `value`.\n     * - the called Solidity function must be `payable`.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n        return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n     * with `errorMessage` as a fallback revert reason when `target` reverts.\n     *\n     * _Available since v3.1._\n     */\n    function functionCallWithValue(\n        address target,\n        bytes memory data,\n        uint256 value,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        require(address(this).balance >= value, \"Address: insufficient balance for call\");\n        (bool success, bytes memory returndata) = target.call{value: value}(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n        return functionStaticCall(target, data, \"Address: low-level static call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a static call.\n     *\n     * _Available since v3.3._\n     */\n    function functionStaticCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.staticcall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n        return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n    }\n\n    /**\n     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n     * but performing a delegate call.\n     *\n     * _Available since v3.4._\n     */\n    function functionDelegateCall(\n        address target,\n        bytes memory data,\n        string memory errorMessage\n    ) internal returns (bytes memory) {\n        (bool success, bytes memory returndata) = target.delegatecall(data);\n        return verifyCallResultFromTarget(target, success, returndata, errorMessage);\n    }\n\n    /**\n     * @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n     * the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n     *\n     * _Available since v4.8._\n     */\n    function verifyCallResultFromTarget(\n        address target,\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal view returns (bytes memory) {\n        if (success) {\n            if (returndata.length == 0) {\n                // only check isContract if the call was successful and the return data is empty\n                // otherwise we already know that it was a contract\n                require(isContract(target), \"Address: call to non-contract\");\n            }\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    /**\n     * @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n     * revert reason or using the provided one.\n     *\n     * _Available since v4.3._\n     */\n    function verifyCallResult(\n        bool success,\n        bytes memory returndata,\n        string memory errorMessage\n    ) internal pure returns (bytes memory) {\n        if (success) {\n            return returndata;\n        } else {\n            _revert(returndata, errorMessage);\n        }\n    }\n\n    function _revert(bytes memory returndata, string memory errorMessage) private pure {\n        // Look for revert reason and bubble it up if present\n        if (returndata.length > 0) {\n            // The easiest way to bubble the revert reason is using memory via assembly\n            /// @solidity memory-safe-assembly\n            assembly {\n                let returndata_size := mload(returndata)\n                revert(add(32, returndata), returndata_size)\n            }\n        } else {\n            revert(errorMessage);\n        }\n    }\n}\n"},"@openzeppelin/contracts/utils/Context.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)\n\npragma solidity ^0.8.0;\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"},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.9.0) (utils/introspection/ERC165Checker.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Library used to query support of an interface declared via {IERC165}.\n *\n * Note that these functions return the actual result of the query: they do not\n * `revert` if an interface is not supported. It is up to the caller to decide\n * what to do in these cases.\n */\nlibrary ERC165Checker {\n    // As per the EIP-165 spec, no interface should ever match 0xffffffff\n    bytes4 private constant _INTERFACE_ID_INVALID = 0xffffffff;\n\n    /**\n     * @dev Returns true if `account` supports the {IERC165} interface.\n     */\n    function supportsERC165(address account) internal view returns (bool) {\n        // Any contract that implements ERC165 must explicitly indicate support of\n        // InterfaceId_ERC165 and explicitly indicate non-support of InterfaceId_Invalid\n        return\n            supportsERC165InterfaceUnchecked(account, type(IERC165).interfaceId) &&\n            !supportsERC165InterfaceUnchecked(account, _INTERFACE_ID_INVALID);\n    }\n\n    /**\n     * @dev Returns true if `account` supports the interface defined by\n     * `interfaceId`. Support for {IERC165} itself is queried automatically.\n     *\n     * See {IERC165-supportsInterface}.\n     */\n    function supportsInterface(address account, bytes4 interfaceId) internal view returns (bool) {\n        // query support of both ERC165 as per the spec and support of _interfaceId\n        return supportsERC165(account) && supportsERC165InterfaceUnchecked(account, interfaceId);\n    }\n\n    /**\n     * @dev Returns a boolean array where each value corresponds to the\n     * interfaces passed in and whether they're supported or not. This allows\n     * you to batch check interfaces for a contract where your expectation\n     * is that some interfaces may not be supported.\n     *\n     * See {IERC165-supportsInterface}.\n     *\n     * _Available since v3.4._\n     */\n    function getSupportedInterfaces(\n        address account,\n        bytes4[] memory interfaceIds\n    ) internal view returns (bool[] memory) {\n        // an array of booleans corresponding to interfaceIds and whether they're supported or not\n        bool[] memory interfaceIdsSupported = new bool[](interfaceIds.length);\n\n        // query support of ERC165 itself\n        if (supportsERC165(account)) {\n            // query support of each interface in interfaceIds\n            for (uint256 i = 0; i < interfaceIds.length; i++) {\n                interfaceIdsSupported[i] = supportsERC165InterfaceUnchecked(account, interfaceIds[i]);\n            }\n        }\n\n        return interfaceIdsSupported;\n    }\n\n    /**\n     * @dev Returns true if `account` supports all the interfaces defined in\n     * `interfaceIds`. Support for {IERC165} itself is queried automatically.\n     *\n     * Batch-querying can lead to gas savings by skipping repeated checks for\n     * {IERC165} support.\n     *\n     * See {IERC165-supportsInterface}.\n     */\n    function supportsAllInterfaces(address account, bytes4[] memory interfaceIds) internal view returns (bool) {\n        // query support of ERC165 itself\n        if (!supportsERC165(account)) {\n            return false;\n        }\n\n        // query support of each interface in interfaceIds\n        for (uint256 i = 0; i < interfaceIds.length; i++) {\n            if (!supportsERC165InterfaceUnchecked(account, interfaceIds[i])) {\n                return false;\n            }\n        }\n\n        // all interfaces supported\n        return true;\n    }\n\n    /**\n     * @notice Query if a contract implements an interface, does not check ERC165 support\n     * @param account The address of the contract to query for support of an interface\n     * @param interfaceId The interface identifier, as specified in ERC-165\n     * @return true if the contract at account indicates support of the interface with\n     * identifier interfaceId, false otherwise\n     * @dev Assumes that account contains a contract that supports ERC165, otherwise\n     * the behavior of this method is undefined. This precondition can be checked\n     * with {supportsERC165}.\n     *\n     * Some precompiled contracts will falsely indicate support for a given interface, so caution\n     * should be exercised when using this function.\n     *\n     * Interface identification is specified in ERC-165.\n     */\n    function supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId) internal view returns (bool) {\n        // prepare call\n        bytes memory encodedParams = abi.encodeWithSelector(IERC165.supportsInterface.selector, interfaceId);\n\n        // perform static call\n        bool success;\n        uint256 returnSize;\n        uint256 returnValue;\n        assembly {\n            success := staticcall(30000, account, add(encodedParams, 0x20), mload(encodedParams), 0x00, 0x20)\n            returnSize := returndatasize()\n            returnValue := mload(0x00)\n        }\n\n        return success && returnSize >= 0x20 && returnValue > 0;\n    }\n}\n"},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"content":"// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts v4.4.1 (utils/introspection/IERC165.sol)\n\npragma solidity ^0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n    /**\n     * @dev Returns true if this contract implements the interface defined by\n     * `interfaceId`. See the corresponding\n     * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n     * to learn more about how these ids are created.\n     *\n     * This function call must use less than 30 000 gas.\n     */\n    function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n"},"contracts/consumers/FirewallConsumerStorage.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {IFirewall} from \"../interfaces/IFirewall.sol\";\nimport {IFirewallConsumerStorage} from \"../interfaces/IFirewallConsumerStorage.sol\";\n\n/**\n * @title Firewall Consumer Storage Contract\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract must define a firewall contract which will manage the policies that are applied to the contract.\n * It also must define a firewall admin which will be able to add and remove policies.\n *\n */\ncontract FirewallConsumerStorage is IFirewallConsumerStorage {\n\n    // This slot is used to store the firewall address\n    bytes32 private constant FIREWALL_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall\")) - 1);\n\n    // This slot is used to store the firewall admin address\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n\n    // This slot is special since it's used for mappings and not a single value\n    bytes32 private constant APPROVED_VENN_POLICY_SLOT = bytes32(uint256(keccak256(\"eip1967.approved.venn.policy\")) - 1);\n\n    bytes32 private constant USER_NATIVE_FEE_SLOT = bytes32(uint256(keccak256(\"eip1967.user.native.fee\")) - 1);\n\n    event FirewallAdminUpdated(address newAdmin);\n    event FirewallUpdated(address newFirewall);\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\n     */\n    constructor(\n        address _firewall,\n        address _firewallAdmin\n    ) {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    function getApprovedVennPolicy() external view returns (address) {\n        return _getAddressBySlot(APPROVED_VENN_POLICY_SLOT);\n    }\n\n    function getUserNativeFee() external view returns (uint256) {\n        return uint256(_getValueBySlot(USER_NATIVE_FEE_SLOT));\n    }\n\n    function getFirewall() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n    }\n\n    function getFirewallAdmin() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT);\n    }\n\n    /**\n     * @dev Allows firewall admin to set Venn policy.\n     * IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract\n     * to send any data to an approved Venn policy.\n     *\n     * @param vennPolicy address of the Venn policy\n     */\n    function setVennPolicy(address vennPolicy) external onlyFirewallAdmin {\n        _setAddressBySlot(APPROVED_VENN_POLICY_SLOT, vennPolicy);\n    }\n\n    /**\n     * @dev Allows firewall admin to set user native fee for safeFunctionCall.\n     *\n     * @param fee native fee for the user\n     */\n    function setUserNativeFee(uint256 fee) external onlyFirewallAdmin {\n        _setValueBySlot(USER_NATIVE_FEE_SLOT, fee);\n    }\n\n    /**\n     * @dev Admin only function allowing the consumers admin to set the firewall address.\n     * @param _firewall address of the firewall\n     */\n    function setFirewall(address _firewall) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        emit FirewallUpdated(_firewall);\n    }\n\n    /**\n     * @dev Admin only function, sets new firewall admin. New admin must accept.\n     * @param _firewallAdmin address of the new firewall admin\n     */\n    function setFirewallAdmin(address _firewallAdmin) external onlyFirewallAdmin {\n        require(_firewallAdmin != address(0), \"FirewallConsumer: zero address\");\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Accept the role as firewall admin.\n     */\n    function acceptFirewallAdmin() external {\n        require(msg.sender == _getAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not new admin\");\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, msg.sender);\n        emit FirewallAdminUpdated(msg.sender);\n    }\n\n    /**\n     * @dev Internal helper function to set an address in a storage slot\n     * @param _slot storage slot\n     * @param _address address to be set\n     */\n    function _setAddressBySlot(bytes32 _slot, address _address) internal {\n        assembly {\n            sstore(_slot, _address)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get an address from a storage slot\n     * @param _slot storage slot\n     * @return _address from the storage slot\n     */\n    function _getAddressBySlot(bytes32 _slot) internal view returns (address _address) {\n        assembly {\n            _address := sload(_slot)\n        }\n    }\n\n    function _setValueBySlot(bytes32 _slot, uint256 _value) internal {\n        assembly {\n            sstore(_slot, _value)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get a value from a storage slot\n     * @param _slot storage slot\n     * @return _value from the storage slot\n     */\n    function _getValueBySlot(bytes32 _slot) internal view returns (bytes32 _value) {\n        assembly {\n            _value := sload(_slot)\n        }\n    }\n}\n"},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {Initializable} from \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {IFirewall} from \"../interfaces/IFirewall.sol\";\nimport {IFirewallConsumer} from \"../interfaces/IFirewallConsumer.sol\";\nimport {IFirewallConsumerStorage} from \"../interfaces/IFirewallConsumerStorage.sol\";\n\n/**\n * @title Firewall Minimal Upgradeable Consumer Contract\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface.\n *\n */\ncontract SimpleUpgradeableFirewallConsumer is IFirewallConsumer, Initializable {\n\n    // This slot is used to store the consumer storage address\n    bytes32 private constant FIREWALL_CONSUMER_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.consumer.storage\")) - 1);\n    bytes32 private constant FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.consumer.initializer.firewall.admin\")) - 1);\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtected() {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        if (firewallConsumerStorage == address(0)) {\n            _;\n            return;\n        }\n        address firewall = IFirewallConsumerStorage(firewallConsumerStorage).getFirewall();\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        // We do this because msg.value can only be accessed in payable functions.\n        uint256 value;\n        assembly {\n            value := callvalue()\n        }\n        IFirewall(firewall).preExecution(msg.sender, msg.data, value);\n        _;\n        IFirewall(firewall).postExecution(msg.sender, msg.data, value);\n    }\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getFirewallAdmin(), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Allows calling an approved external Venn policy before executing a method.\n     *\n     * This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n     * executing a function, allowing synchronous transaction approvals.\n     *\n     * NOTE: If userNativeFee is non zero, functions using this must take into account that\n     * the value received will be slightly less than msg.value due to the fee.\n     *\n     * @param vennPolicyPayload payload to be sent to the Venn policy\n     * @param data data to be executed after the Venn policy call\n     */\n    function safeFunctionCall(\n        bytes calldata vennPolicyPayload,\n        bytes calldata data\n    ) external payable {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        address vennPolicy = IFirewallConsumerStorage(firewallConsumerStorage).getApprovedVennPolicy();\n        uint256 userNativeFee = IFirewallConsumerStorage(firewallConsumerStorage).getUserNativeFee();\n        require(msg.value >= userNativeFee, \"FirewallConsumer: Not enough native value for fee\");\n        (bool success,) = vennPolicy.call{value: userNativeFee}(vennPolicyPayload);\n        require(success);\n        Address.functionDelegateCall(address(this), data);\n    }\n\n    /**\n     * @dev View function for the firewall admin\n     */\n    function firewallAdmin() external view returns (address) {\n        return _getFirewallAdmin();\n    }\n\n    function setFirewallConsumerStorage(address _firewallConsumerStorage) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT, address(0));\n        _setAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT, _firewallConsumerStorage);\n    }\n\n    function __SimpleUpgradeableFirewallConsumer_init(IFirewallConsumerStorage _firewallConsumerStorage, address _firewallAdmin) internal onlyInitializing {\n        require((address(_firewallConsumerStorage) != address(0)) || _firewallAdmin != address(0), \"FirewallConsumer: must have firewall consumer storage or firewall admin\");\n        address _firewallConsumerStorageAddress = address(_firewallConsumerStorage);\n        if (_firewallConsumerStorageAddress == address(0)) {\n            _setAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT, _firewallAdmin);\n            return;\n        }\n        _setAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT, _firewallConsumerStorageAddress);\n    }\n\n    /**\n     * @dev Internal view function for the firewall admin\n     */\n    function _getFirewallAdmin() internal view returns (address) {\n        address firewallConsumerStorage = _getFirewallConsumerStorage();\n        if (firewallConsumerStorage == address(0)) {\n            return _getAddressBySlot(FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT);\n        }\n        return IFirewallConsumerStorage(firewallConsumerStorage).getFirewallAdmin();\n    }\n\n    /**\n     * @dev Internal view function for the consumer storage\n     */\n    function _getFirewallConsumerStorage() internal view returns (address) {\n        return _getAddressBySlot(FIREWALL_CONSUMER_STORAGE_SLOT);\n    }\n\n\n    /**\n     * @dev Internal helper function to set an address in a storage slot\n     * @param _slot storage slot\n     * @param _address address to be set\n     */\n    function _setAddressBySlot(bytes32 _slot, address _address) internal {\n        assembly {\n            sstore(_slot, _address)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get an address from a storage slot\n     * @param _slot storage slot\n     * @return _address from the storage slot\n     */\n    function _getAddressBySlot(bytes32 _slot) internal view returns (address _address) {\n        assembly {\n            _address := sload(_slot)\n        }\n    }\n\n}"},"contracts/consumers/VennFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {VennFirewallConsumerBase} from \"./VennFirewallConsumerBase.sol\";\n\n/**\n * @title Firewall Consumer\n * @author David Benchimol @ Ironblocks \n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract must initializes with the firewall contract disabled, and the deployer\n * as the firewall admin.\n *\n */\ncontract VennFirewallConsumer is VennFirewallConsumerBase(address(0), msg.sender) {\n}\n"},"contracts/consumers/VennFirewallConsumerBase.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {ERC165Checker} from \"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\nimport {IFirewall} from \"../interfaces/IFirewall.sol\";\nimport {IFirewallConsumer} from \"../interfaces/IFirewallConsumer.sol\";\n\n/**\n * @title Firewall Consumer Base Contract\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract must define a firewall contract which will manage the policies that are applied to the contract.\n * It also must define a firewall admin which will be able to add and remove policies.\n *\n */\ncontract VennFirewallConsumerBase is IFirewallConsumer, Context {\n\n    bytes4 private constant SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID = bytes4(0x0c908cff); // sighash of approveCallsViaSignature\n\n    // This slot is used to store the firewall address\n    bytes32 private constant FIREWALL_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall\")) - 1);\n\n    // This slot is used to store the firewall admin address\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n\n    bytes32 private constant ATTESTATION_CENTER_PROXY_SLOT = bytes32(uint256(keccak256(\"eip1967.attestation.center.proxy\")) - 1);\n    bytes32 private constant USER_PAID_FEE_SLOT = bytes32(uint256(keccak256(\"eip1967.user.paid.fee\")) - 1);\n    bytes32 private constant SAFE_FUNCTION_CALLER_SLOT = bytes32(uint256(keccak256(\"eip1967.safe.function.caller\")) - 1);\n    bytes32 private constant SAFE_FUNCTION_CALL_FLAG_SLOT = bytes32(uint256(keccak256(\"eip1967.safe.function.call.flag\")) - 1);\n\n    event FirewallAdminUpdated(address newAdmin);\n    event FirewallUpdated(address newFirewall);\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtected() {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), _msgData(), value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), _msgData(), value);\n    }\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\n     */\n    constructor(\n        address _firewall,\n        address _firewallAdmin\n    ) {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, address(1));\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 1);\n    }\n\n    function safeFunctionCall(\n        uint256 userNativeFee,\n        bytes calldata proxyPayload,\n        bytes calldata data\n    ) external payable {\n        require(msg.value >= userNativeFee, \"VennFirewallConsumer: Not enough ETH for fee\");\n        _initSafeFunctionCallFlags(userNativeFee);\n        address attestationCenterProxy = _getAddressBySlot(ATTESTATION_CENTER_PROXY_SLOT);\n        (bool success, ) = attestationCenterProxy.call{value: userNativeFee}(proxyPayload);\n        require(success, \"VennFirewallConsumer: Proxy call failed\");\n        // require(msg.sender == _msgSender(), \"VennFirewallConsumer: No meta transactions\");\n        Address.functionDelegateCall(address(this), data);\n        _deInitSafeFunctionCallFlags();\n    }\n\n    function _initSafeFunctionCallFlags(uint256 userNativeFee) internal {\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, msg.sender);\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 2);\n        _setValueBySlot(USER_PAID_FEE_SLOT, userNativeFee);\n    }\n\n    function _deInitSafeFunctionCallFlags() internal {\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, address(1));\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 1);\n        _setValueBySlot(USER_PAID_FEE_SLOT, 0);\n    }\n\n    function setAttestationCenterProxy(address attestationCenterProxy) external onlyFirewallAdmin {\n        if (attestationCenterProxy != address(0)) {\n            require(ERC165Checker.supportsERC165InterfaceUnchecked(attestationCenterProxy, SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID));\n        }\n        _setAddressBySlot(ATTESTATION_CENTER_PROXY_SLOT, attestationCenterProxy);\n    }\n\n    /**\n     * @dev View function for the firewall admin\n     */\n    function firewallAdmin() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT);\n    }\n\n    /**\n     * @dev Admin only function allowing the consumers admin to set the firewall address.\n     * @param _firewall address of the firewall\n     */\n    function setFirewall(address _firewall) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        emit FirewallUpdated(_firewall);\n    }\n\n    /**\n     * @dev Admin only function, sets new firewall admin. New admin must accept.\n     * @param _firewallAdmin address of the new firewall admin\n     */\n    function setFirewallAdmin(address _firewallAdmin) external onlyFirewallAdmin {\n        require(_firewallAdmin != address(0), \"FirewallConsumer: zero address\");\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Accept the role as firewall admin.\n     */\n    function acceptFirewallAdmin() external {\n        require(msg.sender == _getAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not new admin\");\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, msg.sender);\n        emit FirewallAdminUpdated(msg.sender);\n    }\n\n    /**\n     * @dev Internal helper funtion to get the msg.value\n     * @return value of the msg.value\n     */\n    function _msgValue() internal view returns (uint256 value) {\n        // We do this because msg.value can only be accessed in payable functions.\n        assembly {\n            value := callvalue()\n        }\n        if (uint256(_getValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT)) == 2) {\n            if (msg.sender == _getAddressBySlot(SAFE_FUNCTION_CALLER_SLOT)) {\n                uint256 fee = uint256(_getValueBySlot(USER_PAID_FEE_SLOT));\n                value = value - fee;\n            }\n        }\n    }\n\n    /**\n     * @dev Internal helper function to set an address in a storage slot\n     * @param _slot storage slot\n     * @param _address address to be set\n     */\n    function _setAddressBySlot(bytes32 _slot, address _address) internal {\n        assembly {\n            sstore(_slot, _address)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get an address from a storage slot\n     * @param _slot storage slot\n     * @return _address from the storage slot\n     */\n    function _getAddressBySlot(bytes32 _slot) internal view returns (address _address) {\n        assembly {\n            _address := sload(_slot)\n        }\n    }\n\n    function _setValueBySlot(bytes32 _slot, uint256 _value) internal {\n        assembly {\n            sstore(_slot, _value)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get a value from a storage slot\n     * @param _slot storage slot\n     * @return _value from the storage slot\n     */\n    function _getValueBySlot(bytes32 _slot) internal view returns (bytes32 _value) {\n        assembly {\n            _value := sload(_slot)\n        }\n    }\n}\n"},"contracts/FirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {FirewallConsumerBase} from \"./FirewallConsumerBase.sol\";\n\n/**\n * @title Firewall Consumer\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract must initializes with the firewall contract disabled, and the deployer\n * as the firewall admin.\n *\n */\ncontract FirewallConsumer is FirewallConsumerBase(address(0), msg.sender) {\n}"},"contracts/FirewallConsumerBase.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\nimport {ERC165Checker} from \"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\";\nimport {Address} from \"@openzeppelin/contracts/utils/Address.sol\";\nimport {Context} from \"@openzeppelin/contracts/utils/Context.sol\";\nimport {IFirewall} from \"./interfaces/IFirewall.sol\";\nimport {IFirewallConsumer} from \"./interfaces/IFirewallConsumer.sol\";\n\n/**\n * @title Firewall Consumer Base Contract\n * @author David Benchimol @ Ironblocks\n * @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n *\n * The contract must define a firewall contract which will manage the policies that are applied to the contract.\n * It also must define a firewall admin which will be able to add and remove policies.\n *\n */\ncontract FirewallConsumerBase is IFirewallConsumer, Context {\n\n    // This slot is used to store the firewall address\n    bytes32 private constant FIREWALL_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall\")) - 1);\n\n    // This slot is used to store the firewall admin address\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n    bytes4 private constant SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID = bytes4(0x0c908cff); // sighash of approveCallsViaSignature\n\n    bytes32 private constant APPROVED_VENN_POLICY_SLOT = bytes32(uint256(keccak256(\"eip1967.approved.venn.policy\")) - 1);\n    bytes32 private constant APPROVED_VENN_POLICY_FEE_SLOT = bytes32(uint256(keccak256(\"eip1967.approved.venn.policy.fee\")) - 1);\n    bytes32 private constant SAFE_FUNCTION_CALLER_SLOT = bytes32(uint256(keccak256(\"eip1967.safe.function.caller\")) - 1);\n    bytes32 private constant SAFE_FUNCTION_CALL_FLAG_SLOT = bytes32(uint256(keccak256(\"eip1967.safe.function.call.flag\")) - 1);\n\n    event FirewallAdminUpdated(address newAdmin);\n    event FirewallUpdated(address newFirewall);\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtected() {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), _msgData(), value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), _msgData(), value);\n    }\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n     * the subscribed policies. Allows passing custom data to the firewall, not necessarily msg.data.\n     * Useful for checking internal function calls\n     *\n     * @param data custom data to be passed to the firewall\n     * NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly meant\n     * to be used by internal functions, and only in conjuction with policies that whose protection strategy\n     * requires this data.\n     *\n     * Using this modifier incorrectly may result in unexpected behavior.\n     *\n     * If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n     * and/or contact our support.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtectedCustom(bytes memory data) {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), data, value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), data, value);\n    }\n\n    /**\n     * @dev identical to the rest of the modifiers in terms of logic, but makes it more\n     * aesthetic when all you want to pass are signatures/unique identifiers.\n     *\n     * @param selector unique identifier for the function\n     *\n     * NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly to\n     * be used by policies that whose protection strategy relies on the function's signature hahs.\n     *\n     * Using this modifier incorrectly may result in unexpected behavior.\n     *\n     * If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n     * and/or contact our support.\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier firewallProtectedSig(bytes4 selector) {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        IFirewall(firewall).preExecution(_msgSender(), abi.encodePacked(selector), value);\n        _;\n        IFirewall(firewall).postExecution(_msgSender(), abi.encodePacked(selector), value);\n    }\n\n    /**\n     * @dev modifier that will run the preExecution and postExecution hooks of the firewall invariant policy,\n     * applying the subscribed invariant policy\n     *\n     * NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n     * prevent the postExecution hook from running - breaking the protection provided by the firewall.\n     * If you have any questions, please refer to the Firewall's documentation and/or contact our support.\n     */\n    modifier invariantProtected() {\n        address firewall = _getAddressBySlot(FIREWALL_STORAGE_SLOT);\n        if (firewall == address(0)) {\n            _;\n            return;\n        }\n        uint256 value = _msgValue();\n        bytes32[] memory storageSlots = IFirewall(firewall).preExecutionPrivateInvariants(_msgSender(), _msgData(), value);\n        bytes32[] memory preValues = _readStorage(storageSlots);\n        _;\n        bytes32[] memory postValues = _readStorage(storageSlots);\n        IFirewall(firewall).postExecutionPrivateInvariants(_msgSender(), _msgData(), value, preValues, postValues);\n    }\n\n\n    /**\n     * @dev modifier asserting that the Venn policy is approved\n     * @param vennPolicy address of Venn policy\n     */\n    modifier onlyApprovedVennPolicy(address vennPolicy) {\n        // We use the same logic that solidity uses for mapping locations, but we add a pseudorandom\n        // constant \"salt\" instead of a constant placeholder so that there are no storage collisions\n        // if adding this to an upgradeable contract implementation\n        bytes32 _slot = keccak256(abi.encode(APPROVED_VENN_POLICY_SLOT, vennPolicy));\n        bool isApprovedVennPolicy = _getValueBySlot(_slot) != bytes32(0);\n        require(isApprovedVennPolicy, \"FirewallConsumer: Not approved Venn policy\");\n        require(ERC165Checker.supportsERC165InterfaceUnchecked(vennPolicy, SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID));\n        _;\n    }\n\n    /**\n     * @dev modifier similar to onlyOwner, but for the firewall admin.\n     */\n    modifier onlyFirewallAdmin() {\n        require(msg.sender == _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not firewall admin\");\n        _;\n    }\n\n    /**\n     * @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\n     */\n    constructor(\n        address _firewall,\n        address _firewallAdmin\n    ) {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, address(1));\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 1);\n    }\n\n    /**\n     * @dev Allows calling an approved external Venn policy before executing a method.\n     *\n     * This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n     * executing a function, allowing synchronous transaction approvals.\n     *\n     * @param vennPolicy address of the Venn policy\n     * @param vennPolicyPayload payload to be sent to the Venn policy\n     * @param data data to be executed after the Venn policy call\n     */\n    function safeFunctionCall(\n        address vennPolicy,\n        bytes calldata vennPolicyPayload,\n        bytes calldata data\n    ) external payable onlyApprovedVennPolicy(vennPolicy) {\n        uint256 fee = uint256(_getValueBySlot(APPROVED_VENN_POLICY_FEE_SLOT));\n        require(msg.value >= fee, \"FirewallConsumer: Not enough ETH for fee\");\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, msg.sender);\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 2);\n        (bool success, ) = vennPolicy.call{value: fee}(vennPolicyPayload);\n        require(success);\n        require(msg.sender == _msgSender(), \"FirewallConsumer: No meta transactions\");\n        Address.functionDelegateCall(address(this), data);\n        _setAddressBySlot(SAFE_FUNCTION_CALLER_SLOT, address(1));\n        _setValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT, 1);\n    }\n\n    /**\n     * @dev Allows firewall admin to set approved Venn policies.\n     * IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract\n     * to send any data to an approved Venn policy.\n     *\n     * @param vennPolicy address of the Venn policy\n     * @param status status of the Venn policy\n     */\n    function setApprovedVennPolicy(address vennPolicy, bool status) external onlyFirewallAdmin {\n        bytes32 _slot = keccak256(abi.encode(APPROVED_VENN_POLICY_SLOT, vennPolicy));\n        assembly {\n            sstore(_slot, status)\n        }\n    }\n\n    function setApprovedVennPolicyFee(uint256 fee) external onlyFirewallAdmin {\n        _setValueBySlot(APPROVED_VENN_POLICY_FEE_SLOT, fee);\n    }\n\n    /**\n     * @dev View function for the firewall admin\n     */\n    function firewallAdmin() external view returns (address) {\n        return _getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT);\n    }\n\n    /**\n     * @dev Admin only function allowing the consumers admin to set the firewall address.\n     * @param _firewall address of the firewall\n     */\n    function setFirewall(address _firewall) external onlyFirewallAdmin {\n        _setAddressBySlot(FIREWALL_STORAGE_SLOT, _firewall);\n        emit FirewallUpdated(_firewall);\n    }\n\n    /**\n     * @dev Admin only function, sets new firewall admin. New admin must accept.\n     * @param _firewallAdmin address of the new firewall admin\n     */\n    function setFirewallAdmin(address _firewallAdmin) external onlyFirewallAdmin {\n        require(_firewallAdmin != address(0), \"FirewallConsumer: zero address\");\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n\n    /**\n     * @dev Accept the role as firewall admin.\n     */\n    function acceptFirewallAdmin() external {\n        require(msg.sender == _getAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT), \"FirewallConsumer: not new admin\");\n        _setAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT, msg.sender);\n        emit FirewallAdminUpdated(msg.sender);\n    }\n\n    /**\n     * @dev Internal helper funtion to get the msg.value\n     * @return value of the msg.value\n     */\n    function _msgValue() internal view returns (uint256 value) {\n        // We do this because msg.value can only be accessed in payable functions.\n        assembly {\n            value := callvalue()\n        }\n        if (uint256(_getValueBySlot(SAFE_FUNCTION_CALL_FLAG_SLOT)) == 2) {\n            if (msg.sender == _getAddressBySlot(SAFE_FUNCTION_CALLER_SLOT)) {\n                uint256 fee = uint256(_getValueBySlot(APPROVED_VENN_POLICY_FEE_SLOT));\n                value = value - fee;\n            }\n        }\n    }\n\n    /**\n     * @dev Internal helper function to read storage slots\n     * @param storageSlots array of storage slots\n     */\n    function _readStorage(bytes32[] memory storageSlots) internal view returns (bytes32[] memory) {\n        uint256 slotsLength = storageSlots.length;\n        bytes32[] memory values = new bytes32[](slotsLength);\n\n        for (uint256 i = 0; i < slotsLength; i++) {\n            bytes32 slotValue = _getValueBySlot(storageSlots[i]);\n            values[i] = slotValue;\n        }\n        return values;\n    }\n\n    /**\n     * @dev Internal helper function to set an address in a storage slot\n     * @param _slot storage slot\n     * @param _address address to be set\n     */\n    function _setAddressBySlot(bytes32 _slot, address _address) internal {\n        assembly {\n            sstore(_slot, _address)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get an address from a storage slot\n     * @param _slot storage slot\n     * @return _address from the storage slot\n     */\n    function _getAddressBySlot(bytes32 _slot) internal view returns (address _address) {\n        assembly {\n            _address := sload(_slot)\n        }\n    }\n\n    function _setValueBySlot(bytes32 _slot, uint256 _value) internal {\n        assembly {\n            sstore(_slot, _value)\n        }\n    }\n\n    /**\n     * @dev Internal helper function to get a value from a storage slot\n     * @param _slot storage slot\n     * @return _value from the storage slot\n     */\n    function _getValueBySlot(bytes32 _slot) internal view returns (bytes32 _value) {\n        assembly {\n            _value := sload(_slot)\n        }\n    }\n}\n"},"contracts/interfaces/IFirewall.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\ninterface IFirewall {\n    function preExecution(address sender, bytes memory data, uint256 value) external;\n    function postExecution(address sender, bytes memory data, uint256 value) external;\n    function preExecutionPrivateInvariants(address sender, bytes memory data, uint256 value) external returns (bytes32[] calldata);\n    function postExecutionPrivateInvariants(\n        address sender,\n        bytes memory data,\n        uint256 value,\n        bytes32[] calldata preValues,\n        bytes32[] calldata postValues\n    ) external;\n}"},"contracts/interfaces/IFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\ninterface IFirewallConsumer {\n    function firewallAdmin() external view returns (address);\n}"},"contracts/interfaces/IFirewallConsumerStorage.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8.0;\n\ninterface IFirewallConsumerStorage {\n    function getFirewallAdmin() external view returns (address);\n    function getFirewall() external view returns (address);\n    function getApprovedVennPolicy() external view returns (address);\n    function getUserNativeFee() external view returns (uint256);\n}\n"},"contracts/interfaces/IOwnable.sol":{"content":"// SPDX-License-Identifier: MIT\n\npragma solidity ^0.8;\n\ninterface IOwnable {\n    function owner() external view returns (address);\n}"},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {ProxyFirewallConsumerBase} from \"./ProxyFirewallConsumerBase.sol\";\n\n/**\n * @title BeaconProxyFirewallConsumer\n * @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n * with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract BeaconProxyFirewallConsumer is ProxyFirewallConsumerBase {\n    // This is the keccak-256 hash of \"eip1967.proxy.beacon\" subtracted by 1\n    bytes32 private constant BEACON_SLOT = 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50;\n\n    /**\n     * @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function initializeFirewallAdmin(address _firewallAdmin) isAllowedInitializer(BEACON_SLOT) external {\n        _initializeFirewallAdmin(_firewallAdmin);\n    }\n}"},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {FirewallConsumerBase} from \"../FirewallConsumerBase.sol\";\nimport {IOwnable} from \"../interfaces/IOwnable.sol\";\n\n/**\n * @title BeaconProxyFirewallConsumer\n * @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n * with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract ProxyFirewallConsumerBase is FirewallConsumerBase(address(0), address(0)) {\n    bytes32 private constant FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.firewall.admin\")) - 1);\n\n    // This slot is used to store the new firewall admin address (when changing admin)\n    bytes32 private constant NEW_FIREWALL_ADMIN_STORAGE_SLOT = bytes32(uint256(keccak256(\"eip1967.new.firewall.admin\")) - 1);\n\n    modifier isAllowedInitializer(bytes32 _admin_memory_slot) {\n        address initializerAddress = _getAddressBySlot(_admin_memory_slot);\n        address initializerOwner = IOwnable(initializerAddress).owner();\n        require(msg.sender == initializerOwner, \"ProxyFirewallConsumerBase: sender is not allowed\");\n        _;\n    }\n\n    /**\n     * @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function _initializeFirewallAdmin(address _firewallAdmin) internal {\n        require(_firewallAdmin != address(0), \"ProxyFirewallConsumerBase: zero address\");\n        require(_getAddressBySlot(FIREWALL_ADMIN_STORAGE_SLOT) == address(0), \"ProxyFirewallConsumerBase: admin already set\");\n\n        _setAddressBySlot(NEW_FIREWALL_ADMIN_STORAGE_SLOT, _firewallAdmin);\n    }\n}"},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"content":"// SPDX-License-Identifier: UNLICENSED\n// See LICENSE file for full license text.\n// Copyright (c) Ironblocks 2024\npragma solidity ^0.8;\n\nimport {ProxyFirewallConsumerBase} from \"./ProxyFirewallConsumerBase.sol\";\n\n/**\n * @title TransparentProxyFirewallConsumer\n * @notice For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin\n * even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n */\ncontract TransparentProxyFirewallConsumer is ProxyFirewallConsumerBase {\n    // This is the keccak-256 hash of \"eip1967.proxy.admin\" subtracted by 1\n    bytes32 private constant PROXY_ADMIN_SLOT = 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103;\n\n    /**\n     * @dev Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases:\n     * - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n     * - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n     * @param _firewallAdmin address of the firewall admin\n     */\n    function initializeFirewallAdmin(address _firewallAdmin) isAllowedInitializer(PROXY_ADMIN_SLOT) external {\n        _initializeFirewallAdmin(_firewallAdmin);\n    }\n}"}},"settings":{"optimizer":{"enabled":true,"runs":10000},"outputSelection":{"*":{"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata","storageLayout"],"":["ast"]}}}},"output":{"sources":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","exportedSymbols":{"AddressUpgradeable":[498],"Initializable":[168]},"id":169,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1,"literals":["solidity","^","0.8",".2"],"nodeType":"PragmaDirective","src":"113:23:0"},{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","file":"../../utils/AddressUpgradeable.sol","id":2,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":169,"sourceUnit":499,"src":"138:44:0","symbolAliases":[],"unitAlias":""},{"abstract":true,"baseContracts":[],"canonicalName":"Initializable","contractDependencies":[],"contractKind":"contract","documentation":{"id":3,"nodeType":"StructuredDocumentation","src":"184:2209:0","text":" @dev This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed\n behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an\n external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer\n function so it can only be called once. The {initializer} modifier provided by this contract will have this effect.\n The initialization functions use a version number. Once a version number is used, it is consumed and cannot be\n reused. This mechanism prevents re-execution of each \"step\" but allows the creation of new initialization steps in\n case an upgrade adds a module that needs to be initialized.\n For example:\n [.hljs-theme-light.nopadding]\n ```solidity\n contract MyToken is ERC20Upgradeable {\n     function initialize() initializer public {\n         __ERC20_init(\"MyToken\", \"MTK\");\n     }\n }\n contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {\n     function initializeV2() reinitializer(2) public {\n         __ERC20Permit_init(\"MyToken\");\n     }\n }\n ```\n TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as\n possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}.\n CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure\n that all initializers are idempotent. This is not verified automatically as constructors are by Solidity.\n [CAUTION]\n ====\n Avoid leaving a contract uninitialized.\n An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation\n contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke\n the {_disableInitializers} function in the constructor to automatically lock it when it is deployed:\n [.hljs-theme-light.nopadding]\n ```\n /// @custom:oz-upgrades-unsafe-allow constructor\n constructor() {\n     _disableInitializers();\n }\n ```\n ===="},"fullyImplemented":true,"id":168,"linearizedBaseContracts":[168],"name":"Initializable","nameLocation":"2412:13:0","nodeType":"ContractDefinition","nodes":[{"constant":false,"documentation":{"id":4,"nodeType":"StructuredDocumentation","src":"2432:109:0","text":" @dev Indicates that the contract has been initialized.\n @custom:oz-retyped-from bool"},"id":6,"mutability":"mutable","name":"_initialized","nameLocation":"2560:12:0","nodeType":"VariableDeclaration","scope":168,"src":"2546:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":5,"name":"uint8","nodeType":"ElementaryTypeName","src":"2546:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"private"},{"constant":false,"documentation":{"id":7,"nodeType":"StructuredDocumentation","src":"2579:91:0","text":" @dev Indicates that the contract is in the process of being initialized."},"id":9,"mutability":"mutable","name":"_initializing","nameLocation":"2688:13:0","nodeType":"VariableDeclaration","scope":168,"src":"2675:26:0","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":8,"name":"bool","nodeType":"ElementaryTypeName","src":"2675:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"private"},{"anonymous":false,"documentation":{"id":10,"nodeType":"StructuredDocumentation","src":"2708:90:0","text":" @dev Triggered when the contract has been initialized or reinitialized."},"eventSelector":"7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498","id":14,"name":"Initialized","nameLocation":"2809:11:0","nodeType":"EventDefinition","parameters":{"id":13,"nodeType":"ParameterList","parameters":[{"constant":false,"id":12,"indexed":false,"mutability":"mutable","name":"version","nameLocation":"2827:7:0","nodeType":"VariableDeclaration","scope":14,"src":"2821:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":11,"name":"uint8","nodeType":"ElementaryTypeName","src":"2821:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2820:15:0"},"src":"2803:33:0"},{"body":{"id":69,"nodeType":"Block","src":"3269:483:0","statements":[{"assignments":[18],"declarations":[{"constant":false,"id":18,"mutability":"mutable","name":"isTopLevelCall","nameLocation":"3284:14:0","nodeType":"VariableDeclaration","scope":69,"src":"3279:19:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":17,"name":"bool","nodeType":"ElementaryTypeName","src":"3279:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":21,"initialValue":{"id":20,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3301:14:0","subExpression":{"id":19,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3302:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"3279:36:0"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":42,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":27,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":23,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3347:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":26,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":24,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3365:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"hexValue":"31","id":25,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3380:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3365:16:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3347:34:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":28,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3346:36:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":40,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":36,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3387:45:0","subExpression":{"arguments":[{"arguments":[{"id":33,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3426:4:0","typeDescriptions":{"typeIdentifier":"t_contract$_Initializable_$168","typeString":"contract Initializable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Initializable_$168","typeString":"contract Initializable"}],"id":32,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3418:7:0","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":31,"name":"address","nodeType":"ElementaryTypeName","src":"3418:7:0","typeDescriptions":{}}},"id":34,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3418:13:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":29,"name":"AddressUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":498,"src":"3388:18:0","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressUpgradeable_$498_$","typeString":"type(library AddressUpgradeable)"}},"id":30,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3407:10:0","memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":186,"src":"3388:29:0","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":35,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3388:44:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":39,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":37,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3436:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"31","id":38,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3452:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3436:17:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3387:66:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":41,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"3386:68:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"3346:108:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":43,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3468:48:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":22,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3325:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":44,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3325:201:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":45,"nodeType":"ExpressionStatement","src":"3325:201:0"},{"expression":{"id":48,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":46,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"3536:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":47,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3551:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"3536:16:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":49,"nodeType":"ExpressionStatement","src":"3536:16:0"},{"condition":{"id":50,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3566:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56,"nodeType":"IfStatement","src":"3562:65:0","trueBody":{"id":55,"nodeType":"Block","src":"3582:45:0","statements":[{"expression":{"id":53,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3596:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":52,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3612:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"3596:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54,"nodeType":"ExpressionStatement","src":"3596:20:0"}]}},{"id":57,"nodeType":"PlaceholderStatement","src":"3636:1:0"},{"condition":{"id":58,"name":"isTopLevelCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":18,"src":"3651:14:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":68,"nodeType":"IfStatement","src":"3647:99:0","trueBody":{"id":67,"nodeType":"Block","src":"3667:79:0","statements":[{"expression":{"id":61,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"3681:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":60,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3697:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"3681:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62,"nodeType":"ExpressionStatement","src":"3681:21:0"},{"eventCall":{"arguments":[{"hexValue":"31","id":64,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3733:1:0","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":63,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"3721:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":65,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3721:14:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":66,"nodeType":"EmitStatement","src":"3716:19:0"}]}}]},"documentation":{"id":15,"nodeType":"StructuredDocumentation","src":"2842:399:0","text":" @dev A modifier that defines a protected initializer function that can be invoked at most once. In its scope,\n `onlyInitializing` functions can be used to initialize parent contracts.\n Similar to `reinitializer(1)`, except that functions marked with `initializer` can be nested in the context of a\n constructor.\n Emits an {Initialized} event."},"id":70,"name":"initializer","nameLocation":"3255:11:0","nodeType":"ModifierDefinition","parameters":{"id":16,"nodeType":"ParameterList","parameters":[],"src":"3266:2:0"},"src":"3246:506:0","virtual":false,"visibility":"internal"},{"body":{"id":102,"nodeType":"Block","src":"4863:255:0","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":81,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":77,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4881:14:0","subExpression":{"id":76,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"4882:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":80,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":78,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"4899:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":79,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"4914:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4899:22:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4881:40:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320616c726561647920696e697469616c697a6564","id":82,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4923:48:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""},"value":"Initializable: contract is already initialized"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759","typeString":"literal_string \"Initializable: contract is already initialized\""}],"id":75,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4873:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":83,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4873:99:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":84,"nodeType":"ExpressionStatement","src":"4873:99:0"},{"expression":{"id":87,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":85,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"4982:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":86,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"4997:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"4982:22:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":88,"nodeType":"ExpressionStatement","src":"4982:22:0"},{"expression":{"id":91,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":89,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5014:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":90,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5030:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"5014:20:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":92,"nodeType":"ExpressionStatement","src":"5014:20:0"},{"id":93,"nodeType":"PlaceholderStatement","src":"5044:1:0"},{"expression":{"id":96,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":94,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5055:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":95,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5071:5:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5055:21:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":97,"nodeType":"ExpressionStatement","src":"5055:21:0"},{"eventCall":{"arguments":[{"id":99,"name":"version","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":73,"src":"5103:7:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":98,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"5091:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":100,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5091:20:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":101,"nodeType":"EmitStatement","src":"5086:25:0"}]},"documentation":{"id":71,"nodeType":"StructuredDocumentation","src":"3758:1062:0","text":" @dev A modifier that defines a protected reinitializer function that can be invoked at most once, and only if the\n contract hasn't been initialized to a greater version before. In its scope, `onlyInitializing` functions can be\n used to initialize parent contracts.\n A reinitializer may be used after the original initialization step. This is essential to configure modules that\n are added through upgrades and that require initialization.\n When `version` is 1, this modifier is similar to `initializer`, except that functions marked with `reinitializer`\n cannot be nested. If one is invoked in the context of another, execution will revert.\n Note that versions can jump in increments greater than 1; this implies that if multiple reinitializers coexist in\n a contract, executing them in the right order is up to the developer or operator.\n WARNING: setting the version to 255 will prevent any future reinitialization.\n Emits an {Initialized} event."},"id":103,"name":"reinitializer","nameLocation":"4834:13:0","nodeType":"ModifierDefinition","parameters":{"id":74,"nodeType":"ParameterList","parameters":[{"constant":false,"id":73,"mutability":"mutable","name":"version","nameLocation":"4854:7:0","nodeType":"VariableDeclaration","scope":103,"src":"4848:13:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":72,"name":"uint8","nodeType":"ElementaryTypeName","src":"4848:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"4847:15:0"},"src":"4825:293:0","virtual":false,"visibility":"internal"},{"body":{"id":112,"nodeType":"Block","src":"5356:97:0","statements":[{"expression":{"arguments":[{"id":107,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"5374:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e7472616374206973206e6f7420696e697469616c697a696e67","id":108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5389:45:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""},"value":"Initializable: contract is not initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d688db918bb9dd50354922faa108595679886fe9ff08046ad1ffe30aaea55f8b","typeString":"literal_string \"Initializable: contract is not initializing\""}],"id":106,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5366:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":109,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5366:69:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":110,"nodeType":"ExpressionStatement","src":"5366:69:0"},{"id":111,"nodeType":"PlaceholderStatement","src":"5445:1:0"}]},"documentation":{"id":104,"nodeType":"StructuredDocumentation","src":"5124:199:0","text":" @dev Modifier to protect an initialization function so that it can only be invoked by functions with the\n {initializer} and {reinitializer} modifiers, directly or indirectly."},"id":113,"name":"onlyInitializing","nameLocation":"5337:16:0","nodeType":"ModifierDefinition","parameters":{"id":105,"nodeType":"ParameterList","parameters":[],"src":"5353:2:0"},"src":"5328:125:0","virtual":false,"visibility":"internal"},{"body":{"id":148,"nodeType":"Block","src":"5988:231:0","statements":[{"expression":{"arguments":[{"id":119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"6006:14:0","subExpression":{"id":118,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"6007:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"496e697469616c697a61626c653a20636f6e747261637420697320696e697469616c697a696e67","id":120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6022:41:0","typeDescriptions":{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""},"value":"Initializable: contract is initializing"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a53f5879e7518078ff19b2e3d6b41e757a87364ec6872787feb45bfc41131d1a","typeString":"literal_string \"Initializable: contract is initializing\""}],"id":117,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5998:7:0","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":121,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5998:66:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":122,"nodeType":"ExpressionStatement","src":"5998:66:0"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":123,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6078:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"arguments":[{"id":126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6099:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":125,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":124,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6094:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6094:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":128,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6106:3:0","memberName":"max","nodeType":"MemberAccess","src":"6094:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6078:31:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":147,"nodeType":"IfStatement","src":"6074:139:0","trueBody":{"id":146,"nodeType":"Block","src":"6111:102:0","statements":[{"expression":{"id":136,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":130,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6125:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"arguments":[{"id":133,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6145:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":132,"name":"uint8","nodeType":"ElementaryTypeName","src":"6145:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":131,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6140:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6140:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6152:3:0","memberName":"max","nodeType":"MemberAccess","src":"6140:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"6125:30:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"id":137,"nodeType":"ExpressionStatement","src":"6125:30:0"},{"eventCall":{"arguments":[{"expression":{"arguments":[{"id":141,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6191:5:0","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":140,"name":"uint8","nodeType":"ElementaryTypeName","src":"6191:5:0","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"}],"id":139,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"6186:4:0","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6186:11:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint8","typeString":"type(uint8)"}},"id":143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6198:3:0","memberName":"max","nodeType":"MemberAccess","src":"6186:15:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":138,"name":"Initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":14,"src":"6174:11:0","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint8_$returns$__$","typeString":"function (uint8)"}},"id":144,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6174:28:0","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":145,"nodeType":"EmitStatement","src":"6169:33:0"}]}}]},"documentation":{"id":114,"nodeType":"StructuredDocumentation","src":"5459:475:0","text":" @dev Locks the contract, preventing any future reinitialization. This cannot be part of an initializer call.\n Calling this in the constructor of a contract will prevent that contract from being initialized or reinitialized\n to any version. It is recommended to use this to lock implementation contracts that are designed to be called\n through proxies.\n Emits an {Initialized} event the first time it is successfully executed."},"id":149,"implemented":true,"kind":"function","modifiers":[],"name":"_disableInitializers","nameLocation":"5948:20:0","nodeType":"FunctionDefinition","parameters":{"id":115,"nodeType":"ParameterList","parameters":[],"src":"5968:2:0"},"returnParameters":{"id":116,"nodeType":"ParameterList","parameters":[],"src":"5988:0:0"},"scope":168,"src":"5939:280:0","stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"body":{"id":157,"nodeType":"Block","src":"6393:36:0","statements":[{"expression":{"id":155,"name":"_initialized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":6,"src":"6410:12:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":154,"id":156,"nodeType":"Return","src":"6403:19:0"}]},"documentation":{"id":150,"nodeType":"StructuredDocumentation","src":"6225:99:0","text":" @dev Returns the highest version that has been initialized. See {reinitializer}."},"id":158,"implemented":true,"kind":"function","modifiers":[],"name":"_getInitializedVersion","nameLocation":"6338:22:0","nodeType":"FunctionDefinition","parameters":{"id":151,"nodeType":"ParameterList","parameters":[],"src":"6360:2:0"},"returnParameters":{"id":154,"nodeType":"ParameterList","parameters":[{"constant":false,"id":153,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":158,"src":"6386:5:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":152,"name":"uint8","nodeType":"ElementaryTypeName","src":"6386:5:0","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6385:7:0"},"scope":168,"src":"6329:100:0","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":166,"nodeType":"Block","src":"6601:37:0","statements":[{"expression":{"id":164,"name":"_initializing","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":9,"src":"6618:13:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":163,"id":165,"nodeType":"Return","src":"6611:20:0"}]},"documentation":{"id":159,"nodeType":"StructuredDocumentation","src":"6435:105:0","text":" @dev Returns `true` if the contract is currently initializing. See {onlyInitializing}."},"id":167,"implemented":true,"kind":"function","modifiers":[],"name":"_isInitializing","nameLocation":"6554:15:0","nodeType":"FunctionDefinition","parameters":{"id":160,"nodeType":"ParameterList","parameters":[],"src":"6569:2:0"},"returnParameters":{"id":163,"nodeType":"ParameterList","parameters":[{"constant":false,"id":162,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":167,"src":"6595:4:0","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":161,"name":"bool","nodeType":"ElementaryTypeName","src":"6595:4:0","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6594:6:0"},"scope":168,"src":"6545:93:0","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":169,"src":"2394:4246:0","usedErrors":[]}],"src":"113:6528:0"},"id":0},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"ast":{"absolutePath":"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol","exportedSymbols":{"AddressUpgradeable":[498]},"id":499,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":170,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:1"},{"abstract":false,"baseContracts":[],"canonicalName":"AddressUpgradeable","contractDependencies":[],"contractKind":"library","documentation":{"id":171,"nodeType":"StructuredDocumentation","src":"126:67:1","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":498,"linearizedBaseContracts":[498],"name":"AddressUpgradeable","nameLocation":"202:18:1","nodeType":"ContractDefinition","nodes":[{"body":{"id":185,"nodeType":"Block","src":"1489:254:1","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":179,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":174,"src":"1713:7:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":180,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1721:4:1","memberName":"code","nodeType":"MemberAccess","src":"1713:12:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1726:6:1","memberName":"length","nodeType":"MemberAccess","src":"1713:19:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1735:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1713:23:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":178,"id":184,"nodeType":"Return","src":"1706:30:1"}]},"documentation":{"id":172,"nodeType":"StructuredDocumentation","src":"227:1191:1","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":186,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1432:10:1","nodeType":"FunctionDefinition","parameters":{"id":175,"nodeType":"ParameterList","parameters":[{"constant":false,"id":174,"mutability":"mutable","name":"account","nameLocation":"1451:7:1","nodeType":"VariableDeclaration","scope":186,"src":"1443:15:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":173,"name":"address","nodeType":"ElementaryTypeName","src":"1443:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1442:17:1"},"returnParameters":{"id":178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":177,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":186,"src":"1483:4:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":176,"name":"bool","nodeType":"ElementaryTypeName","src":"1483:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1482:6:1"},"scope":498,"src":"1423:320:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":219,"nodeType":"Block","src":"2729:241:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":201,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":197,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2755:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}],"id":196,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2747:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":195,"name":"address","nodeType":"ElementaryTypeName","src":"2747:7:1","typeDescriptions":{}}},"id":198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2747:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":199,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2761:7:1","memberName":"balance","nodeType":"MemberAccess","src":"2747:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":200,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"2772:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2747:31:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":202,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2780:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":194,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2739:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2739:73:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":204,"nodeType":"ExpressionStatement","src":"2739:73:1"},{"assignments":[206,null],"declarations":[{"constant":false,"id":206,"mutability":"mutable","name":"success","nameLocation":"2829:7:1","nodeType":"VariableDeclaration","scope":219,"src":"2824:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":205,"name":"bool","nodeType":"ElementaryTypeName","src":"2824:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":213,"initialValue":{"arguments":[{"hexValue":"","id":211,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2872:2:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":207,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":189,"src":"2842:9:1","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":208,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2852:4:1","memberName":"call","nodeType":"MemberAccess","src":"2842:14:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":209,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":191,"src":"2864:6:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2842:29:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2823:52:1"},{"expression":{"arguments":[{"id":215,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":206,"src":"2893:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2902:60:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":214,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2885:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":217,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2885:78:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":218,"nodeType":"ExpressionStatement","src":"2885:78:1"}]},"documentation":{"id":187,"nodeType":"StructuredDocumentation","src":"1749:904:1","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":220,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2667:9:1","nodeType":"FunctionDefinition","parameters":{"id":192,"nodeType":"ParameterList","parameters":[{"constant":false,"id":189,"mutability":"mutable","name":"recipient","nameLocation":"2693:9:1","nodeType":"VariableDeclaration","scope":220,"src":"2677:25:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":188,"name":"address","nodeType":"ElementaryTypeName","src":"2677:15:1","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":191,"mutability":"mutable","name":"amount","nameLocation":"2712:6:1","nodeType":"VariableDeclaration","scope":220,"src":"2704:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":190,"name":"uint256","nodeType":"ElementaryTypeName","src":"2704:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2676:43:1"},"returnParameters":{"id":193,"nodeType":"ParameterList","parameters":[],"src":"2729:0:1"},"scope":498,"src":"2658:312:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":237,"nodeType":"Block","src":"3801:96:1","statements":[{"expression":{"arguments":[{"id":231,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":223,"src":"3840:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":232,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":225,"src":"3848:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3854:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":234,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3857:32:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":230,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"3818:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3818:72:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":229,"id":236,"nodeType":"Return","src":"3811:79:1"}]},"documentation":{"id":221,"nodeType":"StructuredDocumentation","src":"2976:731:1","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":238,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3721:12:1","nodeType":"FunctionDefinition","parameters":{"id":226,"nodeType":"ParameterList","parameters":[{"constant":false,"id":223,"mutability":"mutable","name":"target","nameLocation":"3742:6:1","nodeType":"VariableDeclaration","scope":238,"src":"3734:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":222,"name":"address","nodeType":"ElementaryTypeName","src":"3734:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":225,"mutability":"mutable","name":"data","nameLocation":"3763:4:1","nodeType":"VariableDeclaration","scope":238,"src":"3750:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":224,"name":"bytes","nodeType":"ElementaryTypeName","src":"3750:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3733:35:1"},"returnParameters":{"id":229,"nodeType":"ParameterList","parameters":[{"constant":false,"id":228,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":238,"src":"3787:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":227,"name":"bytes","nodeType":"ElementaryTypeName","src":"3787:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3786:14:1"},"scope":498,"src":"3712:185:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":257,"nodeType":"Block","src":"4266:76:1","statements":[{"expression":{"arguments":[{"id":251,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":241,"src":"4305:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":252,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":243,"src":"4313:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4319:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":254,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":245,"src":"4322:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":250,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"4283:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":255,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4283:52:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":249,"id":256,"nodeType":"Return","src":"4276:59:1"}]},"documentation":{"id":239,"nodeType":"StructuredDocumentation","src":"3903:211:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":258,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4128:12:1","nodeType":"FunctionDefinition","parameters":{"id":246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":241,"mutability":"mutable","name":"target","nameLocation":"4158:6:1","nodeType":"VariableDeclaration","scope":258,"src":"4150:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":240,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":243,"mutability":"mutable","name":"data","nameLocation":"4187:4:1","nodeType":"VariableDeclaration","scope":258,"src":"4174:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":242,"name":"bytes","nodeType":"ElementaryTypeName","src":"4174:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":245,"mutability":"mutable","name":"errorMessage","nameLocation":"4215:12:1","nodeType":"VariableDeclaration","scope":258,"src":"4201:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":244,"name":"string","nodeType":"ElementaryTypeName","src":"4201:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4140:93:1"},"returnParameters":{"id":249,"nodeType":"ParameterList","parameters":[{"constant":false,"id":248,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":258,"src":"4252:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":247,"name":"bytes","nodeType":"ElementaryTypeName","src":"4252:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4251:14:1"},"scope":498,"src":"4119:223:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":277,"nodeType":"Block","src":"4817:111:1","statements":[{"expression":{"arguments":[{"id":271,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":261,"src":"4856:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":263,"src":"4864:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":265,"src":"4870:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":274,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4877:43:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":270,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[278,322],"referencedDeclaration":322,"src":"4834:21:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4834:87:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":269,"id":276,"nodeType":"Return","src":"4827:94:1"}]},"documentation":{"id":259,"nodeType":"StructuredDocumentation","src":"4348:351:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":278,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4713:21:1","nodeType":"FunctionDefinition","parameters":{"id":266,"nodeType":"ParameterList","parameters":[{"constant":false,"id":261,"mutability":"mutable","name":"target","nameLocation":"4743:6:1","nodeType":"VariableDeclaration","scope":278,"src":"4735:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":260,"name":"address","nodeType":"ElementaryTypeName","src":"4735:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":263,"mutability":"mutable","name":"data","nameLocation":"4764:4:1","nodeType":"VariableDeclaration","scope":278,"src":"4751:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":262,"name":"bytes","nodeType":"ElementaryTypeName","src":"4751:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":265,"mutability":"mutable","name":"value","nameLocation":"4778:5:1","nodeType":"VariableDeclaration","scope":278,"src":"4770:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":264,"name":"uint256","nodeType":"ElementaryTypeName","src":"4770:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4734:50:1"},"returnParameters":{"id":269,"nodeType":"ParameterList","parameters":[{"constant":false,"id":268,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":278,"src":"4803:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":267,"name":"bytes","nodeType":"ElementaryTypeName","src":"4803:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4802:14:1"},"scope":498,"src":"4704:224:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":321,"nodeType":"Block","src":"5355:267:1","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":299,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":295,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5381:4:1","typeDescriptions":{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_AddressUpgradeable_$498","typeString":"library AddressUpgradeable"}],"id":294,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5373:7:1","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":293,"name":"address","nodeType":"ElementaryTypeName","src":"5373:7:1","typeDescriptions":{}}},"id":296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5373:13:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":297,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5387:7:1","memberName":"balance","nodeType":"MemberAccess","src":"5373:21:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":298,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"5398:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5373:30:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":300,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5405:40:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":292,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5365:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":301,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5365:81:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":302,"nodeType":"ExpressionStatement","src":"5365:81:1"},{"assignments":[304,306],"declarations":[{"constant":false,"id":304,"mutability":"mutable","name":"success","nameLocation":"5462:7:1","nodeType":"VariableDeclaration","scope":321,"src":"5457:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":303,"name":"bool","nodeType":"ElementaryTypeName","src":"5457:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":306,"mutability":"mutable","name":"returndata","nameLocation":"5484:10:1","nodeType":"VariableDeclaration","scope":321,"src":"5471:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":305,"name":"bytes","nodeType":"ElementaryTypeName","src":"5471:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":313,"initialValue":{"arguments":[{"id":311,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":283,"src":"5524:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":307,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"5498:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":308,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5505:4:1","memberName":"call","nodeType":"MemberAccess","src":"5498:11:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":309,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":285,"src":"5517:5:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5498:25:1","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5498:31:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5456:73:1"},{"expression":{"arguments":[{"id":315,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":281,"src":"5573:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":316,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":304,"src":"5581:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":317,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":306,"src":"5590:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":318,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":287,"src":"5602:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":314,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"5546:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5546:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":291,"id":320,"nodeType":"Return","src":"5539:76:1"}]},"documentation":{"id":279,"nodeType":"StructuredDocumentation","src":"4934:237:1","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":322,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5185:21:1","nodeType":"FunctionDefinition","parameters":{"id":288,"nodeType":"ParameterList","parameters":[{"constant":false,"id":281,"mutability":"mutable","name":"target","nameLocation":"5224:6:1","nodeType":"VariableDeclaration","scope":322,"src":"5216:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":280,"name":"address","nodeType":"ElementaryTypeName","src":"5216:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":283,"mutability":"mutable","name":"data","nameLocation":"5253:4:1","nodeType":"VariableDeclaration","scope":322,"src":"5240:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":282,"name":"bytes","nodeType":"ElementaryTypeName","src":"5240:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":285,"mutability":"mutable","name":"value","nameLocation":"5275:5:1","nodeType":"VariableDeclaration","scope":322,"src":"5267:13:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":284,"name":"uint256","nodeType":"ElementaryTypeName","src":"5267:7:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":287,"mutability":"mutable","name":"errorMessage","nameLocation":"5304:12:1","nodeType":"VariableDeclaration","scope":322,"src":"5290:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":286,"name":"string","nodeType":"ElementaryTypeName","src":"5290:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5206:116:1"},"returnParameters":{"id":291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":290,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":322,"src":"5341:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":289,"name":"bytes","nodeType":"ElementaryTypeName","src":"5341:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5340:14:1"},"scope":498,"src":"5176:446:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":338,"nodeType":"Block","src":"5899:97:1","statements":[{"expression":{"arguments":[{"id":333,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":325,"src":"5935:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":334,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":327,"src":"5943:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":335,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5949:39:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":332,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[339,368],"referencedDeclaration":368,"src":"5916:18:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5916:73:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":331,"id":337,"nodeType":"Return","src":"5909:80:1"}]},"documentation":{"id":323,"nodeType":"StructuredDocumentation","src":"5628:166:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":339,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5808:18:1","nodeType":"FunctionDefinition","parameters":{"id":328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":325,"mutability":"mutable","name":"target","nameLocation":"5835:6:1","nodeType":"VariableDeclaration","scope":339,"src":"5827:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":324,"name":"address","nodeType":"ElementaryTypeName","src":"5827:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":327,"mutability":"mutable","name":"data","nameLocation":"5856:4:1","nodeType":"VariableDeclaration","scope":339,"src":"5843:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":326,"name":"bytes","nodeType":"ElementaryTypeName","src":"5843:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5826:35:1"},"returnParameters":{"id":331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":339,"src":"5885:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":329,"name":"bytes","nodeType":"ElementaryTypeName","src":"5885:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5884:14:1"},"scope":498,"src":"5799:197:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":367,"nodeType":"Block","src":"6338:168:1","statements":[{"assignments":[352,354],"declarations":[{"constant":false,"id":352,"mutability":"mutable","name":"success","nameLocation":"6354:7:1","nodeType":"VariableDeclaration","scope":367,"src":"6349:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":351,"name":"bool","nodeType":"ElementaryTypeName","src":"6349:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":354,"mutability":"mutable","name":"returndata","nameLocation":"6376:10:1","nodeType":"VariableDeclaration","scope":367,"src":"6363:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":353,"name":"bytes","nodeType":"ElementaryTypeName","src":"6363:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":359,"initialValue":{"arguments":[{"id":357,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":344,"src":"6408:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":355,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"6390:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6397:10:1","memberName":"staticcall","nodeType":"MemberAccess","src":"6390:17:1","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6390:23:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6348:65:1"},{"expression":{"arguments":[{"id":361,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":342,"src":"6457:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":362,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":352,"src":"6465:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":363,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":354,"src":"6474:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":364,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":346,"src":"6486:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":360,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"6430:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6430:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":350,"id":366,"nodeType":"Return","src":"6423:76:1"}]},"documentation":{"id":340,"nodeType":"StructuredDocumentation","src":"6002:173:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":368,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6189:18:1","nodeType":"FunctionDefinition","parameters":{"id":347,"nodeType":"ParameterList","parameters":[{"constant":false,"id":342,"mutability":"mutable","name":"target","nameLocation":"6225:6:1","nodeType":"VariableDeclaration","scope":368,"src":"6217:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":341,"name":"address","nodeType":"ElementaryTypeName","src":"6217:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":344,"mutability":"mutable","name":"data","nameLocation":"6254:4:1","nodeType":"VariableDeclaration","scope":368,"src":"6241:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":343,"name":"bytes","nodeType":"ElementaryTypeName","src":"6241:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":346,"mutability":"mutable","name":"errorMessage","nameLocation":"6282:12:1","nodeType":"VariableDeclaration","scope":368,"src":"6268:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":345,"name":"string","nodeType":"ElementaryTypeName","src":"6268:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6207:93:1"},"returnParameters":{"id":350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":349,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":368,"src":"6324:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":348,"name":"bytes","nodeType":"ElementaryTypeName","src":"6324:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6323:14:1"},"scope":498,"src":"6180:326:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":384,"nodeType":"Block","src":"6782:101:1","statements":[{"expression":{"arguments":[{"id":379,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":371,"src":"6820:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":380,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":373,"src":"6828:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6834:41:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":378,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[385,414],"referencedDeclaration":414,"src":"6799:20:1","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6799:77:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":377,"id":383,"nodeType":"Return","src":"6792:84:1"}]},"documentation":{"id":369,"nodeType":"StructuredDocumentation","src":"6512:168:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":385,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6694:20:1","nodeType":"FunctionDefinition","parameters":{"id":374,"nodeType":"ParameterList","parameters":[{"constant":false,"id":371,"mutability":"mutable","name":"target","nameLocation":"6723:6:1","nodeType":"VariableDeclaration","scope":385,"src":"6715:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":370,"name":"address","nodeType":"ElementaryTypeName","src":"6715:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":373,"mutability":"mutable","name":"data","nameLocation":"6744:4:1","nodeType":"VariableDeclaration","scope":385,"src":"6731:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":372,"name":"bytes","nodeType":"ElementaryTypeName","src":"6731:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6714:35:1"},"returnParameters":{"id":377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":385,"src":"6768:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":375,"name":"bytes","nodeType":"ElementaryTypeName","src":"6768:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6767:14:1"},"scope":498,"src":"6685:198:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":413,"nodeType":"Block","src":"7224:170:1","statements":[{"assignments":[398,400],"declarations":[{"constant":false,"id":398,"mutability":"mutable","name":"success","nameLocation":"7240:7:1","nodeType":"VariableDeclaration","scope":413,"src":"7235:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":397,"name":"bool","nodeType":"ElementaryTypeName","src":"7235:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":400,"mutability":"mutable","name":"returndata","nameLocation":"7262:10:1","nodeType":"VariableDeclaration","scope":413,"src":"7249:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":399,"name":"bytes","nodeType":"ElementaryTypeName","src":"7249:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":405,"initialValue":{"arguments":[{"id":403,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":390,"src":"7296:4:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":401,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7276:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":402,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7283:12:1","memberName":"delegatecall","nodeType":"MemberAccess","src":"7276:19:1","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":404,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7276:25:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7234:67:1"},{"expression":{"arguments":[{"id":407,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":388,"src":"7345:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":408,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":398,"src":"7353:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":409,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":400,"src":"7362:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":410,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":392,"src":"7374:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":406,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":453,"src":"7318:26:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7318:69:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":396,"id":412,"nodeType":"Return","src":"7311:76:1"}]},"documentation":{"id":386,"nodeType":"StructuredDocumentation","src":"6889:175:1","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":414,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7078:20:1","nodeType":"FunctionDefinition","parameters":{"id":393,"nodeType":"ParameterList","parameters":[{"constant":false,"id":388,"mutability":"mutable","name":"target","nameLocation":"7116:6:1","nodeType":"VariableDeclaration","scope":414,"src":"7108:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":387,"name":"address","nodeType":"ElementaryTypeName","src":"7108:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":390,"mutability":"mutable","name":"data","nameLocation":"7145:4:1","nodeType":"VariableDeclaration","scope":414,"src":"7132:17:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":389,"name":"bytes","nodeType":"ElementaryTypeName","src":"7132:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":392,"mutability":"mutable","name":"errorMessage","nameLocation":"7173:12:1","nodeType":"VariableDeclaration","scope":414,"src":"7159:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":391,"name":"string","nodeType":"ElementaryTypeName","src":"7159:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7098:93:1"},"returnParameters":{"id":396,"nodeType":"ParameterList","parameters":[{"constant":false,"id":395,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":414,"src":"7210:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":394,"name":"bytes","nodeType":"ElementaryTypeName","src":"7210:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7209:14:1"},"scope":498,"src":"7069:325:1","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":452,"nodeType":"Block","src":"7876:434:1","statements":[{"condition":{"id":428,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":419,"src":"7890:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":450,"nodeType":"Block","src":"8246:58:1","statements":[{"expression":{"arguments":[{"id":446,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"8268:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":447,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":423,"src":"8280:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":445,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8260:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":448,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8260:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":449,"nodeType":"ExpressionStatement","src":"8260:33:1"}]},"id":451,"nodeType":"IfStatement","src":"7886:418:1","trueBody":{"id":444,"nodeType":"Block","src":"7899:341:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":432,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":429,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"7917:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":430,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7928:6:1","memberName":"length","nodeType":"MemberAccess","src":"7917:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":431,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7938:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7917:22:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":441,"nodeType":"IfStatement","src":"7913:286:1","trueBody":{"id":440,"nodeType":"Block","src":"7941:258:1","statements":[{"expression":{"arguments":[{"arguments":[{"id":435,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":417,"src":"8143:6:1","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":434,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":186,"src":"8132:10:1","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":436,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8132:18:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8152:31:1","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":433,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8124:7:1","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":438,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8124:60:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":439,"nodeType":"ExpressionStatement","src":"8124:60:1"}]}},{"expression":{"id":442,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":421,"src":"8219:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":427,"id":443,"nodeType":"Return","src":"8212:17:1"}]}}]},"documentation":{"id":415,"nodeType":"StructuredDocumentation","src":"7400:277:1","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":453,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7691:26:1","nodeType":"FunctionDefinition","parameters":{"id":424,"nodeType":"ParameterList","parameters":[{"constant":false,"id":417,"mutability":"mutable","name":"target","nameLocation":"7735:6:1","nodeType":"VariableDeclaration","scope":453,"src":"7727:14:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":416,"name":"address","nodeType":"ElementaryTypeName","src":"7727:7:1","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":419,"mutability":"mutable","name":"success","nameLocation":"7756:7:1","nodeType":"VariableDeclaration","scope":453,"src":"7751:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":418,"name":"bool","nodeType":"ElementaryTypeName","src":"7751:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":421,"mutability":"mutable","name":"returndata","nameLocation":"7786:10:1","nodeType":"VariableDeclaration","scope":453,"src":"7773:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":420,"name":"bytes","nodeType":"ElementaryTypeName","src":"7773:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":423,"mutability":"mutable","name":"errorMessage","nameLocation":"7820:12:1","nodeType":"VariableDeclaration","scope":453,"src":"7806:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":422,"name":"string","nodeType":"ElementaryTypeName","src":"7806:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7717:121:1"},"returnParameters":{"id":427,"nodeType":"ParameterList","parameters":[{"constant":false,"id":426,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":453,"src":"7862:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":425,"name":"bytes","nodeType":"ElementaryTypeName","src":"7862:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7861:14:1"},"scope":498,"src":"7682:628:1","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":476,"nodeType":"Block","src":"8691:135:1","statements":[{"condition":{"id":465,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":456,"src":"8705:7:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":474,"nodeType":"Block","src":"8762:58:1","statements":[{"expression":{"arguments":[{"id":470,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8784:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":471,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":460,"src":"8796:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":469,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":497,"src":"8776:7:1","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8776:33:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":473,"nodeType":"ExpressionStatement","src":"8776:33:1"}]},"id":475,"nodeType":"IfStatement","src":"8701:119:1","trueBody":{"id":468,"nodeType":"Block","src":"8714:42:1","statements":[{"expression":{"id":466,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":458,"src":"8735:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":464,"id":467,"nodeType":"Return","src":"8728:17:1"}]}}]},"documentation":{"id":454,"nodeType":"StructuredDocumentation","src":"8316:210:1","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":477,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8540:16:1","nodeType":"FunctionDefinition","parameters":{"id":461,"nodeType":"ParameterList","parameters":[{"constant":false,"id":456,"mutability":"mutable","name":"success","nameLocation":"8571:7:1","nodeType":"VariableDeclaration","scope":477,"src":"8566:12:1","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":455,"name":"bool","nodeType":"ElementaryTypeName","src":"8566:4:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":458,"mutability":"mutable","name":"returndata","nameLocation":"8601:10:1","nodeType":"VariableDeclaration","scope":477,"src":"8588:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":457,"name":"bytes","nodeType":"ElementaryTypeName","src":"8588:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":460,"mutability":"mutable","name":"errorMessage","nameLocation":"8635:12:1","nodeType":"VariableDeclaration","scope":477,"src":"8621:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":459,"name":"string","nodeType":"ElementaryTypeName","src":"8621:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8556:97:1"},"returnParameters":{"id":464,"nodeType":"ParameterList","parameters":[{"constant":false,"id":463,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":477,"src":"8677:12:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":462,"name":"bytes","nodeType":"ElementaryTypeName","src":"8677:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8676:14:1"},"scope":498,"src":"8531:295:1","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":496,"nodeType":"Block","src":"8915:457:1","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":487,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":484,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":479,"src":"8991:10:1","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":485,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9002:6:1","memberName":"length","nodeType":"MemberAccess","src":"8991:17:1","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9011:1:1","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8991:21:1","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":494,"nodeType":"Block","src":"9321:45:1","statements":[{"expression":{"arguments":[{"id":491,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":481,"src":"9342:12:1","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":490,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9335:6:1","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9335:20:1","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":493,"nodeType":"ExpressionStatement","src":"9335:20:1"}]},"id":495,"nodeType":"IfStatement","src":"8987:379:1","trueBody":{"id":489,"nodeType":"Block","src":"9014:301:1","statements":[{"AST":{"nodeType":"YulBlock","src":"9172:133:1","statements":[{"nodeType":"YulVariableDeclaration","src":"9190:40:1","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9219:10:1"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9213:5:1"},"nodeType":"YulFunctionCall","src":"9213:17:1"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9194:15:1","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9258:2:1","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9262:10:1"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9254:3:1"},"nodeType":"YulFunctionCall","src":"9254:19:1"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9275:15:1"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9247:6:1"},"nodeType":"YulFunctionCall","src":"9247:44:1"},"nodeType":"YulExpressionStatement","src":"9247:44:1"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":479,"isOffset":false,"isSlot":false,"src":"9219:10:1","valueSize":1},{"declaration":479,"isOffset":false,"isSlot":false,"src":"9262:10:1","valueSize":1}],"id":488,"nodeType":"InlineAssembly","src":"9163:142:1"}]}}]},"id":497,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8841:7:1","nodeType":"FunctionDefinition","parameters":{"id":482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":479,"mutability":"mutable","name":"returndata","nameLocation":"8862:10:1","nodeType":"VariableDeclaration","scope":497,"src":"8849:23:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":478,"name":"bytes","nodeType":"ElementaryTypeName","src":"8849:5:1","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":481,"mutability":"mutable","name":"errorMessage","nameLocation":"8888:12:1","nodeType":"VariableDeclaration","scope":497,"src":"8874:26:1","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":480,"name":"string","nodeType":"ElementaryTypeName","src":"8874:6:1","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8848:53:1"},"returnParameters":{"id":483,"nodeType":"ParameterList","parameters":[],"src":"8915:0:1"},"scope":498,"src":"8832:540:1","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":499,"src":"194:9180:1","usedErrors":[]}],"src":"101:9274:1"},"id":1},"@openzeppelin/contracts/utils/Address.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","exportedSymbols":{"Address":[828]},"id":829,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":500,"literals":["solidity","^","0.8",".1"],"nodeType":"PragmaDirective","src":"101:23:2"},{"abstract":false,"baseContracts":[],"canonicalName":"Address","contractDependencies":[],"contractKind":"library","documentation":{"id":501,"nodeType":"StructuredDocumentation","src":"126:67:2","text":" @dev Collection of functions related to the address type"},"fullyImplemented":true,"id":828,"linearizedBaseContracts":[828],"name":"Address","nameLocation":"202:7:2","nodeType":"ContractDefinition","nodes":[{"body":{"id":515,"nodeType":"Block","src":"1478:254:2","statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":509,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":504,"src":"1702:7:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":510,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1710:4:2","memberName":"code","nodeType":"MemberAccess","src":"1702:12:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":511,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1715:6:2","memberName":"length","nodeType":"MemberAccess","src":"1702:19:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":512,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1724:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"1702:23:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":508,"id":514,"nodeType":"Return","src":"1695:30:2"}]},"documentation":{"id":502,"nodeType":"StructuredDocumentation","src":"216:1191:2","text":" @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n  - an externally-owned account\n  - a contract in construction\n  - an address where a contract will be created\n  - an address where a contract lived, but was destroyed\n Furthermore, `isContract` will also return true if the target contract within\n the same transaction is already scheduled for destruction by `SELFDESTRUCT`,\n which only has an effect at the end of a transaction.\n ====\n [IMPORTANT]\n ====\n You shouldn't rely on `isContract` to protect against flash loan attacks!\n Preventing calls from contracts is highly discouraged. It breaks composability, breaks support for smart wallets\n like Gnosis Safe, and does not provide security since it can be circumvented by calling from a contract\n constructor.\n ===="},"id":516,"implemented":true,"kind":"function","modifiers":[],"name":"isContract","nameLocation":"1421:10:2","nodeType":"FunctionDefinition","parameters":{"id":505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":504,"mutability":"mutable","name":"account","nameLocation":"1440:7:2","nodeType":"VariableDeclaration","scope":516,"src":"1432:15:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":503,"name":"address","nodeType":"ElementaryTypeName","src":"1432:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1431:17:2"},"returnParameters":{"id":508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":507,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":516,"src":"1472:4:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":506,"name":"bool","nodeType":"ElementaryTypeName","src":"1472:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1471:6:2"},"scope":828,"src":"1412:320:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":549,"nodeType":"Block","src":"2718:241:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":527,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2744:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}],"id":526,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2736:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":525,"name":"address","nodeType":"ElementaryTypeName","src":"2736:7:2","typeDescriptions":{}}},"id":528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2736:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2750:7:2","memberName":"balance","nodeType":"MemberAccess","src":"2736:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":530,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"2761:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2736:31:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e6365","id":532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2769:31:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""},"value":"Address: insufficient balance"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9","typeString":"literal_string \"Address: insufficient balance\""}],"id":524,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2728:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":533,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2728:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":534,"nodeType":"ExpressionStatement","src":"2728:73:2"},{"assignments":[536,null],"declarations":[{"constant":false,"id":536,"mutability":"mutable","name":"success","nameLocation":"2818:7:2","nodeType":"VariableDeclaration","scope":549,"src":"2813:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":535,"name":"bool","nodeType":"ElementaryTypeName","src":"2813:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":543,"initialValue":{"arguments":[{"hexValue":"","id":541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2861:2:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":537,"name":"recipient","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":519,"src":"2831:9:2","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":538,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2841:4:2","memberName":"call","nodeType":"MemberAccess","src":"2831:14:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":540,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":539,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":521,"src":"2853:6:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2831:29:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2831:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"2812:52:2"},{"expression":{"arguments":[{"id":545,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":536,"src":"2882:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564","id":546,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2891:60:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""},"value":"Address: unable to send value, recipient may have reverted"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae","typeString":"literal_string \"Address: unable to send value, recipient may have reverted\""}],"id":544,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2874:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2874:78:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":548,"nodeType":"ExpressionStatement","src":"2874:78:2"}]},"documentation":{"id":517,"nodeType":"StructuredDocumentation","src":"1738:904:2","text":" @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.8.0/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]."},"id":550,"implemented":true,"kind":"function","modifiers":[],"name":"sendValue","nameLocation":"2656:9:2","nodeType":"FunctionDefinition","parameters":{"id":522,"nodeType":"ParameterList","parameters":[{"constant":false,"id":519,"mutability":"mutable","name":"recipient","nameLocation":"2682:9:2","nodeType":"VariableDeclaration","scope":550,"src":"2666:25:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"typeName":{"id":518,"name":"address","nodeType":"ElementaryTypeName","src":"2666:15:2","stateMutability":"payable","typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"visibility":"internal"},{"constant":false,"id":521,"mutability":"mutable","name":"amount","nameLocation":"2701:6:2","nodeType":"VariableDeclaration","scope":550,"src":"2693:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":520,"name":"uint256","nodeType":"ElementaryTypeName","src":"2693:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2665:43:2"},"returnParameters":{"id":523,"nodeType":"ParameterList","parameters":[],"src":"2718:0:2"},"scope":828,"src":"2647:312:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":567,"nodeType":"Block","src":"3790:96:2","statements":[{"expression":{"arguments":[{"id":561,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":553,"src":"3829:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":562,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":555,"src":"3837:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3843:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564","id":564,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3846:32:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""},"value":"Address: low-level call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df","typeString":"literal_string \"Address: low-level call failed\""}],"id":560,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"3807:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3807:72:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":559,"id":566,"nodeType":"Return","src":"3800:79:2"}]},"documentation":{"id":551,"nodeType":"StructuredDocumentation","src":"2965:731:2","text":" @dev Performs a Solidity function call using a low level `call`. A\n plain `call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._"},"id":568,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"3710:12:2","nodeType":"FunctionDefinition","parameters":{"id":556,"nodeType":"ParameterList","parameters":[{"constant":false,"id":553,"mutability":"mutable","name":"target","nameLocation":"3731:6:2","nodeType":"VariableDeclaration","scope":568,"src":"3723:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":552,"name":"address","nodeType":"ElementaryTypeName","src":"3723:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":555,"mutability":"mutable","name":"data","nameLocation":"3752:4:2","nodeType":"VariableDeclaration","scope":568,"src":"3739:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":554,"name":"bytes","nodeType":"ElementaryTypeName","src":"3739:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3722:35:2"},"returnParameters":{"id":559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":558,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":568,"src":"3776:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":557,"name":"bytes","nodeType":"ElementaryTypeName","src":"3776:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3775:14:2"},"scope":828,"src":"3701:185:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":587,"nodeType":"Block","src":"4255:76:2","statements":[{"expression":{"arguments":[{"id":581,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":571,"src":"4294:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":582,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":573,"src":"4302:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"30","id":583,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4308:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":584,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":575,"src":"4311:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":580,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"4272:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":585,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4272:52:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":579,"id":586,"nodeType":"Return","src":"4265:59:2"}]},"documentation":{"id":569,"nodeType":"StructuredDocumentation","src":"3892:211:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":588,"implemented":true,"kind":"function","modifiers":[],"name":"functionCall","nameLocation":"4117:12:2","nodeType":"FunctionDefinition","parameters":{"id":576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":571,"mutability":"mutable","name":"target","nameLocation":"4147:6:2","nodeType":"VariableDeclaration","scope":588,"src":"4139:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":570,"name":"address","nodeType":"ElementaryTypeName","src":"4139:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":573,"mutability":"mutable","name":"data","nameLocation":"4176:4:2","nodeType":"VariableDeclaration","scope":588,"src":"4163:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":572,"name":"bytes","nodeType":"ElementaryTypeName","src":"4163:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":575,"mutability":"mutable","name":"errorMessage","nameLocation":"4204:12:2","nodeType":"VariableDeclaration","scope":588,"src":"4190:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":574,"name":"string","nodeType":"ElementaryTypeName","src":"4190:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"4129:93:2"},"returnParameters":{"id":579,"nodeType":"ParameterList","parameters":[{"constant":false,"id":578,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":588,"src":"4241:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":577,"name":"bytes","nodeType":"ElementaryTypeName","src":"4241:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4240:14:2"},"scope":828,"src":"4108:223:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":607,"nodeType":"Block","src":"4806:111:2","statements":[{"expression":{"arguments":[{"id":601,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":591,"src":"4845:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":602,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":593,"src":"4853:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":603,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":595,"src":"4859:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564","id":604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4866:43:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""},"value":"Address: low-level call with value failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc","typeString":"literal_string \"Address: low-level call with value failed\""}],"id":600,"name":"functionCallWithValue","nodeType":"Identifier","overloadedDeclarations":[608,652],"referencedDeclaration":652,"src":"4823:21:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,uint256,string memory) returns (bytes memory)"}},"id":605,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4823:87:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":599,"id":606,"nodeType":"Return","src":"4816:94:2"}]},"documentation":{"id":589,"nodeType":"StructuredDocumentation","src":"4337:351:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._"},"id":608,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"4702:21:2","nodeType":"FunctionDefinition","parameters":{"id":596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":591,"mutability":"mutable","name":"target","nameLocation":"4732:6:2","nodeType":"VariableDeclaration","scope":608,"src":"4724:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":590,"name":"address","nodeType":"ElementaryTypeName","src":"4724:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":593,"mutability":"mutable","name":"data","nameLocation":"4753:4:2","nodeType":"VariableDeclaration","scope":608,"src":"4740:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":592,"name":"bytes","nodeType":"ElementaryTypeName","src":"4740:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":595,"mutability":"mutable","name":"value","nameLocation":"4767:5:2","nodeType":"VariableDeclaration","scope":608,"src":"4759:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":594,"name":"uint256","nodeType":"ElementaryTypeName","src":"4759:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4723:50:2"},"returnParameters":{"id":599,"nodeType":"ParameterList","parameters":[{"constant":false,"id":598,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":608,"src":"4792:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":597,"name":"bytes","nodeType":"ElementaryTypeName","src":"4792:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4791:14:2"},"scope":828,"src":"4693:224:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":651,"nodeType":"Block","src":"5344:267:2","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":629,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":625,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5370:4:2","typeDescriptions":{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_Address_$828","typeString":"library Address"}],"id":624,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5362:7:2","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":623,"name":"address","nodeType":"ElementaryTypeName","src":"5362:7:2","typeDescriptions":{}}},"id":626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5362:13:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5376:7:2","memberName":"balance","nodeType":"MemberAccess","src":"5362:21:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":628,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5387:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5362:30:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c","id":630,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5394:40:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""},"value":"Address: insufficient balance for call"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c","typeString":"literal_string \"Address: insufficient balance for call\""}],"id":622,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5354:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5354:81:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":632,"nodeType":"ExpressionStatement","src":"5354:81:2"},{"assignments":[634,636],"declarations":[{"constant":false,"id":634,"mutability":"mutable","name":"success","nameLocation":"5451:7:2","nodeType":"VariableDeclaration","scope":651,"src":"5446:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":633,"name":"bool","nodeType":"ElementaryTypeName","src":"5446:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":636,"mutability":"mutable","name":"returndata","nameLocation":"5473:10:2","nodeType":"VariableDeclaration","scope":651,"src":"5460:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":635,"name":"bytes","nodeType":"ElementaryTypeName","src":"5460:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":643,"initialValue":{"arguments":[{"id":641,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":613,"src":"5513:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":637,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"5487:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5494:4:2","memberName":"call","nodeType":"MemberAccess","src":"5487:11:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":639,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":615,"src":"5506:5:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"5487:25:2","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5487:31:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"5445:73:2"},{"expression":{"arguments":[{"id":645,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":611,"src":"5562:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":646,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":634,"src":"5570:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":647,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":636,"src":"5579:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":648,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":617,"src":"5591:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":644,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"5535:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5535:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":621,"id":650,"nodeType":"Return","src":"5528:76:2"}]},"documentation":{"id":609,"nodeType":"StructuredDocumentation","src":"4923:237:2","text":" @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._"},"id":652,"implemented":true,"kind":"function","modifiers":[],"name":"functionCallWithValue","nameLocation":"5174:21:2","nodeType":"FunctionDefinition","parameters":{"id":618,"nodeType":"ParameterList","parameters":[{"constant":false,"id":611,"mutability":"mutable","name":"target","nameLocation":"5213:6:2","nodeType":"VariableDeclaration","scope":652,"src":"5205:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":610,"name":"address","nodeType":"ElementaryTypeName","src":"5205:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":613,"mutability":"mutable","name":"data","nameLocation":"5242:4:2","nodeType":"VariableDeclaration","scope":652,"src":"5229:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":612,"name":"bytes","nodeType":"ElementaryTypeName","src":"5229:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":615,"mutability":"mutable","name":"value","nameLocation":"5264:5:2","nodeType":"VariableDeclaration","scope":652,"src":"5256:13:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":614,"name":"uint256","nodeType":"ElementaryTypeName","src":"5256:7:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":617,"mutability":"mutable","name":"errorMessage","nameLocation":"5293:12:2","nodeType":"VariableDeclaration","scope":652,"src":"5279:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":616,"name":"string","nodeType":"ElementaryTypeName","src":"5279:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"5195:116:2"},"returnParameters":{"id":621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":620,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":652,"src":"5330:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":619,"name":"bytes","nodeType":"ElementaryTypeName","src":"5330:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5329:14:2"},"scope":828,"src":"5165:446:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":668,"nodeType":"Block","src":"5888:97:2","statements":[{"expression":{"arguments":[{"id":663,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":655,"src":"5924:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":664,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":657,"src":"5932:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564","id":665,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5938:39:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""},"value":"Address: low-level static call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0","typeString":"literal_string \"Address: low-level static call failed\""}],"id":662,"name":"functionStaticCall","nodeType":"Identifier","overloadedDeclarations":[669,698],"referencedDeclaration":698,"src":"5905:18:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) view returns (bytes memory)"}},"id":666,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5905:73:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":661,"id":667,"nodeType":"Return","src":"5898:80:2"}]},"documentation":{"id":653,"nodeType":"StructuredDocumentation","src":"5617:166:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":669,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"5797:18:2","nodeType":"FunctionDefinition","parameters":{"id":658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":655,"mutability":"mutable","name":"target","nameLocation":"5824:6:2","nodeType":"VariableDeclaration","scope":669,"src":"5816:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":654,"name":"address","nodeType":"ElementaryTypeName","src":"5816:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":657,"mutability":"mutable","name":"data","nameLocation":"5845:4:2","nodeType":"VariableDeclaration","scope":669,"src":"5832:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":656,"name":"bytes","nodeType":"ElementaryTypeName","src":"5832:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5815:35:2"},"returnParameters":{"id":661,"nodeType":"ParameterList","parameters":[{"constant":false,"id":660,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":669,"src":"5874:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":659,"name":"bytes","nodeType":"ElementaryTypeName","src":"5874:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"5873:14:2"},"scope":828,"src":"5788:197:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":697,"nodeType":"Block","src":"6327:168:2","statements":[{"assignments":[682,684],"declarations":[{"constant":false,"id":682,"mutability":"mutable","name":"success","nameLocation":"6343:7:2","nodeType":"VariableDeclaration","scope":697,"src":"6338:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":681,"name":"bool","nodeType":"ElementaryTypeName","src":"6338:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":684,"mutability":"mutable","name":"returndata","nameLocation":"6365:10:2","nodeType":"VariableDeclaration","scope":697,"src":"6352:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":683,"name":"bytes","nodeType":"ElementaryTypeName","src":"6352:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":689,"initialValue":{"arguments":[{"id":687,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":674,"src":"6397:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":685,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6379:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6386:10:2","memberName":"staticcall","nodeType":"MemberAccess","src":"6379:17:2","typeDescriptions":{"typeIdentifier":"t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) view returns (bool,bytes memory)"}},"id":688,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6379:23:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"6337:65:2"},{"expression":{"arguments":[{"id":691,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":672,"src":"6446:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":692,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":682,"src":"6454:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":693,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":684,"src":"6463:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":694,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":676,"src":"6475:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":690,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"6419:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":695,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6419:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":680,"id":696,"nodeType":"Return","src":"6412:76:2"}]},"documentation":{"id":670,"nodeType":"StructuredDocumentation","src":"5991:173:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._"},"id":698,"implemented":true,"kind":"function","modifiers":[],"name":"functionStaticCall","nameLocation":"6178:18:2","nodeType":"FunctionDefinition","parameters":{"id":677,"nodeType":"ParameterList","parameters":[{"constant":false,"id":672,"mutability":"mutable","name":"target","nameLocation":"6214:6:2","nodeType":"VariableDeclaration","scope":698,"src":"6206:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":671,"name":"address","nodeType":"ElementaryTypeName","src":"6206:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":674,"mutability":"mutable","name":"data","nameLocation":"6243:4:2","nodeType":"VariableDeclaration","scope":698,"src":"6230:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":673,"name":"bytes","nodeType":"ElementaryTypeName","src":"6230:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":676,"mutability":"mutable","name":"errorMessage","nameLocation":"6271:12:2","nodeType":"VariableDeclaration","scope":698,"src":"6257:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":675,"name":"string","nodeType":"ElementaryTypeName","src":"6257:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"6196:93:2"},"returnParameters":{"id":680,"nodeType":"ParameterList","parameters":[{"constant":false,"id":679,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":698,"src":"6313:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":678,"name":"bytes","nodeType":"ElementaryTypeName","src":"6313:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6312:14:2"},"scope":828,"src":"6169:326:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":714,"nodeType":"Block","src":"6771:101:2","statements":[{"expression":{"arguments":[{"id":709,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":701,"src":"6809:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":710,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":703,"src":"6817:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"hexValue":"416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564","id":711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6823:41:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""},"value":"Address: low-level delegate call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398","typeString":"literal_string \"Address: low-level delegate call failed\""}],"id":708,"name":"functionDelegateCall","nodeType":"Identifier","overloadedDeclarations":[715,744],"referencedDeclaration":744,"src":"6788:20:2","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory,string memory) returns (bytes memory)"}},"id":712,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:77:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":707,"id":713,"nodeType":"Return","src":"6781:84:2"}]},"documentation":{"id":699,"nodeType":"StructuredDocumentation","src":"6501:168:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":715,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"6683:20:2","nodeType":"FunctionDefinition","parameters":{"id":704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":701,"mutability":"mutable","name":"target","nameLocation":"6712:6:2","nodeType":"VariableDeclaration","scope":715,"src":"6704:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":700,"name":"address","nodeType":"ElementaryTypeName","src":"6704:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":703,"mutability":"mutable","name":"data","nameLocation":"6733:4:2","nodeType":"VariableDeclaration","scope":715,"src":"6720:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":702,"name":"bytes","nodeType":"ElementaryTypeName","src":"6720:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6703:35:2"},"returnParameters":{"id":707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":715,"src":"6757:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":705,"name":"bytes","nodeType":"ElementaryTypeName","src":"6757:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"6756:14:2"},"scope":828,"src":"6674:198:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":743,"nodeType":"Block","src":"7213:170:2","statements":[{"assignments":[728,730],"declarations":[{"constant":false,"id":728,"mutability":"mutable","name":"success","nameLocation":"7229:7:2","nodeType":"VariableDeclaration","scope":743,"src":"7224:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":727,"name":"bool","nodeType":"ElementaryTypeName","src":"7224:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":730,"mutability":"mutable","name":"returndata","nameLocation":"7251:10:2","nodeType":"VariableDeclaration","scope":743,"src":"7238:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":729,"name":"bytes","nodeType":"ElementaryTypeName","src":"7238:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":735,"initialValue":{"arguments":[{"id":733,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":720,"src":"7285:4:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":731,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"7265:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":732,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7272:12:2","memberName":"delegatecall","nodeType":"MemberAccess","src":"7265:19:2","typeDescriptions":{"typeIdentifier":"t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) returns (bool,bytes memory)"}},"id":734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7265:25:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"7223:67:2"},{"expression":{"arguments":[{"id":737,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":718,"src":"7334:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":738,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":728,"src":"7342:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"id":739,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":730,"src":"7351:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":740,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":722,"src":"7363:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":736,"name":"verifyCallResultFromTarget","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":783,"src":"7307:26:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bool,bytes memory,string memory) view returns (bytes memory)"}},"id":741,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7307:69:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":726,"id":742,"nodeType":"Return","src":"7300:76:2"}]},"documentation":{"id":716,"nodeType":"StructuredDocumentation","src":"6878:175:2","text":" @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._"},"id":744,"implemented":true,"kind":"function","modifiers":[],"name":"functionDelegateCall","nameLocation":"7067:20:2","nodeType":"FunctionDefinition","parameters":{"id":723,"nodeType":"ParameterList","parameters":[{"constant":false,"id":718,"mutability":"mutable","name":"target","nameLocation":"7105:6:2","nodeType":"VariableDeclaration","scope":744,"src":"7097:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":717,"name":"address","nodeType":"ElementaryTypeName","src":"7097:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":720,"mutability":"mutable","name":"data","nameLocation":"7134:4:2","nodeType":"VariableDeclaration","scope":744,"src":"7121:17:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":719,"name":"bytes","nodeType":"ElementaryTypeName","src":"7121:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":722,"mutability":"mutable","name":"errorMessage","nameLocation":"7162:12:2","nodeType":"VariableDeclaration","scope":744,"src":"7148:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":721,"name":"string","nodeType":"ElementaryTypeName","src":"7148:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7087:93:2"},"returnParameters":{"id":726,"nodeType":"ParameterList","parameters":[{"constant":false,"id":725,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":744,"src":"7199:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":724,"name":"bytes","nodeType":"ElementaryTypeName","src":"7199:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7198:14:2"},"scope":828,"src":"7058:325:2","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":782,"nodeType":"Block","src":"7865:434:2","statements":[{"condition":{"id":758,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":749,"src":"7879:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":780,"nodeType":"Block","src":"8235:58:2","statements":[{"expression":{"arguments":[{"id":776,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"8257:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":777,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":753,"src":"8269:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":775,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"8249:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":778,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8249:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":779,"nodeType":"ExpressionStatement","src":"8249:33:2"}]},"id":781,"nodeType":"IfStatement","src":"7875:418:2","trueBody":{"id":774,"nodeType":"Block","src":"7888:341:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":759,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"7906:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7917:6:2","memberName":"length","nodeType":"MemberAccess","src":"7906:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":761,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7927:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7906:22:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":771,"nodeType":"IfStatement","src":"7902:286:2","trueBody":{"id":770,"nodeType":"Block","src":"7930:258:2","statements":[{"expression":{"arguments":[{"arguments":[{"id":765,"name":"target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":747,"src":"8132:6:2","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":764,"name":"isContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":516,"src":"8121:10:2","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":766,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8121:18:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","id":767,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8141:31:2","typeDescriptions":{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""},"value":"Address: call to non-contract"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad","typeString":"literal_string \"Address: call to non-contract\""}],"id":763,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8113:7:2","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8113:60:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":769,"nodeType":"ExpressionStatement","src":"8113:60:2"}]}},{"expression":{"id":772,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":751,"src":"8208:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":757,"id":773,"nodeType":"Return","src":"8201:17:2"}]}}]},"documentation":{"id":745,"nodeType":"StructuredDocumentation","src":"7389:277:2","text":" @dev Tool to verify that a low level call to smart-contract was successful, and revert (either by bubbling\n the revert reason or using the provided one) in case of unsuccessful call or if target was not a contract.\n _Available since v4.8._"},"id":783,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResultFromTarget","nameLocation":"7680:26:2","nodeType":"FunctionDefinition","parameters":{"id":754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":747,"mutability":"mutable","name":"target","nameLocation":"7724:6:2","nodeType":"VariableDeclaration","scope":783,"src":"7716:14:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":746,"name":"address","nodeType":"ElementaryTypeName","src":"7716:7:2","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":749,"mutability":"mutable","name":"success","nameLocation":"7745:7:2","nodeType":"VariableDeclaration","scope":783,"src":"7740:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":748,"name":"bool","nodeType":"ElementaryTypeName","src":"7740:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":751,"mutability":"mutable","name":"returndata","nameLocation":"7775:10:2","nodeType":"VariableDeclaration","scope":783,"src":"7762:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":750,"name":"bytes","nodeType":"ElementaryTypeName","src":"7762:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":753,"mutability":"mutable","name":"errorMessage","nameLocation":"7809:12:2","nodeType":"VariableDeclaration","scope":783,"src":"7795:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":752,"name":"string","nodeType":"ElementaryTypeName","src":"7795:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"7706:121:2"},"returnParameters":{"id":757,"nodeType":"ParameterList","parameters":[{"constant":false,"id":756,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":783,"src":"7851:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":755,"name":"bytes","nodeType":"ElementaryTypeName","src":"7851:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7850:14:2"},"scope":828,"src":"7671:628:2","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":806,"nodeType":"Block","src":"8680:135:2","statements":[{"condition":{"id":795,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":786,"src":"8694:7:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":804,"nodeType":"Block","src":"8751:58:2","statements":[{"expression":{"arguments":[{"id":800,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"8773:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":801,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":790,"src":"8785:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":799,"name":"_revert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":827,"src":"8765:7:2","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (bytes memory,string memory) pure"}},"id":802,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8765:33:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":803,"nodeType":"ExpressionStatement","src":"8765:33:2"}]},"id":805,"nodeType":"IfStatement","src":"8690:119:2","trueBody":{"id":798,"nodeType":"Block","src":"8703:42:2","statements":[{"expression":{"id":796,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":788,"src":"8724:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":794,"id":797,"nodeType":"Return","src":"8717:17:2"}]}}]},"documentation":{"id":784,"nodeType":"StructuredDocumentation","src":"8305:210:2","text":" @dev Tool to verify that a low level call was successful, and revert if it wasn't, either by bubbling the\n revert reason or using the provided one.\n _Available since v4.3._"},"id":807,"implemented":true,"kind":"function","modifiers":[],"name":"verifyCallResult","nameLocation":"8529:16:2","nodeType":"FunctionDefinition","parameters":{"id":791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":786,"mutability":"mutable","name":"success","nameLocation":"8560:7:2","nodeType":"VariableDeclaration","scope":807,"src":"8555:12:2","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":785,"name":"bool","nodeType":"ElementaryTypeName","src":"8555:4:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},{"constant":false,"id":788,"mutability":"mutable","name":"returndata","nameLocation":"8590:10:2","nodeType":"VariableDeclaration","scope":807,"src":"8577:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":787,"name":"bytes","nodeType":"ElementaryTypeName","src":"8577:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":790,"mutability":"mutable","name":"errorMessage","nameLocation":"8624:12:2","nodeType":"VariableDeclaration","scope":807,"src":"8610:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":789,"name":"string","nodeType":"ElementaryTypeName","src":"8610:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8545:97:2"},"returnParameters":{"id":794,"nodeType":"ParameterList","parameters":[{"constant":false,"id":793,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":807,"src":"8666:12:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":792,"name":"bytes","nodeType":"ElementaryTypeName","src":"8666:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"8665:14:2"},"scope":828,"src":"8520:295:2","stateMutability":"pure","virtual":false,"visibility":"internal"},{"body":{"id":826,"nodeType":"Block","src":"8904:457:2","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":814,"name":"returndata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":809,"src":"8980:10:2","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8991:6:2","memberName":"length","nodeType":"MemberAccess","src":"8980:17:2","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":816,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9000:1:2","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8980:21:2","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":824,"nodeType":"Block","src":"9310:45:2","statements":[{"expression":{"arguments":[{"id":821,"name":"errorMessage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":811,"src":"9331:12:2","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"id":820,"name":"revert","nodeType":"Identifier","overloadedDeclarations":[-19,-19],"referencedDeclaration":-19,"src":"9324:6:2","typeDescriptions":{"typeIdentifier":"t_function_revert_pure$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory) pure"}},"id":822,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9324:20:2","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":823,"nodeType":"ExpressionStatement","src":"9324:20:2"}]},"id":825,"nodeType":"IfStatement","src":"8976:379:2","trueBody":{"id":819,"nodeType":"Block","src":"9003:301:2","statements":[{"AST":{"nodeType":"YulBlock","src":"9161:133:2","statements":[{"nodeType":"YulVariableDeclaration","src":"9179:40:2","value":{"arguments":[{"name":"returndata","nodeType":"YulIdentifier","src":"9208:10:2"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"9202:5:2"},"nodeType":"YulFunctionCall","src":"9202:17:2"},"variables":[{"name":"returndata_size","nodeType":"YulTypedName","src":"9183:15:2","type":""}]},{"expression":{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"9247:2:2","type":"","value":"32"},{"name":"returndata","nodeType":"YulIdentifier","src":"9251:10:2"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"9243:3:2"},"nodeType":"YulFunctionCall","src":"9243:19:2"},{"name":"returndata_size","nodeType":"YulIdentifier","src":"9264:15:2"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"9236:6:2"},"nodeType":"YulFunctionCall","src":"9236:44:2"},"nodeType":"YulExpressionStatement","src":"9236:44:2"}]},"documentation":"@solidity memory-safe-assembly","evmVersion":"paris","externalReferences":[{"declaration":809,"isOffset":false,"isSlot":false,"src":"9208:10:2","valueSize":1},{"declaration":809,"isOffset":false,"isSlot":false,"src":"9251:10:2","valueSize":1}],"id":818,"nodeType":"InlineAssembly","src":"9152:142:2"}]}}]},"id":827,"implemented":true,"kind":"function","modifiers":[],"name":"_revert","nameLocation":"8830:7:2","nodeType":"FunctionDefinition","parameters":{"id":812,"nodeType":"ParameterList","parameters":[{"constant":false,"id":809,"mutability":"mutable","name":"returndata","nameLocation":"8851:10:2","nodeType":"VariableDeclaration","scope":827,"src":"8838:23:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":808,"name":"bytes","nodeType":"ElementaryTypeName","src":"8838:5:2","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":811,"mutability":"mutable","name":"errorMessage","nameLocation":"8877:12:2","nodeType":"VariableDeclaration","scope":827,"src":"8863:26:2","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":810,"name":"string","nodeType":"ElementaryTypeName","src":"8863:6:2","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"visibility":"internal"}],"src":"8837:53:2"},"returnParameters":{"id":813,"nodeType":"ParameterList","parameters":[],"src":"8904:0:2"},"scope":828,"src":"8821:540:2","stateMutability":"pure","virtual":false,"visibility":"private"}],"scope":829,"src":"194:9169:2","usedErrors":[]}],"src":"101:9263:2"},"id":2},"@openzeppelin/contracts/utils/Context.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","exportedSymbols":{"Context":[850]},"id":851,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":830,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"86:23:3"},{"abstract":true,"baseContracts":[],"canonicalName":"Context","contractDependencies":[],"contractKind":"contract","documentation":{"id":831,"nodeType":"StructuredDocumentation","src":"111:496:3","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":850,"linearizedBaseContracts":[850],"name":"Context","nameLocation":"626:7:3","nodeType":"ContractDefinition","nodes":[{"body":{"id":839,"nodeType":"Block","src":"702:34:3","statements":[{"expression":{"expression":{"id":836,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"719:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"723:6:3","memberName":"sender","nodeType":"MemberAccess","src":"719:10:3","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":835,"id":838,"nodeType":"Return","src":"712:17:3"}]},"id":840,"implemented":true,"kind":"function","modifiers":[],"name":"_msgSender","nameLocation":"649:10:3","nodeType":"FunctionDefinition","parameters":{"id":832,"nodeType":"ParameterList","parameters":[],"src":"659:2:3"},"returnParameters":{"id":835,"nodeType":"ParameterList","parameters":[{"constant":false,"id":834,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":840,"src":"693:7:3","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":833,"name":"address","nodeType":"ElementaryTypeName","src":"693:7:3","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"692:9:3"},"scope":850,"src":"640:96:3","stateMutability":"view","virtual":true,"visibility":"internal"},{"body":{"id":848,"nodeType":"Block","src":"809:32:3","statements":[{"expression":{"expression":{"id":845,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"826:3:3","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":846,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"830:4:3","memberName":"data","nodeType":"MemberAccess","src":"826:8:3","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"functionReturnParameters":844,"id":847,"nodeType":"Return","src":"819:15:3"}]},"id":849,"implemented":true,"kind":"function","modifiers":[],"name":"_msgData","nameLocation":"751:8:3","nodeType":"FunctionDefinition","parameters":{"id":841,"nodeType":"ParameterList","parameters":[],"src":"759:2:3"},"returnParameters":{"id":844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":843,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":849,"src":"793:14:3","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":842,"name":"bytes","nodeType":"ElementaryTypeName","src":"793:5:3","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"792:16:3"},"scope":850,"src":"742:99:3","stateMutability":"view","virtual":true,"visibility":"internal"}],"scope":851,"src":"608:235:3","usedErrors":[]}],"src":"86:758:3"},"id":3},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","exportedSymbols":{"ERC165Checker":[1044],"IERC165":[1056]},"id":1045,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":852,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"121:23:4"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","file":"./IERC165.sol","id":853,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1045,"sourceUnit":1057,"src":"146:23:4","symbolAliases":[],"unitAlias":""},{"abstract":false,"baseContracts":[],"canonicalName":"ERC165Checker","contractDependencies":[],"contractKind":"library","documentation":{"id":854,"nodeType":"StructuredDocumentation","src":"171:277:4","text":" @dev Library used to query support of an interface declared via {IERC165}.\n Note that these functions return the actual result of the query: they do not\n `revert` if an interface is not supported. It is up to the caller to decide\n what to do in these cases."},"fullyImplemented":true,"id":1044,"linearizedBaseContracts":[1044],"name":"ERC165Checker","nameLocation":"457:13:4","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":857,"mutability":"constant","name":"_INTERFACE_ID_INVALID","nameLocation":"575:21:4","nodeType":"VariableDeclaration","scope":1044,"src":"551:58:4","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":855,"name":"bytes4","nodeType":"ElementaryTypeName","src":"551:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"hexValue":"30786666666666666666","id":856,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"599:10:4","typeDescriptions":{"typeIdentifier":"t_rational_4294967295_by_1","typeString":"int_const 4294967295"},"value":"0xffffffff"},"visibility":"private"},{"body":{"id":879,"nodeType":"Block","src":"774:357:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":866,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"1008:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":868,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1056,"src":"1022:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}],"id":867,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"1017:4:4","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":869,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1017:13:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IERC165_$1056","typeString":"type(contract IERC165)"}},"id":870,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"1031:11:4","memberName":"interfaceId","nodeType":"MemberAccess","src":"1017:25:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":865,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"975:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":871,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"975:68:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"id":876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"1059:65:4","subExpression":{"arguments":[{"id":873,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":860,"src":"1093:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":874,"name":"_INTERFACE_ID_INVALID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":857,"src":"1102:21:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":872,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1060:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1060:64:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"975:149:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":864,"id":878,"nodeType":"Return","src":"956:168:4"}]},"documentation":{"id":858,"nodeType":"StructuredDocumentation","src":"616:83:4","text":" @dev Returns true if `account` supports the {IERC165} interface."},"id":880,"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165","nameLocation":"713:14:4","nodeType":"FunctionDefinition","parameters":{"id":861,"nodeType":"ParameterList","parameters":[{"constant":false,"id":860,"mutability":"mutable","name":"account","nameLocation":"736:7:4","nodeType":"VariableDeclaration","scope":880,"src":"728:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":859,"name":"address","nodeType":"ElementaryTypeName","src":"728:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"727:17:4"},"returnParameters":{"id":864,"nodeType":"ParameterList","parameters":[{"constant":false,"id":863,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":880,"src":"768:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":862,"name":"bool","nodeType":"ElementaryTypeName","src":"768:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"767:6:4"},"scope":1044,"src":"704:427:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":899,"nodeType":"Block","src":"1442:189:4","statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":891,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1558:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":890,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"1543:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1543:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"arguments":[{"id":894,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":883,"src":"1603:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":895,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":885,"src":"1612:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":893,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"1570:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1570:54:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1543:81:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":889,"id":898,"nodeType":"Return","src":"1536:88:4"}]},"documentation":{"id":881,"nodeType":"StructuredDocumentation","src":"1137:207:4","text":" @dev Returns true if `account` supports the interface defined by\n `interfaceId`. Support for {IERC165} itself is queried automatically.\n See {IERC165-supportsInterface}."},"id":900,"implemented":true,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"1358:17:4","nodeType":"FunctionDefinition","parameters":{"id":886,"nodeType":"ParameterList","parameters":[{"constant":false,"id":883,"mutability":"mutable","name":"account","nameLocation":"1384:7:4","nodeType":"VariableDeclaration","scope":900,"src":"1376:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":882,"name":"address","nodeType":"ElementaryTypeName","src":"1376:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":885,"mutability":"mutable","name":"interfaceId","nameLocation":"1400:11:4","nodeType":"VariableDeclaration","scope":900,"src":"1393:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":884,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1393:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"1375:37:4"},"returnParameters":{"id":889,"nodeType":"ParameterList","parameters":[{"constant":false,"id":888,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":900,"src":"1436:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":887,"name":"bool","nodeType":"ElementaryTypeName","src":"1436:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"1435:6:4"},"scope":1044,"src":"1349:282:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":955,"nodeType":"Block","src":"2155:560:4","statements":[{"assignments":[916],"declarations":[{"constant":false,"id":916,"mutability":"mutable","name":"interfaceIdsSupported","nameLocation":"2278:21:4","nodeType":"VariableDeclaration","scope":955,"src":"2264:35:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":914,"name":"bool","nodeType":"ElementaryTypeName","src":"2264:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":915,"nodeType":"ArrayTypeName","src":"2264:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"id":923,"initialValue":{"arguments":[{"expression":{"id":920,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2313:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2326:6:4","memberName":"length","nodeType":"MemberAccess","src":"2313:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2302:10:4","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bool_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bool[] memory)"},"typeName":{"baseType":{"id":917,"name":"bool","nodeType":"ElementaryTypeName","src":"2306:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":918,"nodeType":"ArrayTypeName","src":"2306:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}}},"id":922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2302:31:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2264:69:4"},{"condition":{"arguments":[{"id":925,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2405:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":924,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"2390:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2390:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":952,"nodeType":"IfStatement","src":"2386:284:4","trueBody":{"id":951,"nodeType":"Block","src":"2415:255:4","statements":[{"body":{"id":949,"nodeType":"Block","src":"2542:118:4","statements":[{"expression":{"id":947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":938,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"2560:21:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"id":940,"indexExpression":{"id":939,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2582:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2560:24:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":942,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":903,"src":"2620:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":943,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2629:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":945,"indexExpression":{"id":944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2642:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2629:15:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":941,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"2587:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2587:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2560:85:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":948,"nodeType":"ExpressionStatement","src":"2560:85:4"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":931,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2512:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":932,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":906,"src":"2516:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2529:6:4","memberName":"length","nodeType":"MemberAccess","src":"2516:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2512:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":950,"initializationExpression":{"assignments":[928],"declarations":[{"constant":false,"id":928,"mutability":"mutable","name":"i","nameLocation":"2505:1:4","nodeType":"VariableDeclaration","scope":950,"src":"2497:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":927,"name":"uint256","nodeType":"ElementaryTypeName","src":"2497:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":930,"initialValue":{"hexValue":"30","id":929,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2509:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2497:13:4"},"loopExpression":{"expression":{"id":936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2537:3:4","subExpression":{"id":935,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":928,"src":"2537:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":937,"nodeType":"ExpressionStatement","src":"2537:3:4"},"nodeType":"ForStatement","src":"2492:168:4"}]}},{"expression":{"id":953,"name":"interfaceIdsSupported","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":916,"src":"2687:21:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[] memory"}},"functionReturnParameters":911,"id":954,"nodeType":"Return","src":"2680:28:4"}]},"documentation":{"id":901,"nodeType":"StructuredDocumentation","src":"1637:374:4","text":" @dev Returns a boolean array where each value corresponds to the\n interfaces passed in and whether they're supported or not. This allows\n you to batch check interfaces for a contract where your expectation\n is that some interfaces may not be supported.\n See {IERC165-supportsInterface}.\n _Available since v3.4._"},"id":956,"implemented":true,"kind":"function","modifiers":[],"name":"getSupportedInterfaces","nameLocation":"2025:22:4","nodeType":"FunctionDefinition","parameters":{"id":907,"nodeType":"ParameterList","parameters":[{"constant":false,"id":903,"mutability":"mutable","name":"account","nameLocation":"2065:7:4","nodeType":"VariableDeclaration","scope":956,"src":"2057:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":902,"name":"address","nodeType":"ElementaryTypeName","src":"2057:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":906,"mutability":"mutable","name":"interfaceIds","nameLocation":"2098:12:4","nodeType":"VariableDeclaration","scope":956,"src":"2082:28:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":904,"name":"bytes4","nodeType":"ElementaryTypeName","src":"2082:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":905,"nodeType":"ArrayTypeName","src":"2082:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"2047:69:4"},"returnParameters":{"id":911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":910,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":956,"src":"2140:13:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_memory_ptr","typeString":"bool[]"},"typeName":{"baseType":{"id":908,"name":"bool","nodeType":"ElementaryTypeName","src":"2140:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":909,"nodeType":"ArrayTypeName","src":"2140:6:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bool_$dyn_storage_ptr","typeString":"bool[]"}},"visibility":"internal"}],"src":"2139:15:4"},"scope":1044,"src":"2016:699:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1001,"nodeType":"Block","src":"3157:436:4","statements":[{"condition":{"id":970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3213:24:4","subExpression":{"arguments":[{"id":968,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"3229:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":967,"name":"supportsERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":880,"src":"3214:14:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3214:23:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":974,"nodeType":"IfStatement","src":"3209:67:4","trueBody":{"id":973,"nodeType":"Block","src":"3239:37:4","statements":[{"expression":{"hexValue":"66616c7365","id":971,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3260:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":966,"id":972,"nodeType":"Return","src":"3253:12:4"}]}},{"body":{"id":997,"nodeType":"Block","src":"3395:134:4","statements":[{"condition":{"id":992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"3413:59:4","subExpression":{"arguments":[{"id":987,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":959,"src":"3447:7:4","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":988,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"3456:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":990,"indexExpression":{"id":989,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3469:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3456:15:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"id":986,"name":"supportsERC165InterfaceUnchecked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1043,"src":"3414:32:4","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3414:58:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":996,"nodeType":"IfStatement","src":"3409:110:4","trueBody":{"id":995,"nodeType":"Block","src":"3474:45:4","statements":[{"expression":{"hexValue":"66616c7365","id":993,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3499:5:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":966,"id":994,"nodeType":"Return","src":"3492:12:4"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":982,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":979,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3365:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":980,"name":"interfaceIds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":962,"src":"3369:12:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[] memory"}},"id":981,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3382:6:4","memberName":"length","nodeType":"MemberAccess","src":"3369:19:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3365:23:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":998,"initializationExpression":{"assignments":[976],"declarations":[{"constant":false,"id":976,"mutability":"mutable","name":"i","nameLocation":"3358:1:4","nodeType":"VariableDeclaration","scope":998,"src":"3350:9:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":975,"name":"uint256","nodeType":"ElementaryTypeName","src":"3350:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":978,"initialValue":{"hexValue":"30","id":977,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3362:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3350:13:4"},"loopExpression":{"expression":{"id":984,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3390:3:4","subExpression":{"id":983,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":976,"src":"3390:1:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":985,"nodeType":"ExpressionStatement","src":"3390:3:4"},"nodeType":"ForStatement","src":"3345:184:4"},{"expression":{"hexValue":"74727565","id":999,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"3582:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":966,"id":1000,"nodeType":"Return","src":"3575:11:4"}]},"documentation":{"id":957,"nodeType":"StructuredDocumentation","src":"2721:324:4","text":" @dev Returns true if `account` supports all the interfaces defined in\n `interfaceIds`. Support for {IERC165} itself is queried automatically.\n Batch-querying can lead to gas savings by skipping repeated checks for\n {IERC165} support.\n See {IERC165-supportsInterface}."},"id":1002,"implemented":true,"kind":"function","modifiers":[],"name":"supportsAllInterfaces","nameLocation":"3059:21:4","nodeType":"FunctionDefinition","parameters":{"id":963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":959,"mutability":"mutable","name":"account","nameLocation":"3089:7:4","nodeType":"VariableDeclaration","scope":1002,"src":"3081:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":958,"name":"address","nodeType":"ElementaryTypeName","src":"3081:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":962,"mutability":"mutable","name":"interfaceIds","nameLocation":"3114:12:4","nodeType":"VariableDeclaration","scope":1002,"src":"3098:28:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_memory_ptr","typeString":"bytes4[]"},"typeName":{"baseType":{"id":960,"name":"bytes4","nodeType":"ElementaryTypeName","src":"3098:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"id":961,"nodeType":"ArrayTypeName","src":"3098:8:4","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes4_$dyn_storage_ptr","typeString":"bytes4[]"}},"visibility":"internal"}],"src":"3080:47:4"},"returnParameters":{"id":966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":965,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1002,"src":"3151:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":964,"name":"bool","nodeType":"ElementaryTypeName","src":"3151:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"3150:6:4"},"scope":1044,"src":"3050:543:4","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1042,"nodeType":"Block","src":"4529:539:4","statements":[{"assignments":[1013],"declarations":[{"constant":false,"id":1013,"mutability":"mutable","name":"encodedParams","nameLocation":"4576:13:4","nodeType":"VariableDeclaration","scope":1042,"src":"4563:26:4","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1012,"name":"bytes","nodeType":"ElementaryTypeName","src":"4563:5:4","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":1021,"initialValue":{"arguments":[{"expression":{"expression":{"id":1016,"name":"IERC165","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1056,"src":"4615:7:4","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC165_$1056_$","typeString":"type(contract IERC165)"}},"id":1017,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4623:17:4","memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":1055,"src":"4615:25:4","typeDescriptions":{"typeIdentifier":"t_function_declaration_view$_t_bytes4_$returns$_t_bool_$","typeString":"function IERC165.supportsInterface(bytes4) view returns (bool)"}},"id":1018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4641:8:4","memberName":"selector","nodeType":"MemberAccess","src":"4615:34:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":1019,"name":"interfaceId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1007,"src":"4651:11:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1014,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"4592:3:4","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1015,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4596:18:4","memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"4592:22:4","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":1020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4592:71:4","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"4563:100:4"},{"assignments":[1023],"declarations":[{"constant":false,"id":1023,"mutability":"mutable","name":"success","nameLocation":"4710:7:4","nodeType":"VariableDeclaration","scope":1042,"src":"4705:12:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1022,"name":"bool","nodeType":"ElementaryTypeName","src":"4705:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1024,"nodeType":"VariableDeclarationStatement","src":"4705:12:4"},{"assignments":[1026],"declarations":[{"constant":false,"id":1026,"mutability":"mutable","name":"returnSize","nameLocation":"4735:10:4","nodeType":"VariableDeclaration","scope":1042,"src":"4727:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1025,"name":"uint256","nodeType":"ElementaryTypeName","src":"4727:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1027,"nodeType":"VariableDeclarationStatement","src":"4727:18:4"},{"assignments":[1029],"declarations":[{"constant":false,"id":1029,"mutability":"mutable","name":"returnValue","nameLocation":"4763:11:4","nodeType":"VariableDeclaration","scope":1042,"src":"4755:19:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1028,"name":"uint256","nodeType":"ElementaryTypeName","src":"4755:7:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1030,"nodeType":"VariableDeclarationStatement","src":"4755:19:4"},{"AST":{"nodeType":"YulBlock","src":"4793:203:4","statements":[{"nodeType":"YulAssignment","src":"4807:97:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4829:5:4","type":"","value":"30000"},{"name":"account","nodeType":"YulIdentifier","src":"4836:7:4"},{"arguments":[{"name":"encodedParams","nodeType":"YulIdentifier","src":"4849:13:4"},{"kind":"number","nodeType":"YulLiteral","src":"4864:4:4","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4845:3:4"},"nodeType":"YulFunctionCall","src":"4845:24:4"},{"arguments":[{"name":"encodedParams","nodeType":"YulIdentifier","src":"4877:13:4"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4871:5:4"},"nodeType":"YulFunctionCall","src":"4871:20:4"},{"kind":"number","nodeType":"YulLiteral","src":"4893:4:4","type":"","value":"0x00"},{"kind":"number","nodeType":"YulLiteral","src":"4899:4:4","type":"","value":"0x20"}],"functionName":{"name":"staticcall","nodeType":"YulIdentifier","src":"4818:10:4"},"nodeType":"YulFunctionCall","src":"4818:86:4"},"variableNames":[{"name":"success","nodeType":"YulIdentifier","src":"4807:7:4"}]},{"nodeType":"YulAssignment","src":"4917:30:4","value":{"arguments":[],"functionName":{"name":"returndatasize","nodeType":"YulIdentifier","src":"4931:14:4"},"nodeType":"YulFunctionCall","src":"4931:16:4"},"variableNames":[{"name":"returnSize","nodeType":"YulIdentifier","src":"4917:10:4"}]},{"nodeType":"YulAssignment","src":"4960:26:4","value":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"4981:4:4","type":"","value":"0x00"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4975:5:4"},"nodeType":"YulFunctionCall","src":"4975:11:4"},"variableNames":[{"name":"returnValue","nodeType":"YulIdentifier","src":"4960:11:4"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1005,"isOffset":false,"isSlot":false,"src":"4836:7:4","valueSize":1},{"declaration":1013,"isOffset":false,"isSlot":false,"src":"4849:13:4","valueSize":1},{"declaration":1013,"isOffset":false,"isSlot":false,"src":"4877:13:4","valueSize":1},{"declaration":1026,"isOffset":false,"isSlot":false,"src":"4917:10:4","valueSize":1},{"declaration":1029,"isOffset":false,"isSlot":false,"src":"4960:11:4","valueSize":1},{"declaration":1023,"isOffset":false,"isSlot":false,"src":"4807:7:4","valueSize":1}],"id":1031,"nodeType":"InlineAssembly","src":"4784:212:4"},{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":1036,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1032,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1023,"src":"5013:7:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1033,"name":"returnSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1026,"src":"5024:10:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"hexValue":"30783230","id":1034,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5038:4:4","typeDescriptions":{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},"value":"0x20"},"src":"5024:18:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5013:29:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1039,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1037,"name":"returnValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1029,"src":"5046:11:4","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":1038,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5060:1:4","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5046:15:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5013:48:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":1011,"id":1041,"nodeType":"Return","src":"5006:55:4"}]},"documentation":{"id":1003,"nodeType":"StructuredDocumentation","src":"3599:817:4","text":" @notice Query if a contract implements an interface, does not check ERC165 support\n @param account The address of the contract to query for support of an interface\n @param interfaceId The interface identifier, as specified in ERC-165\n @return true if the contract at account indicates support of the interface with\n identifier interfaceId, false otherwise\n @dev Assumes that account contains a contract that supports ERC165, otherwise\n the behavior of this method is undefined. This precondition can be checked\n with {supportsERC165}.\n Some precompiled contracts will falsely indicate support for a given interface, so caution\n should be exercised when using this function.\n Interface identification is specified in ERC-165."},"id":1043,"implemented":true,"kind":"function","modifiers":[],"name":"supportsERC165InterfaceUnchecked","nameLocation":"4430:32:4","nodeType":"FunctionDefinition","parameters":{"id":1008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1005,"mutability":"mutable","name":"account","nameLocation":"4471:7:4","nodeType":"VariableDeclaration","scope":1043,"src":"4463:15:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1004,"name":"address","nodeType":"ElementaryTypeName","src":"4463:7:4","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1007,"mutability":"mutable","name":"interfaceId","nameLocation":"4487:11:4","nodeType":"VariableDeclaration","scope":1043,"src":"4480:18:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1006,"name":"bytes4","nodeType":"ElementaryTypeName","src":"4480:6:4","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"4462:37:4"},"returnParameters":{"id":1011,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1010,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1043,"src":"4523:4:4","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1009,"name":"bool","nodeType":"ElementaryTypeName","src":"4523:4:4","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"4522:6:4"},"scope":1044,"src":"4421:647:4","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1045,"src":"449:4621:4","usedErrors":[]}],"src":"121:4950:4"},"id":4},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"ast":{"absolutePath":"@openzeppelin/contracts/utils/introspection/IERC165.sol","exportedSymbols":{"IERC165":[1056]},"id":1057,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":1046,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"100:23:5"},{"abstract":false,"baseContracts":[],"canonicalName":"IERC165","contractDependencies":[],"contractKind":"interface","documentation":{"id":1047,"nodeType":"StructuredDocumentation","src":"125:279:5","text":" @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}."},"fullyImplemented":false,"id":1056,"linearizedBaseContracts":[1056],"name":"IERC165","nameLocation":"415:7:5","nodeType":"ContractDefinition","nodes":[{"documentation":{"id":1048,"nodeType":"StructuredDocumentation","src":"429:340:5","text":" @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas."},"functionSelector":"01ffc9a7","id":1055,"implemented":false,"kind":"function","modifiers":[],"name":"supportsInterface","nameLocation":"783:17:5","nodeType":"FunctionDefinition","parameters":{"id":1051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1050,"mutability":"mutable","name":"interfaceId","nameLocation":"808:11:5","nodeType":"VariableDeclaration","scope":1055,"src":"801:18:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1049,"name":"bytes4","nodeType":"ElementaryTypeName","src":"801:6:5","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"800:20:5"},"returnParameters":{"id":1054,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1053,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1055,"src":"844:4:5","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1052,"name":"bool","nodeType":"ElementaryTypeName","src":"844:4:5","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"843:6:5"},"scope":1056,"src":"774:76:5","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":1057,"src":"405:447:5","usedErrors":[]}],"src":"100:753:5"},"id":5},"contracts/FirewallConsumer.sol":{"ast":{"absolutePath":"contracts/FirewallConsumer.sol","exportedSymbols":{"FirewallConsumer":[1070],"FirewallConsumerBase":[1840]},"id":1071,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1058,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:6"},{"absolutePath":"contracts/FirewallConsumerBase.sol","file":"./FirewallConsumerBase.sol","id":1060,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1071,"sourceUnit":1841,"src":"138:64:6","symbolAliases":[{"foreign":{"id":1059,"name":"FirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"146:20:6","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"arguments":[{"hexValue":"30","id":1065,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"561:1:6","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":1064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"553:7:6","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1063,"name":"address","nodeType":"ElementaryTypeName","src":"553:7:6","typeDescriptions":{}}},"id":1066,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"553:10:6","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":1067,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"565:3:6","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1068,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"569:6:6","memberName":"sender","nodeType":"MemberAccess","src":"565:10:6","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"baseName":{"id":1062,"name":"FirewallConsumerBase","nameLocations":["532:20:6"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"532:20:6"},"id":1069,"nodeType":"InheritanceSpecifier","src":"532:44:6"}],"canonicalName":"FirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":1061,"nodeType":"StructuredDocumentation","src":"204:298:6","text":" @title Firewall Consumer\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract must initializes with the firewall contract disabled, and the deployer\n as the firewall admin."},"fullyImplemented":true,"id":1070,"linearizedBaseContracts":[1070,1840,850,3045],"name":"FirewallConsumer","nameLocation":"512:16:6","nodeType":"ContractDefinition","nodes":[],"scope":1071,"src":"503:77:6","usedErrors":[]}],"src":"115:465:6"},"id":6},"contracts/FirewallConsumerBase.sol":{"ast":{"absolutePath":"contracts/FirewallConsumerBase.sol","exportedSymbols":{"Address":[828],"Context":[850],"ERC165Checker":[1044],"FirewallConsumerBase":[1840],"IFirewall":[3037],"IFirewallConsumer":[3045]},"id":1841,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1072,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:7"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","id":1074,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":1045,"src":"140:92:7","symbolAliases":[{"foreign":{"id":1073,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"148:13:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1076,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":829,"src":"233:66:7","symbolAliases":[{"foreign":{"id":1075,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"241:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":1078,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":851,"src":"300:66:7","symbolAliases":[{"foreign":{"id":1077,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"308:7:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"./interfaces/IFirewall.sol","id":1080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":3038,"src":"367:53:7","symbolAliases":[{"foreign":{"id":1079,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"375:9:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"./interfaces/IFirewallConsumer.sol","id":1082,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":1841,"sourceUnit":3046,"src":"421:69:7","symbolAliases":[{"foreign":{"id":1081,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"429:17:7","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1084,"name":"IFirewallConsumer","nameLocations":["925:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":3045,"src":"925:17:7"},"id":1085,"nodeType":"InheritanceSpecifier","src":"925:17:7"},{"baseName":{"id":1086,"name":"Context","nameLocations":["944:7:7"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"944:7:7"},"id":1087,"nodeType":"InheritanceSpecifier","src":"944:7:7"}],"canonicalName":"FirewallConsumerBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":1083,"nodeType":"StructuredDocumentation","src":"492:399:7","text":" @title Firewall Consumer Base Contract\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract must define a firewall contract which will manage the policies that are applied to the contract.\n It also must define a firewall admin which will be able to add and remove policies."},"fullyImplemented":true,"id":1840,"linearizedBaseContracts":[1840,850,3045],"name":"FirewallConsumerBase","nameLocation":"901:20:7","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1100,"mutability":"constant","name":"FIREWALL_STORAGE_SLOT","nameLocation":"1039:21:7","nodeType":"VariableDeclaration","scope":1840,"src":"1014:100:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1088,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1014:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1098,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c","id":1094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1089:18:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""},"value":"eip1967.firewall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""}],"id":1093,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1079:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1095,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1079:29:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1092,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1071:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1091,"name":"uint256","nodeType":"ElementaryTypeName","src":"1071:7:7","typeDescriptions":{}}},"id":1096,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1071:38:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1112:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1071:42:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1090,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1063:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1089,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1063:7:7","typeDescriptions":{}}},"id":1099,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1063:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1113,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1207:27:7","nodeType":"VariableDeclaration","scope":1840,"src":"1182:112:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1101,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1182:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":1107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1263:24:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":1106,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1253:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1108,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1253:35:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1105,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1245:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1104,"name":"uint256","nodeType":"ElementaryTypeName","src":"1245:7:7","typeDescriptions":{}}},"id":1109,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1245:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1110,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1292:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1245:48:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1103,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1237:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1102,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1237:7:7","typeDescriptions":{}}},"id":1112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1237:57:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1126,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1413:31:7","nodeType":"VariableDeclaration","scope":1840,"src":"1388:120:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1114,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1388:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1124,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":1120,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1473:28:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":1119,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1463:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1121,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1463:39:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1118,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1455:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1117,"name":"uint256","nodeType":"ElementaryTypeName","src":"1455:7:7","typeDescriptions":{}}},"id":1122,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1455:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1123,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1506:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1455:52:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1116,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1447:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1115,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1447:7:7","typeDescriptions":{}}},"id":1125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1447:61:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1132,"mutability":"constant","name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nameLocation":"1538:43:7","nodeType":"VariableDeclaration","scope":1840,"src":"1514:88:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1127,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1514:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"hexValue":"30783063393038636666","id":1130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1591:10:7","typeDescriptions":{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"},"value":"0x0c908cff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"}],"id":1129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1584:6:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":1128,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1584:6:7","typeDescriptions":{}}},"id":1131,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1584:18:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"private"},{"constant":true,"id":1145,"mutability":"constant","name":"APPROVED_VENN_POLICY_SLOT","nameLocation":"1673:25:7","nodeType":"VariableDeclaration","scope":1840,"src":"1648:116:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1648:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1143,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e617070726f7665642e76656e6e2e706f6c696379","id":1139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1727:30:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab","typeString":"literal_string \"eip1967.approved.venn.policy\""},"value":"eip1967.approved.venn.policy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab","typeString":"literal_string \"eip1967.approved.venn.policy\""}],"id":1138,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1717:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1717:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1137,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1709:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1136,"name":"uint256","nodeType":"ElementaryTypeName","src":"1709:7:7","typeDescriptions":{}}},"id":1141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1709:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1142,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1762:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1709:54:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1701:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1134,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1701:7:7","typeDescriptions":{}}},"id":1144,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1701:63:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1158,"mutability":"constant","name":"APPROVED_VENN_POLICY_FEE_SLOT","nameLocation":"1795:29:7","nodeType":"VariableDeclaration","scope":1840,"src":"1770:124:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1146,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1770:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1156,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e617070726f7665642e76656e6e2e706f6c6963792e666565","id":1152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1853:34:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_f313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8","typeString":"literal_string \"eip1967.approved.venn.policy.fee\""},"value":"eip1967.approved.venn.policy.fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8","typeString":"literal_string \"eip1967.approved.venn.policy.fee\""}],"id":1151,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1843:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1153,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1843:45:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1150,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1835:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1149,"name":"uint256","nodeType":"ElementaryTypeName","src":"1835:7:7","typeDescriptions":{}}},"id":1154,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1835:54:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1155,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1892:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1835:58:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1148,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1827:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1147,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1827:7:7","typeDescriptions":{}}},"id":1157,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1827:67:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1171,"mutability":"constant","name":"SAFE_FUNCTION_CALLER_SLOT","nameLocation":"1925:25:7","nodeType":"VariableDeclaration","scope":1840,"src":"1900:116:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1159,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1900:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1169,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e736166652e66756e6374696f6e2e63616c6c6572","id":1165,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1979:30:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3","typeString":"literal_string \"eip1967.safe.function.caller\""},"value":"eip1967.safe.function.caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3","typeString":"literal_string \"eip1967.safe.function.caller\""}],"id":1164,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1969:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1969:41:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1163,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1961:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1162,"name":"uint256","nodeType":"ElementaryTypeName","src":"1961:7:7","typeDescriptions":{}}},"id":1167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1961:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1168,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2014:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1961:54:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1161,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1953:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1160,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1953:7:7","typeDescriptions":{}}},"id":1170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1953:63:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1184,"mutability":"constant","name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nameLocation":"2047:28:7","nodeType":"VariableDeclaration","scope":1840,"src":"2022:122:7","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1172,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2022:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1182,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e736166652e66756e6374696f6e2e63616c6c2e666c6167","id":1178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2104:33:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040","typeString":"literal_string \"eip1967.safe.function.call.flag\""},"value":"eip1967.safe.function.call.flag"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040","typeString":"literal_string \"eip1967.safe.function.call.flag\""}],"id":1177,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2094:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2094:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1176,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2086:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1175,"name":"uint256","nodeType":"ElementaryTypeName","src":"2086:7:7","typeDescriptions":{}}},"id":1180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2086:53:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2142:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2086:57:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1174,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2078:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1173,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2078:7:7","typeDescriptions":{}}},"id":1183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2078:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"eventSelector":"2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b","id":1188,"name":"FirewallAdminUpdated","nameLocation":"2157:20:7","nodeType":"EventDefinition","parameters":{"id":1187,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1186,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"2186:8:7","nodeType":"VariableDeclaration","scope":1188,"src":"2178:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1185,"name":"address","nodeType":"ElementaryTypeName","src":"2178:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2177:18:7"},"src":"2151:45:7"},{"anonymous":false,"eventSelector":"60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd03608670","id":1192,"name":"FirewallUpdated","nameLocation":"2207:15:7","nodeType":"EventDefinition","parameters":{"id":1191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1190,"indexed":false,"mutability":"mutable","name":"newFirewall","nameLocation":"2231:11:7","nodeType":"VariableDeclaration","scope":1192,"src":"2223:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1189,"name":"address","nodeType":"ElementaryTypeName","src":"2223:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2222:21:7"},"src":"2201:43:7"},{"body":{"id":1239,"nodeType":"Block","src":"2769:358:7","statements":[{"assignments":[1196],"declarations":[{"constant":false,"id":1196,"mutability":"mutable","name":"firewall","nameLocation":"2787:8:7","nodeType":"VariableDeclaration","scope":1239,"src":"2779:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1195,"name":"address","nodeType":"ElementaryTypeName","src":"2779:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1200,"initialValue":{"arguments":[{"id":1198,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"2816:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1197,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"2798:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2798:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2779:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1206,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1201,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"2852:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1204,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2872:1:7","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":1203,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2864:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1202,"name":"address","nodeType":"ElementaryTypeName","src":"2864:7:7","typeDescriptions":{}}},"id":1205,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2864:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2852:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1210,"nodeType":"IfStatement","src":"2848:74:7","trueBody":{"id":1209,"nodeType":"Block","src":"2876:46:7","statements":[{"id":1207,"nodeType":"PlaceholderStatement","src":"2890:1:7"},{"id":1208,"nodeType":"Return","src":"2905:7:7"}]}},{"assignments":[1212],"declarations":[{"constant":false,"id":1212,"mutability":"mutable","name":"value","nameLocation":"2939:5:7","nodeType":"VariableDeclaration","scope":1239,"src":"2931:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1211,"name":"uint256","nodeType":"ElementaryTypeName","src":"2931:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1215,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1213,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"2947:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2947:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2931:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1220,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3001:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3001:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1222,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"3015:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1223,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3015:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1224,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"3027:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1217,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"2978:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1216,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2968:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1219,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2988:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":3000,"src":"2968:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1225,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2968:65:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1226,"nodeType":"ExpressionStatement","src":"2968:65:7"},{"id":1227,"nodeType":"PlaceholderStatement","src":"3043:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1232,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3088:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1233,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3088:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1234,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"3102:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1235,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3102:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1236,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1212,"src":"3114:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1229,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1196,"src":"3064:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1228,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"3054:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1230,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3054:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3074:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":3009,"src":"3054:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3054:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1238,"nodeType":"ExpressionStatement","src":"3054:66:7"}]},"documentation":{"id":1193,"nodeType":"StructuredDocumentation","src":"2250:485:7","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":1240,"name":"firewallProtected","nameLocation":"2749:17:7","nodeType":"ModifierDefinition","parameters":{"id":1194,"nodeType":"ParameterList","parameters":[],"src":"2766:2:7"},"src":"2740:387:7","virtual":false,"visibility":"internal"},{"body":{"id":1287,"nodeType":"Block","src":"4350:346:7","statements":[{"assignments":[1246],"declarations":[{"constant":false,"id":1246,"mutability":"mutable","name":"firewall","nameLocation":"4368:8:7","nodeType":"VariableDeclaration","scope":1287,"src":"4360:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1245,"name":"address","nodeType":"ElementaryTypeName","src":"4360:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1250,"initialValue":{"arguments":[{"id":1248,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"4397:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1247,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"4379:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1249,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4379:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4360:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1256,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1251,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"4433:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1254,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4453:1:7","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":1253,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4445:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1252,"name":"address","nodeType":"ElementaryTypeName","src":"4445:7:7","typeDescriptions":{}}},"id":1255,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4445:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4433:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1260,"nodeType":"IfStatement","src":"4429:74:7","trueBody":{"id":1259,"nodeType":"Block","src":"4457:46:7","statements":[{"id":1257,"nodeType":"PlaceholderStatement","src":"4471:1:7"},{"id":1258,"nodeType":"Return","src":"4486:7:7"}]}},{"assignments":[1262],"declarations":[{"constant":false,"id":1262,"mutability":"mutable","name":"value","nameLocation":"4520:5:7","nodeType":"VariableDeclaration","scope":1287,"src":"4512:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1261,"name":"uint256","nodeType":"ElementaryTypeName","src":"4512:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1265,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1263,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"4528:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1264,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4528:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4512:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1270,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"4582:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4582:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1272,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"4596:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1273,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"4602:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1267,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"4559:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1266,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"4549:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1268,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4549:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4569:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":3000,"src":"4549:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1274,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4549:59:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1275,"nodeType":"ExpressionStatement","src":"4549:59:7"},{"id":1276,"nodeType":"PlaceholderStatement","src":"4618:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1281,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"4663:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1282,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4663:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1283,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1243,"src":"4677:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1284,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1262,"src":"4683:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1278,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1246,"src":"4639:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1277,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"4629:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4629:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4649:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":3009,"src":"4629:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4629:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1286,"nodeType":"ExpressionStatement","src":"4629:60:7"}]},"documentation":{"id":1241,"nodeType":"StructuredDocumentation","src":"3133:1160:7","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies. Allows passing custom data to the firewall, not necessarily msg.data.\n Useful for checking internal function calls\n @param data custom data to be passed to the firewall\n NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly meant\n to be used by internal functions, and only in conjuction with policies that whose protection strategy\n requires this data.\n Using this modifier incorrectly may result in unexpected behavior.\n If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n and/or contact our support.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":1288,"name":"firewallProtectedCustom","nameLocation":"4307:23:7","nodeType":"ModifierDefinition","parameters":{"id":1244,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1243,"mutability":"mutable","name":"data","nameLocation":"4344:4:7","nodeType":"VariableDeclaration","scope":1288,"src":"4331:17:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":1242,"name":"bytes","nodeType":"ElementaryTypeName","src":"4331:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4330:19:7"},"src":"4298:398:7","virtual":false,"visibility":"internal"},{"body":{"id":1341,"nodeType":"Block","src":"5782:390:7","statements":[{"assignments":[1294],"declarations":[{"constant":false,"id":1294,"mutability":"mutable","name":"firewall","nameLocation":"5800:8:7","nodeType":"VariableDeclaration","scope":1341,"src":"5792:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1293,"name":"address","nodeType":"ElementaryTypeName","src":"5792:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1298,"initialValue":{"arguments":[{"id":1296,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"5829:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1295,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"5811:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1297,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5811:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5792:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1299,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"5865:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1302,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5885:1:7","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":1301,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5877:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1300,"name":"address","nodeType":"ElementaryTypeName","src":"5877:7:7","typeDescriptions":{}}},"id":1303,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5877:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5865:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1308,"nodeType":"IfStatement","src":"5861:74:7","trueBody":{"id":1307,"nodeType":"Block","src":"5889:46:7","statements":[{"id":1305,"nodeType":"PlaceholderStatement","src":"5903:1:7"},{"id":1306,"nodeType":"Return","src":"5918:7:7"}]}},{"assignments":[1310],"declarations":[{"constant":false,"id":1310,"mutability":"mutable","name":"value","nameLocation":"5952:5:7","nodeType":"VariableDeclaration","scope":1341,"src":"5944:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1309,"name":"uint256","nodeType":"ElementaryTypeName","src":"5944:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1313,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1311,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"5960:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1312,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5960:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5944:27:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1318,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"6014:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1319,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6014:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1322,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"6045:8:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1320,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6028:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1321,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6032:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"6028:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1323,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6028:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1324,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1310,"src":"6056:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1315,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"5991:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1314,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"5981:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6001:12:7","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":3000,"src":"5981:32:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1325,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5981:81:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1326,"nodeType":"ExpressionStatement","src":"5981:81:7"},{"id":1327,"nodeType":"PlaceholderStatement","src":"6072:1:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1332,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"6117:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1333,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6117:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":1336,"name":"selector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1291,"src":"6148:8:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1334,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"6131:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1335,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"6135:12:7","memberName":"encodePacked","nodeType":"MemberAccess","src":"6131:16:7","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1337,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6131:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":1338,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1310,"src":"6159:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1329,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1294,"src":"6093:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1328,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"6083:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1330,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6083:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6103:13:7","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":3009,"src":"6083:33:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":1339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6083:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1340,"nodeType":"ExpressionStatement","src":"6083:82:7"}]},"documentation":{"id":1289,"nodeType":"StructuredDocumentation","src":"4702:1028:7","text":" @dev identical to the rest of the modifiers in terms of logic, but makes it more\n aesthetic when all you want to pass are signatures/unique identifiers.\n @param selector unique identifier for the function\n NOTE: Using this modifier affects the data that is passed to the firewall, and as such it is mainly to\n be used by policies that whose protection strategy relies on the function's signature hahs.\n Using this modifier incorrectly may result in unexpected behavior.\n If you have any questions on how or when to use this modifier, please refer to the Firewall's documentation\n and/or contact our support.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":1342,"name":"firewallProtectedSig","nameLocation":"5744:20:7","nodeType":"ModifierDefinition","parameters":{"id":1292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1291,"mutability":"mutable","name":"selector","nameLocation":"5772:8:7","nodeType":"VariableDeclaration","scope":1342,"src":"5765:15:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":1290,"name":"bytes4","nodeType":"ElementaryTypeName","src":"5765:6:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"internal"}],"src":"5764:17:7"},"src":"5735:437:7","virtual":false,"visibility":"internal"},{"body":{"id":1414,"nodeType":"Block","src":"6714:578:7","statements":[{"assignments":[1346],"declarations":[{"constant":false,"id":1346,"mutability":"mutable","name":"firewall","nameLocation":"6732:8:7","nodeType":"VariableDeclaration","scope":1414,"src":"6724:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1345,"name":"address","nodeType":"ElementaryTypeName","src":"6724:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":1350,"initialValue":{"arguments":[{"id":1348,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"6761:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1347,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"6743:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6743:40:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"6724:59:7"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1356,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1351,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6797:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":1354,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6817:1:7","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":1353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6809:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1352,"name":"address","nodeType":"ElementaryTypeName","src":"6809:7:7","typeDescriptions":{}}},"id":1355,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6797:22:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1360,"nodeType":"IfStatement","src":"6793:74:7","trueBody":{"id":1359,"nodeType":"Block","src":"6821:46:7","statements":[{"id":1357,"nodeType":"PlaceholderStatement","src":"6835:1:7"},{"id":1358,"nodeType":"Return","src":"6850:7:7"}]}},{"assignments":[1362],"declarations":[{"constant":false,"id":1362,"mutability":"mutable","name":"value","nameLocation":"6884:5:7","nodeType":"VariableDeclaration","scope":1414,"src":"6876:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1361,"name":"uint256","nodeType":"ElementaryTypeName","src":"6876:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1365,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":1363,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1745,"src":"6892:9:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":1364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6892:11:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"6876:27:7"},{"assignments":[1370],"declarations":[{"constant":false,"id":1370,"mutability":"mutable","name":"storageSlots","nameLocation":"6930:12:7","nodeType":"VariableDeclaration","scope":1414,"src":"6913:29:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1368,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6913:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1369,"nodeType":"ArrayTypeName","src":"6913:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1381,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1375,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"6995:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1376,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6995:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1377,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7009:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1378,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7009:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1379,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"7021:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":1372,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"6955:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1371,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"6945:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1373,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6945:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1374,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6965:29:7","memberName":"preExecutionPrivateInvariants","nodeType":"MemberAccess","referencedDeclaration":3021,"src":"6945:49:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (address,bytes memory,uint256) external returns (bytes32[] memory)"}},"id":1380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6945:82:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"6913:114:7"},{"assignments":[1386],"declarations":[{"constant":false,"id":1386,"mutability":"mutable","name":"preValues","nameLocation":"7054:9:7","nodeType":"VariableDeclaration","scope":1414,"src":"7037:26:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1384,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7037:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1385,"nodeType":"ArrayTypeName","src":"7037:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1390,"initialValue":{"arguments":[{"id":1388,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"7079:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1387,"name":"_readStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"7066:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) view returns (bytes32[] memory)"}},"id":1389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7066:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7037:55:7"},{"id":1391,"nodeType":"PlaceholderStatement","src":"7102:1:7"},{"assignments":[1396],"declarations":[{"constant":false,"id":1396,"mutability":"mutable","name":"postValues","nameLocation":"7130:10:7","nodeType":"VariableDeclaration","scope":1414,"src":"7113:27:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1394,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7113:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1395,"nodeType":"ArrayTypeName","src":"7113:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1400,"initialValue":{"arguments":[{"id":1398,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1370,"src":"7156:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"id":1397,"name":"_readStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1800,"src":"7143:12:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (bytes32[] memory) view returns (bytes32[] memory)"}},"id":1399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7143:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"7113:56:7"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":1405,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"7230:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7230:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":1407,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"7244:8:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":1408,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7244:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":1409,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1362,"src":"7256:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":1410,"name":"preValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1386,"src":"7263:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},{"id":1411,"name":"postValues","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1396,"src":"7274:10:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"},{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}],"expression":{"arguments":[{"id":1402,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1346,"src":"7189:8:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1401,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"7179:9:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":1403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7179:19:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":1404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7199:30:7","memberName":"postExecutionPrivateInvariants","nodeType":"MemberAccess","referencedDeclaration":3036,"src":"7179:50:7","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$","typeString":"function (address,bytes memory,uint256,bytes32[] memory,bytes32[] memory) external"}},"id":1412,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7179:106:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1413,"nodeType":"ExpressionStatement","src":"7179:106:7"}]},"documentation":{"id":1343,"nodeType":"StructuredDocumentation","src":"6178:501:7","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall invariant policy,\n applying the subscribed invariant policy\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":1415,"name":"invariantProtected","nameLocation":"6693:18:7","nodeType":"ModifierDefinition","parameters":{"id":1344,"nodeType":"ParameterList","parameters":[],"src":"6711:2:7"},"src":"6684:608:7","virtual":false,"visibility":"internal"},{"body":{"id":1455,"nodeType":"Block","src":"7479:655:7","statements":[{"assignments":[1421],"declarations":[{"constant":false,"id":1421,"mutability":"mutable","name":"_slot","nameLocation":"7767:5:7","nodeType":"VariableDeclaration","scope":1455,"src":"7759:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1420,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7759:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1429,"initialValue":{"arguments":[{"arguments":[{"id":1425,"name":"APPROVED_VENN_POLICY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"7796:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1426,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"7823:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1423,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"7785:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1424,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7789:6:7","memberName":"encode","nodeType":"MemberAccess","src":"7785:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7785:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1422,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"7775:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1428,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7775:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"7759:76:7"},{"assignments":[1431],"declarations":[{"constant":false,"id":1431,"mutability":"mutable","name":"isApprovedVennPolicy","nameLocation":"7850:20:7","nodeType":"VariableDeclaration","scope":1455,"src":"7845:25:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1430,"name":"bool","nodeType":"ElementaryTypeName","src":"7845:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":1440,"initialValue":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":1439,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":1433,"name":"_slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1421,"src":"7889:5:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1432,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"7873:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7873:22:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1437,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7907:1:7","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":1436,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7899:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1435,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7899:7:7","typeDescriptions":{}}},"id":1438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7899:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"7873:36:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"7845:64:7"},{"expression":{"arguments":[{"id":1442,"name":"isApprovedVennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1431,"src":"7927:20:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056656e6e20706f6c696379","id":1443,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7949:44:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700","typeString":"literal_string \"FirewallConsumer: Not approved Venn policy\""},"value":"FirewallConsumer: Not approved Venn policy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700","typeString":"literal_string \"FirewallConsumer: Not approved Venn policy\""}],"id":1441,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"7919:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1444,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7919:75:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1445,"nodeType":"ExpressionStatement","src":"7919:75:7"},{"expression":{"arguments":[{"arguments":[{"id":1449,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1418,"src":"8059:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1450,"name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1132,"src":"8071:43:7","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":1447,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"8012:13:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$1044_$","typeString":"type(library ERC165Checker)"}},"id":1448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8026:32:7","memberName":"supportsERC165InterfaceUnchecked","nodeType":"MemberAccess","referencedDeclaration":1043,"src":"8012:46:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":1451,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8012:103:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1446,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8004:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8004:112:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1453,"nodeType":"ExpressionStatement","src":"8004:112:7"},{"id":1454,"nodeType":"PlaceholderStatement","src":"8126:1:7"}]},"documentation":{"id":1416,"nodeType":"StructuredDocumentation","src":"7299:123:7","text":" @dev modifier asserting that the Venn policy is approved\n @param vennPolicy address of Venn policy"},"id":1456,"name":"onlyApprovedVennPolicy","nameLocation":"7436:22:7","nodeType":"ModifierDefinition","parameters":{"id":1419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1418,"mutability":"mutable","name":"vennPolicy","nameLocation":"7467:10:7","nodeType":"VariableDeclaration","scope":1456,"src":"7459:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1417,"name":"address","nodeType":"ElementaryTypeName","src":"7459:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7458:20:7"},"src":"7427:707:7","virtual":false,"visibility":"internal"},{"body":{"id":1470,"nodeType":"Block","src":"8256:137:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1465,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1460,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8274:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8278:6:7","memberName":"sender","nodeType":"MemberAccess","src":"8274:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1463,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"8306:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1462,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"8288:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1464,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8288:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"8274:60:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":1466,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"8336:38:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""},"value":"FirewallConsumer: not firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""}],"id":1459,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"8266:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8266:109:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1468,"nodeType":"ExpressionStatement","src":"8266:109:7"},{"id":1469,"nodeType":"PlaceholderStatement","src":"8385:1:7"}]},"documentation":{"id":1457,"nodeType":"StructuredDocumentation","src":"8140:82:7","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":1471,"name":"onlyFirewallAdmin","nameLocation":"8236:17:7","nodeType":"ModifierDefinition","parameters":{"id":1458,"nodeType":"ParameterList","parameters":[],"src":"8253:2:7"},"src":"8227:166:7","virtual":false,"visibility":"internal"},{"body":{"id":1502,"nodeType":"Block","src":"8598:264:7","statements":[{"expression":{"arguments":[{"id":1480,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"8626:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1481,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1474,"src":"8649:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1479,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"8608:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1482,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8608:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1483,"nodeType":"ExpressionStatement","src":"8608:51:7"},{"expression":{"arguments":[{"id":1485,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"8687:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1486,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1476,"src":"8716:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1484,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"8669:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1487,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8669:62:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1488,"nodeType":"ExpressionStatement","src":"8669:62:7"},{"expression":{"arguments":[{"id":1490,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"8759:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"31","id":1493,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8794:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1492,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8786:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1491,"name":"address","nodeType":"ElementaryTypeName","src":"8786:7:7","typeDescriptions":{}}},"id":1494,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8786:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1489,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"8741:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1495,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8741:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1496,"nodeType":"ExpressionStatement","src":"8741:56:7"},{"expression":{"arguments":[{"id":1498,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"8823:28:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"31","id":1499,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8853:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1497,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"8807:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":1500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8807:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1501,"nodeType":"ExpressionStatement","src":"8807:48:7"}]},"documentation":{"id":1472,"nodeType":"StructuredDocumentation","src":"8399:117:7","text":" @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin."},"id":1503,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1474,"mutability":"mutable","name":"_firewall","nameLocation":"8550:9:7","nodeType":"VariableDeclaration","scope":1503,"src":"8542:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1473,"name":"address","nodeType":"ElementaryTypeName","src":"8542:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1476,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"8577:14:7","nodeType":"VariableDeclaration","scope":1503,"src":"8569:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1475,"name":"address","nodeType":"ElementaryTypeName","src":"8569:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8532:65:7"},"returnParameters":{"id":1478,"nodeType":"ParameterList","parameters":[],"src":"8598:0:7"},"scope":1840,"src":"8521:341:7","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":1589,"nodeType":"Block","src":"9541:660:7","statements":[{"assignments":[1517],"declarations":[{"constant":false,"id":1517,"mutability":"mutable","name":"fee","nameLocation":"9559:3:7","nodeType":"VariableDeclaration","scope":1589,"src":"9551:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1516,"name":"uint256","nodeType":"ElementaryTypeName","src":"9551:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1524,"initialValue":{"arguments":[{"arguments":[{"id":1521,"name":"APPROVED_VENN_POLICY_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"9589:29:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1520,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"9573:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1522,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9573:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1519,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9565:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1518,"name":"uint256","nodeType":"ElementaryTypeName","src":"9565:7:7","typeDescriptions":{}}},"id":1523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9565:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9551:69:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1529,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1526,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9638:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9642:5:7","memberName":"value","nodeType":"MemberAccess","src":"9638:9:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":1528,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"9651:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9638:16:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544820666f7220666565","id":1530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9656:42:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18","typeString":"literal_string \"FirewallConsumer: Not enough ETH for fee\""},"value":"FirewallConsumer: Not enough ETH for fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18","typeString":"literal_string \"FirewallConsumer: Not enough ETH for fee\""}],"id":1525,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9630:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9630:69:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1532,"nodeType":"ExpressionStatement","src":"9630:69:7"},{"expression":{"arguments":[{"id":1534,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"9727:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1535,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9754:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1536,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9758:6:7","memberName":"sender","nodeType":"MemberAccess","src":"9754:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1533,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"9709:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9709:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1538,"nodeType":"ExpressionStatement","src":"9709:56:7"},{"expression":{"arguments":[{"id":1540,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"9791:28:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"32","id":1541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9821:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":1539,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"9775:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":1542,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9775:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1543,"nodeType":"ExpressionStatement","src":"9775:48:7"},{"assignments":[1545,null],"declarations":[{"constant":false,"id":1545,"mutability":"mutable","name":"success","nameLocation":"9839:7:7","nodeType":"VariableDeclaration","scope":1589,"src":"9834:12:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1544,"name":"bool","nodeType":"ElementaryTypeName","src":"9834:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":1552,"initialValue":{"arguments":[{"id":1550,"name":"vennPolicyPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1508,"src":"9880:17:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1546,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"9852:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":1547,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9863:4:7","memberName":"call","nodeType":"MemberAccess","src":"9852:15:7","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":1548,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1517,"src":"9875:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"9852:27:7","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":1551,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9852:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"9833:65:7"},{"expression":{"arguments":[{"id":1554,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1545,"src":"9916:7:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":1553,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9908:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":1555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9908:16:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1556,"nodeType":"ExpressionStatement","src":"9908:16:7"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1558,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9942:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9946:6:7","memberName":"sender","nodeType":"MemberAccess","src":"9942:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":1560,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"9956:10:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":1561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9956:12:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9942:26:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e73616374696f6e73","id":1563,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"9970:40:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef","typeString":"literal_string \"FirewallConsumer: No meta transactions\""},"value":"FirewallConsumer: No meta transactions"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef","typeString":"literal_string \"FirewallConsumer: No meta transactions\""}],"id":1557,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"9934:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1564,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9934:77:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1565,"nodeType":"ExpressionStatement","src":"9934:77:7"},{"expression":{"arguments":[{"arguments":[{"id":1571,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10058:4:7","typeDescriptions":{"typeIdentifier":"t_contract$_FirewallConsumerBase_$1840","typeString":"contract FirewallConsumerBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_FirewallConsumerBase_$1840","typeString":"contract FirewallConsumerBase"}],"id":1570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10050:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1569,"name":"address","nodeType":"ElementaryTypeName","src":"10050:7:7","typeDescriptions":{}}},"id":1572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10050:13:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":1573,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1510,"src":"10065:4:7","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":1566,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"10021:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":1568,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10029:20:7","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"10021:28:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":1574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10021:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":1575,"nodeType":"ExpressionStatement","src":"10021:49:7"},{"expression":{"arguments":[{"id":1577,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"10098:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"31","id":1580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10133:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1579,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10125:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1578,"name":"address","nodeType":"ElementaryTypeName","src":"10125:7:7","typeDescriptions":{}}},"id":1581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10125:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1576,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"10080:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10080:56:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1583,"nodeType":"ExpressionStatement","src":"10080:56:7"},{"expression":{"arguments":[{"id":1585,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"10162:28:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"31","id":1586,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10192:1:7","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":1584,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"10146:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":1587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10146:48:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1588,"nodeType":"ExpressionStatement","src":"10146:48:7"}]},"documentation":{"id":1504,"nodeType":"StructuredDocumentation","src":"8868:485:7","text":" @dev Allows calling an approved external Venn policy before executing a method.\n This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n executing a function, allowing synchronous transaction approvals.\n @param vennPolicy address of the Venn policy\n @param vennPolicyPayload payload to be sent to the Venn policy\n @param data data to be executed after the Venn policy call"},"functionSelector":"1a8828f4","id":1590,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":1513,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1506,"src":"9529:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":1514,"kind":"modifierInvocation","modifierName":{"id":1512,"name":"onlyApprovedVennPolicy","nameLocations":["9506:22:7"],"nodeType":"IdentifierPath","referencedDeclaration":1456,"src":"9506:22:7"},"nodeType":"ModifierInvocation","src":"9506:34:7"}],"name":"safeFunctionCall","nameLocation":"9367:16:7","nodeType":"FunctionDefinition","parameters":{"id":1511,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1506,"mutability":"mutable","name":"vennPolicy","nameLocation":"9401:10:7","nodeType":"VariableDeclaration","scope":1590,"src":"9393:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1505,"name":"address","nodeType":"ElementaryTypeName","src":"9393:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1508,"mutability":"mutable","name":"vennPolicyPayload","nameLocation":"9436:17:7","nodeType":"VariableDeclaration","scope":1590,"src":"9421:32:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1507,"name":"bytes","nodeType":"ElementaryTypeName","src":"9421:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":1510,"mutability":"mutable","name":"data","nameLocation":"9478:4:7","nodeType":"VariableDeclaration","scope":1590,"src":"9463:19:7","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":1509,"name":"bytes","nodeType":"ElementaryTypeName","src":"9463:5:7","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9383:105:7"},"returnParameters":{"id":1515,"nodeType":"ParameterList","parameters":[],"src":"9541:0:7"},"scope":1840,"src":"9358:843:7","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":1611,"nodeType":"Block","src":"10647:156:7","statements":[{"assignments":[1601],"declarations":[{"constant":false,"id":1601,"mutability":"mutable","name":"_slot","nameLocation":"10665:5:7","nodeType":"VariableDeclaration","scope":1611,"src":"10657:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1600,"name":"bytes32","nodeType":"ElementaryTypeName","src":"10657:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1609,"initialValue":{"arguments":[{"arguments":[{"id":1605,"name":"APPROVED_VENN_POLICY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1145,"src":"10694:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1606,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1593,"src":"10721:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":1603,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10683:3:7","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":1604,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10687:6:7","memberName":"encode","nodeType":"MemberAccess","src":"10683:10:7","typeDescriptions":{"typeIdentifier":"t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":1607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10683:49:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":1602,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10673:9:7","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1608,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10673:60:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"10657:76:7"},{"AST":{"nodeType":"YulBlock","src":"10752:45:7","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"10773:5:7"},{"name":"status","nodeType":"YulIdentifier","src":"10780:6:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"10766:6:7"},"nodeType":"YulFunctionCall","src":"10766:21:7"},"nodeType":"YulExpressionStatement","src":"10766:21:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1601,"isOffset":false,"isSlot":false,"src":"10773:5:7","valueSize":1},{"declaration":1595,"isOffset":false,"isSlot":false,"src":"10780:6:7","valueSize":1}],"id":1610,"nodeType":"InlineAssembly","src":"10743:54:7"}]},"documentation":{"id":1591,"nodeType":"StructuredDocumentation","src":"10207:344:7","text":" @dev Allows firewall admin to set approved Venn policies.\n IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract\n to send any data to an approved Venn policy.\n @param vennPolicy address of the Venn policy\n @param status status of the Venn policy"},"functionSelector":"efc2e703","id":1612,"implemented":true,"kind":"function","modifiers":[{"id":1598,"kind":"modifierInvocation","modifierName":{"id":1597,"name":"onlyFirewallAdmin","nameLocations":["10629:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1471,"src":"10629:17:7"},"nodeType":"ModifierInvocation","src":"10629:17:7"}],"name":"setApprovedVennPolicy","nameLocation":"10565:21:7","nodeType":"FunctionDefinition","parameters":{"id":1596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1593,"mutability":"mutable","name":"vennPolicy","nameLocation":"10595:10:7","nodeType":"VariableDeclaration","scope":1612,"src":"10587:18:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1592,"name":"address","nodeType":"ElementaryTypeName","src":"10587:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1595,"mutability":"mutable","name":"status","nameLocation":"10612:6:7","nodeType":"VariableDeclaration","scope":1612,"src":"10607:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":1594,"name":"bool","nodeType":"ElementaryTypeName","src":"10607:4:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10586:33:7"},"returnParameters":{"id":1599,"nodeType":"ParameterList","parameters":[],"src":"10647:0:7"},"scope":1840,"src":"10556:247:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1624,"nodeType":"Block","src":"10883:68:7","statements":[{"expression":{"arguments":[{"id":1620,"name":"APPROVED_VENN_POLICY_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"10909:29:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1621,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1614,"src":"10940:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1619,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1829,"src":"10893:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":1622,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10893:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1623,"nodeType":"ExpressionStatement","src":"10893:51:7"}]},"functionSelector":"acef6106","id":1625,"implemented":true,"kind":"function","modifiers":[{"id":1617,"kind":"modifierInvocation","modifierName":{"id":1616,"name":"onlyFirewallAdmin","nameLocations":["10865:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1471,"src":"10865:17:7"},"nodeType":"ModifierInvocation","src":"10865:17:7"}],"name":"setApprovedVennPolicyFee","nameLocation":"10818:24:7","nodeType":"FunctionDefinition","parameters":{"id":1615,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1614,"mutability":"mutable","name":"fee","nameLocation":"10851:3:7","nodeType":"VariableDeclaration","scope":1625,"src":"10843:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1613,"name":"uint256","nodeType":"ElementaryTypeName","src":"10843:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10842:13:7"},"returnParameters":{"id":1618,"nodeType":"ParameterList","parameters":[],"src":"10883:0:7"},"scope":1840,"src":"10809:142:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3044],"body":{"id":1635,"nodeType":"Block","src":"11079:70:7","statements":[{"expression":{"arguments":[{"id":1632,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"11114:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1631,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"11096:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11096:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1630,"id":1634,"nodeType":"Return","src":"11089:53:7"}]},"documentation":{"id":1626,"nodeType":"StructuredDocumentation","src":"10957:60:7","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":1636,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"11031:13:7","nodeType":"FunctionDefinition","parameters":{"id":1627,"nodeType":"ParameterList","parameters":[],"src":"11044:2:7"},"returnParameters":{"id":1630,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1629,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1636,"src":"11070:7:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1628,"name":"address","nodeType":"ElementaryTypeName","src":"11070:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11069:9:7"},"scope":1840,"src":"11022:127:7","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":1653,"nodeType":"Block","src":"11376:109:7","statements":[{"expression":{"arguments":[{"id":1645,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1100,"src":"11404:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1646,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"11427:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1644,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"11386:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11386:51:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1648,"nodeType":"ExpressionStatement","src":"11386:51:7"},{"eventCall":{"arguments":[{"id":1650,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1639,"src":"11468:9:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1649,"name":"FirewallUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1192,"src":"11452:15:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11452:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1652,"nodeType":"EmitStatement","src":"11447:31:7"}]},"documentation":{"id":1637,"nodeType":"StructuredDocumentation","src":"11155:149:7","text":" @dev Admin only function allowing the consumers admin to set the firewall address.\n @param _firewall address of the firewall"},"functionSelector":"8c36d02d","id":1654,"implemented":true,"kind":"function","modifiers":[{"id":1642,"kind":"modifierInvocation","modifierName":{"id":1641,"name":"onlyFirewallAdmin","nameLocations":["11358:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1471,"src":"11358:17:7"},"nodeType":"ModifierInvocation","src":"11358:17:7"}],"name":"setFirewall","nameLocation":"11318:11:7","nodeType":"FunctionDefinition","parameters":{"id":1640,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1639,"mutability":"mutable","name":"_firewall","nameLocation":"11338:9:7","nodeType":"VariableDeclaration","scope":1654,"src":"11330:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1638,"name":"address","nodeType":"ElementaryTypeName","src":"11330:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11329:19:7"},"returnParameters":{"id":1643,"nodeType":"ParameterList","parameters":[],"src":"11376:0:7"},"scope":1840,"src":"11309:176:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1677,"nodeType":"Block","src":"11728:164:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1663,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"11746:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":1666,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11772:1:7","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":1665,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11764:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":1664,"name":"address","nodeType":"ElementaryTypeName","src":"11764:7:7","typeDescriptions":{}}},"id":1667,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11764:10:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"11746:28:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","id":1669,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"11776:32:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""},"value":"FirewallConsumer: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""}],"id":1662,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11738:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1670,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11738:71:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1671,"nodeType":"ExpressionStatement","src":"11738:71:7"},{"expression":{"arguments":[{"id":1673,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"11837:31:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1674,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1657,"src":"11870:14:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1672,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"11819:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1675,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11819:66:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1676,"nodeType":"ExpressionStatement","src":"11819:66:7"}]},"documentation":{"id":1655,"nodeType":"StructuredDocumentation","src":"11491:155:7","text":" @dev Admin only function, sets new firewall admin. New admin must accept.\n @param _firewallAdmin address of the new firewall admin"},"functionSelector":"734b7198","id":1678,"implemented":true,"kind":"function","modifiers":[{"id":1660,"kind":"modifierInvocation","modifierName":{"id":1659,"name":"onlyFirewallAdmin","nameLocations":["11710:17:7"],"nodeType":"IdentifierPath","referencedDeclaration":1471,"src":"11710:17:7"},"nodeType":"ModifierInvocation","src":"11710:17:7"}],"name":"setFirewallAdmin","nameLocation":"11660:16:7","nodeType":"FunctionDefinition","parameters":{"id":1658,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1657,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"11685:14:7","nodeType":"VariableDeclaration","scope":1678,"src":"11677:22:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1656,"name":"address","nodeType":"ElementaryTypeName","src":"11677:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11676:24:7"},"returnParameters":{"id":1661,"nodeType":"ParameterList","parameters":[],"src":"11728:0:7"},"scope":1840,"src":"11651:241:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1703,"nodeType":"Block","src":"12001:240:7","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12019:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12023:6:7","memberName":"sender","nodeType":"MemberAccess","src":"12019:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1686,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1126,"src":"12051:31:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1685,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"12033:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12033:50:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12019:64:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","id":1689,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12085:33:7","typeDescriptions":{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""},"value":"FirewallConsumer: not new admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""}],"id":1682,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12011:7:7","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1690,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12011:108:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1691,"nodeType":"ExpressionStatement","src":"12011:108:7"},{"expression":{"arguments":[{"id":1693,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1113,"src":"12147:27:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":1694,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12176:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12180:6:7","memberName":"sender","nodeType":"MemberAccess","src":"12176:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1692,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"12129:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12129:58:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1697,"nodeType":"ExpressionStatement","src":"12129:58:7"},{"eventCall":{"arguments":[{"expression":{"id":1699,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12223:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12227:6:7","memberName":"sender","nodeType":"MemberAccess","src":"12223:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":1698,"name":"FirewallAdminUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1188,"src":"12202:20:7","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":1701,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12202:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1702,"nodeType":"EmitStatement","src":"12197:37:7"}]},"documentation":{"id":1679,"nodeType":"StructuredDocumentation","src":"11898:58:7","text":" @dev Accept the role as firewall admin."},"functionSelector":"7c65c38b","id":1704,"implemented":true,"kind":"function","modifiers":[],"name":"acceptFirewallAdmin","nameLocation":"11970:19:7","nodeType":"FunctionDefinition","parameters":{"id":1680,"nodeType":"ParameterList","parameters":[],"src":"11989:2:7"},"returnParameters":{"id":1681,"nodeType":"ParameterList","parameters":[],"src":"12001:0:7"},"scope":1840,"src":"11961:280:7","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":1744,"nodeType":"Block","src":"12417:453:7","statements":[{"AST":{"nodeType":"YulBlock","src":"12519:44:7","statements":[{"nodeType":"YulAssignment","src":"12533:20:7","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"12542:9:7"},"nodeType":"YulFunctionCall","src":"12542:11:7"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"12533:5:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1708,"isOffset":false,"isSlot":false,"src":"12533:5:7","valueSize":1}],"id":1710,"nodeType":"InlineAssembly","src":"12510:53:7"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1718,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":1714,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1184,"src":"12600:28:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1713,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12584:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12584:45:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1712,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12576:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1711,"name":"uint256","nodeType":"ElementaryTypeName","src":"12576:7:7","typeDescriptions":{}}},"id":1716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12576:54:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":1717,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12634:1:7","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"12576:59:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1743,"nodeType":"IfStatement","src":"12572:292:7","trueBody":{"id":1742,"nodeType":"Block","src":"12637:227:7","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1719,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12655:3:7","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1720,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12659:6:7","memberName":"sender","nodeType":"MemberAccess","src":"12655:10:7","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1722,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1171,"src":"12687:25:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1721,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"12669:17:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1723,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12669:44:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12655:58:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1741,"nodeType":"IfStatement","src":"12651:203:7","trueBody":{"id":1740,"nodeType":"Block","src":"12715:139:7","statements":[{"assignments":[1726],"declarations":[{"constant":false,"id":1726,"mutability":"mutable","name":"fee","nameLocation":"12741:3:7","nodeType":"VariableDeclaration","scope":1740,"src":"12733:11:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1725,"name":"uint256","nodeType":"ElementaryTypeName","src":"12733:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1733,"initialValue":{"arguments":[{"arguments":[{"id":1730,"name":"APPROVED_VENN_POLICY_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1158,"src":"12771:29:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1729,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"12755:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1731,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12755:46:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1728,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12747:7:7","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1727,"name":"uint256","nodeType":"ElementaryTypeName","src":"12747:7:7","typeDescriptions":{}}},"id":1732,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12747:55:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12733:69:7"},{"expression":{"id":1738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":1734,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"12820:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1735,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1708,"src":"12828:5:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":1736,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1726,"src":"12836:3:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12828:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12820:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1739,"nodeType":"ExpressionStatement","src":"12820:19:7"}]}}]}}]},"documentation":{"id":1705,"nodeType":"StructuredDocumentation","src":"12247:106:7","text":" @dev Internal helper funtion to get the msg.value\n @return value of the msg.value"},"id":1745,"implemented":true,"kind":"function","modifiers":[],"name":"_msgValue","nameLocation":"12367:9:7","nodeType":"FunctionDefinition","parameters":{"id":1706,"nodeType":"ParameterList","parameters":[],"src":"12376:2:7"},"returnParameters":{"id":1709,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1708,"mutability":"mutable","name":"value","nameLocation":"12410:5:7","nodeType":"VariableDeclaration","scope":1745,"src":"12402:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1707,"name":"uint256","nodeType":"ElementaryTypeName","src":"12402:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12401:15:7"},"scope":1840,"src":"12358:512:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1799,"nodeType":"Block","src":"13095:307:7","statements":[{"assignments":[1756],"declarations":[{"constant":false,"id":1756,"mutability":"mutable","name":"slotsLength","nameLocation":"13113:11:7","nodeType":"VariableDeclaration","scope":1799,"src":"13105:19:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1755,"name":"uint256","nodeType":"ElementaryTypeName","src":"13105:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1759,"initialValue":{"expression":{"id":1757,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"13127:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13140:6:7","memberName":"length","nodeType":"MemberAccess","src":"13127:19:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13105:41:7"},{"assignments":[1764],"declarations":[{"constant":false,"id":1764,"mutability":"mutable","name":"values","nameLocation":"13173:6:7","nodeType":"VariableDeclaration","scope":1799,"src":"13156:23:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1762,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13156:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1763,"nodeType":"ArrayTypeName","src":"13156:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"id":1770,"initialValue":{"arguments":[{"id":1768,"name":"slotsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"13196:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1767,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"13182:13:7","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (bytes32[] memory)"},"typeName":{"baseType":{"id":1765,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13186:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1766,"nodeType":"ArrayTypeName","src":"13186:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}}},"id":1769,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13182:26:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"nodeType":"VariableDeclarationStatement","src":"13156:52:7"},{"body":{"id":1795,"nodeType":"Block","src":"13261:112:7","statements":[{"assignments":[1782],"declarations":[{"constant":false,"id":1782,"mutability":"mutable","name":"slotValue","nameLocation":"13283:9:7","nodeType":"VariableDeclaration","scope":1795,"src":"13275:17:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1781,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13275:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"id":1788,"initialValue":{"arguments":[{"baseExpression":{"id":1784,"name":"storageSlots","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1749,"src":"13311:12:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1786,"indexExpression":{"id":1785,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1772,"src":"13324:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13311:15:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1783,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1839,"src":"13295:15:7","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13295:32:7","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"VariableDeclarationStatement","src":"13275:52:7"},{"expression":{"id":1793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":1789,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"13341:6:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"id":1791,"indexExpression":{"id":1790,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1772,"src":"13348:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13341:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":1792,"name":"slotValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1782,"src":"13353:9:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"13341:21:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1794,"nodeType":"ExpressionStatement","src":"13341:21:7"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":1775,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1772,"src":"13239:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":1776,"name":"slotsLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1756,"src":"13243:11:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13239:15:7","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":1796,"initializationExpression":{"assignments":[1772],"declarations":[{"constant":false,"id":1772,"mutability":"mutable","name":"i","nameLocation":"13232:1:7","nodeType":"VariableDeclaration","scope":1796,"src":"13224:9:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1771,"name":"uint256","nodeType":"ElementaryTypeName","src":"13224:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":1774,"initialValue":{"hexValue":"30","id":1773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13236:1:7","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13224:13:7"},"loopExpression":{"expression":{"id":1779,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13256:3:7","subExpression":{"id":1778,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1772,"src":"13256:1:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":1780,"nodeType":"ExpressionStatement","src":"13256:3:7"},"nodeType":"ForStatement","src":"13219:154:7"},{"expression":{"id":1797,"name":"values","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1764,"src":"13389:6:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[] memory"}},"functionReturnParameters":1754,"id":1798,"nodeType":"Return","src":"13382:13:7"}]},"documentation":{"id":1746,"nodeType":"StructuredDocumentation","src":"12876:120:7","text":" @dev Internal helper function to read storage slots\n @param storageSlots array of storage slots"},"id":1800,"implemented":true,"kind":"function","modifiers":[],"name":"_readStorage","nameLocation":"13010:12:7","nodeType":"FunctionDefinition","parameters":{"id":1750,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1749,"mutability":"mutable","name":"storageSlots","nameLocation":"13040:12:7","nodeType":"VariableDeclaration","scope":1800,"src":"13023:29:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1747,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13023:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1748,"nodeType":"ArrayTypeName","src":"13023:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"13022:31:7"},"returnParameters":{"id":1754,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1753,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1800,"src":"13077:16:7","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_memory_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":1751,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13077:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":1752,"nodeType":"ArrayTypeName","src":"13077:9:7","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"13076:18:7"},"scope":1840,"src":"13001:401:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1809,"nodeType":"Block","src":"13640:72:7","statements":[{"AST":{"nodeType":"YulBlock","src":"13659:47:7","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"13680:5:7"},{"name":"_address","nodeType":"YulIdentifier","src":"13687:8:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"13673:6:7"},"nodeType":"YulFunctionCall","src":"13673:23:7"},"nodeType":"YulExpressionStatement","src":"13673:23:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1805,"isOffset":false,"isSlot":false,"src":"13687:8:7","valueSize":1},{"declaration":1803,"isOffset":false,"isSlot":false,"src":"13680:5:7","valueSize":1}],"id":1808,"nodeType":"InlineAssembly","src":"13650:56:7"}]},"documentation":{"id":1801,"nodeType":"StructuredDocumentation","src":"13408:158:7","text":" @dev Internal helper function to set an address in a storage slot\n @param _slot storage slot\n @param _address address to be set"},"id":1810,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"13580:17:7","nodeType":"FunctionDefinition","parameters":{"id":1806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1803,"mutability":"mutable","name":"_slot","nameLocation":"13606:5:7","nodeType":"VariableDeclaration","scope":1810,"src":"13598:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1802,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13598:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1805,"mutability":"mutable","name":"_address","nameLocation":"13621:8:7","nodeType":"VariableDeclaration","scope":1810,"src":"13613:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1804,"name":"address","nodeType":"ElementaryTypeName","src":"13613:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13597:33:7"},"returnParameters":{"id":1807,"nodeType":"ParameterList","parameters":[],"src":"13640:0:7"},"scope":1840,"src":"13571:141:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1819,"nodeType":"Block","src":"13971:73:7","statements":[{"AST":{"nodeType":"YulBlock","src":"13990:48:7","statements":[{"nodeType":"YulAssignment","src":"14004:24:7","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"14022:5:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"14016:5:7"},"nodeType":"YulFunctionCall","src":"14016:12:7"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"14004:8:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1816,"isOffset":false,"isSlot":false,"src":"14004:8:7","valueSize":1},{"declaration":1813,"isOffset":false,"isSlot":false,"src":"14022:5:7","valueSize":1}],"id":1818,"nodeType":"InlineAssembly","src":"13981:57:7"}]},"documentation":{"id":1811,"nodeType":"StructuredDocumentation","src":"13718:165:7","text":" @dev Internal helper function to get an address from a storage slot\n @param _slot storage slot\n @return _address from the storage slot"},"id":1820,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"13897:17:7","nodeType":"FunctionDefinition","parameters":{"id":1814,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1813,"mutability":"mutable","name":"_slot","nameLocation":"13923:5:7","nodeType":"VariableDeclaration","scope":1820,"src":"13915:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1812,"name":"bytes32","nodeType":"ElementaryTypeName","src":"13915:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"13914:15:7"},"returnParameters":{"id":1817,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1816,"mutability":"mutable","name":"_address","nameLocation":"13961:8:7","nodeType":"VariableDeclaration","scope":1820,"src":"13953:16:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1815,"name":"address","nodeType":"ElementaryTypeName","src":"13953:7:7","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13952:18:7"},"scope":1840,"src":"13888:156:7","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":1828,"nodeType":"Block","src":"14115:70:7","statements":[{"AST":{"nodeType":"YulBlock","src":"14134:45:7","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"14155:5:7"},{"name":"_value","nodeType":"YulIdentifier","src":"14162:6:7"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"14148:6:7"},"nodeType":"YulFunctionCall","src":"14148:21:7"},"nodeType":"YulExpressionStatement","src":"14148:21:7"}]},"evmVersion":"paris","externalReferences":[{"declaration":1822,"isOffset":false,"isSlot":false,"src":"14155:5:7","valueSize":1},{"declaration":1824,"isOffset":false,"isSlot":false,"src":"14162:6:7","valueSize":1}],"id":1827,"nodeType":"InlineAssembly","src":"14125:54:7"}]},"id":1829,"implemented":true,"kind":"function","modifiers":[],"name":"_setValueBySlot","nameLocation":"14059:15:7","nodeType":"FunctionDefinition","parameters":{"id":1825,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1822,"mutability":"mutable","name":"_slot","nameLocation":"14083:5:7","nodeType":"VariableDeclaration","scope":1829,"src":"14075:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1821,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14075:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":1824,"mutability":"mutable","name":"_value","nameLocation":"14098:6:7","nodeType":"VariableDeclaration","scope":1829,"src":"14090:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1823,"name":"uint256","nodeType":"ElementaryTypeName","src":"14090:7:7","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14074:31:7"},"returnParameters":{"id":1826,"nodeType":"ParameterList","parameters":[],"src":"14115:0:7"},"scope":1840,"src":"14050:135:7","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":1838,"nodeType":"Block","src":"14435:71:7","statements":[{"AST":{"nodeType":"YulBlock","src":"14454:46:7","statements":[{"nodeType":"YulAssignment","src":"14468:22:7","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"14484:5:7"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"14478:5:7"},"nodeType":"YulFunctionCall","src":"14478:12:7"},"variableNames":[{"name":"_value","nodeType":"YulIdentifier","src":"14468:6:7"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":1832,"isOffset":false,"isSlot":false,"src":"14484:5:7","valueSize":1},{"declaration":1835,"isOffset":false,"isSlot":false,"src":"14468:6:7","valueSize":1}],"id":1837,"nodeType":"InlineAssembly","src":"14445:55:7"}]},"documentation":{"id":1830,"nodeType":"StructuredDocumentation","src":"14191:160:7","text":" @dev Internal helper function to get a value from a storage slot\n @param _slot storage slot\n @return _value from the storage slot"},"id":1839,"implemented":true,"kind":"function","modifiers":[],"name":"_getValueBySlot","nameLocation":"14365:15:7","nodeType":"FunctionDefinition","parameters":{"id":1833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1832,"mutability":"mutable","name":"_slot","nameLocation":"14389:5:7","nodeType":"VariableDeclaration","scope":1839,"src":"14381:13:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1831,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14381:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14380:15:7"},"returnParameters":{"id":1836,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1835,"mutability":"mutable","name":"_value","nameLocation":"14427:6:7","nodeType":"VariableDeclaration","scope":1839,"src":"14419:14:7","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1834,"name":"bytes32","nodeType":"ElementaryTypeName","src":"14419:7:7","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"14418:16:7"},"scope":1840,"src":"14356:150:7","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":1841,"src":"892:13616:7","usedErrors":[]}],"src":"115:14394:7"},"id":7},"contracts/consumers/FirewallConsumerStorage.sol":{"ast":{"absolutePath":"contracts/consumers/FirewallConsumerStorage.sol","exportedSymbols":{"Address":[828],"FirewallConsumerStorage":[2137],"IFirewall":[3037],"IFirewallConsumerStorage":[3068]},"id":2138,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":1842,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:8"},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":1844,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2138,"sourceUnit":829,"src":"140:66:8","symbolAliases":[{"foreign":{"id":1843,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"148:7:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":1846,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2138,"sourceUnit":3038,"src":"207:54:8","symbolAliases":[{"foreign":{"id":1845,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"215:9:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","file":"../interfaces/IFirewallConsumerStorage.sol","id":1848,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2138,"sourceUnit":3069,"src":"262:84:8","symbolAliases":[{"foreign":{"id":1847,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"270:24:8","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":1850,"name":"IFirewallConsumerStorage","nameLocations":["787:24:8"],"nodeType":"IdentifierPath","referencedDeclaration":3068,"src":"787:24:8"},"id":1851,"nodeType":"InheritanceSpecifier","src":"787:24:8"}],"canonicalName":"FirewallConsumerStorage","contractDependencies":[],"contractKind":"contract","documentation":{"id":1849,"nodeType":"StructuredDocumentation","src":"348:402:8","text":" @title Firewall Consumer Storage Contract\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract must define a firewall contract which will manage the policies that are applied to the contract.\n It also must define a firewall admin which will be able to add and remove policies."},"fullyImplemented":true,"id":2137,"linearizedBaseContracts":[2137,3068],"name":"FirewallConsumerStorage","nameLocation":"760:23:8","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":1864,"mutability":"constant","name":"FIREWALL_STORAGE_SLOT","nameLocation":"899:21:8","nodeType":"VariableDeclaration","scope":2137,"src":"874:100:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1852,"name":"bytes32","nodeType":"ElementaryTypeName","src":"874:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1862,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c","id":1858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"949:18:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""},"value":"eip1967.firewall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""}],"id":1857,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"939:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"939:29:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1856,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"931:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1855,"name":"uint256","nodeType":"ElementaryTypeName","src":"931:7:8","typeDescriptions":{}}},"id":1860,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"931:38:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1861,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"972:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"931:42:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1854,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"923:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1853,"name":"bytes32","nodeType":"ElementaryTypeName","src":"923:7:8","typeDescriptions":{}}},"id":1863,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"923:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1877,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1067:27:8","nodeType":"VariableDeclaration","scope":2137,"src":"1042:112:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1865,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1042:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1875,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":1871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1123:24:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":1870,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1113:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1872,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1113:35:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1105:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1868,"name":"uint256","nodeType":"ElementaryTypeName","src":"1105:7:8","typeDescriptions":{}}},"id":1873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1105:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1152:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1105:48:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1097:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1866,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1097:7:8","typeDescriptions":{}}},"id":1876,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1097:57:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1890,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1273:31:8","nodeType":"VariableDeclaration","scope":2137,"src":"1248:120:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1878,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1248:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":1884,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1333:28:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":1883,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1323:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1323:39:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1882,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1315:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1881,"name":"uint256","nodeType":"ElementaryTypeName","src":"1315:7:8","typeDescriptions":{}}},"id":1886,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1315:48:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1887,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1366:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1315:52:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1307:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1879,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1307:7:8","typeDescriptions":{}}},"id":1889,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1307:61:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1903,"mutability":"constant","name":"APPROVED_VENN_POLICY_SLOT","nameLocation":"1480:25:8","nodeType":"VariableDeclaration","scope":2137,"src":"1455:116:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1891,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1455:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1901,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e617070726f7665642e76656e6e2e706f6c696379","id":1897,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1534:30:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab","typeString":"literal_string \"eip1967.approved.venn.policy\""},"value":"eip1967.approved.venn.policy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab","typeString":"literal_string \"eip1967.approved.venn.policy\""}],"id":1896,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1524:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1898,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1524:41:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1895,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1516:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1894,"name":"uint256","nodeType":"ElementaryTypeName","src":"1516:7:8","typeDescriptions":{}}},"id":1899,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1516:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1900,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1569:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1516:54:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1893,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1508:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1892,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1508:7:8","typeDescriptions":{}}},"id":1902,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1508:63:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":1916,"mutability":"constant","name":"USER_NATIVE_FEE_SLOT","nameLocation":"1603:20:8","nodeType":"VariableDeclaration","scope":2137,"src":"1578:106:8","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":1904,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1578:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":1914,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e757365722e6e61746976652e666565","id":1910,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1652:25:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_fa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea","typeString":"literal_string \"eip1967.user.native.fee\""},"value":"eip1967.user.native.fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_fa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea","typeString":"literal_string \"eip1967.user.native.fee\""}],"id":1909,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1642:9:8","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":1911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1642:36:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1908,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1634:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1907,"name":"uint256","nodeType":"ElementaryTypeName","src":"1634:7:8","typeDescriptions":{}}},"id":1912,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1634:45:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":1913,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1682:1:8","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1634:49:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":1906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1626:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":1905,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1626:7:8","typeDescriptions":{}}},"id":1915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1626:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"eventSelector":"2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b","id":1920,"name":"FirewallAdminUpdated","nameLocation":"1697:20:8","nodeType":"EventDefinition","parameters":{"id":1919,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1918,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"1726:8:8","nodeType":"VariableDeclaration","scope":1920,"src":"1718:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1917,"name":"address","nodeType":"ElementaryTypeName","src":"1718:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1717:18:8"},"src":"1691:45:8"},{"anonymous":false,"eventSelector":"60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd03608670","id":1924,"name":"FirewallUpdated","nameLocation":"1747:15:8","nodeType":"EventDefinition","parameters":{"id":1923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1922,"indexed":false,"mutability":"mutable","name":"newFirewall","nameLocation":"1771:11:8","nodeType":"VariableDeclaration","scope":1924,"src":"1763:19:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1921,"name":"address","nodeType":"ElementaryTypeName","src":"1763:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1762:21:8"},"src":"1741:43:8"},{"body":{"id":1938,"nodeType":"Block","src":"1906:137:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":1933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":1928,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1924:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":1929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1928:6:8","memberName":"sender","nodeType":"MemberAccess","src":"1924:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":1931,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"1956:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1930,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"1938:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1938:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1924:60:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":1934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1986:38:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""},"value":"FirewallConsumer: not firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""}],"id":1927,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1916:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":1935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1916:109:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1936,"nodeType":"ExpressionStatement","src":"1916:109:8"},{"id":1937,"nodeType":"PlaceholderStatement","src":"2035:1:8"}]},"documentation":{"id":1925,"nodeType":"StructuredDocumentation","src":"1790:82:8","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":1939,"name":"onlyFirewallAdmin","nameLocation":"1886:17:8","nodeType":"ModifierDefinition","parameters":{"id":1926,"nodeType":"ParameterList","parameters":[],"src":"1903:2:8"},"src":"1877:166:8","virtual":false,"visibility":"internal"},{"body":{"id":1957,"nodeType":"Block","src":"2248:140:8","statements":[{"expression":{"arguments":[{"id":1948,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2276:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1949,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1942,"src":"2299:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1947,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"2258:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1950,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2258:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1951,"nodeType":"ExpressionStatement","src":"2258:51:8"},{"expression":{"arguments":[{"id":1953,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"2337:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":1954,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1944,"src":"2366:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":1952,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"2319:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":1955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2319:62:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":1956,"nodeType":"ExpressionStatement","src":"2319:62:8"}]},"documentation":{"id":1940,"nodeType":"StructuredDocumentation","src":"2049:117:8","text":" @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin."},"id":1958,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":1945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1942,"mutability":"mutable","name":"_firewall","nameLocation":"2200:9:8","nodeType":"VariableDeclaration","scope":1958,"src":"2192:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1941,"name":"address","nodeType":"ElementaryTypeName","src":"2192:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":1944,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"2227:14:8","nodeType":"VariableDeclaration","scope":1958,"src":"2219:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1943,"name":"address","nodeType":"ElementaryTypeName","src":"2219:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2182:65:8"},"returnParameters":{"id":1946,"nodeType":"ParameterList","parameters":[],"src":"2248:0:8"},"scope":2137,"src":"2171:217:8","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"baseFunctions":[3062],"body":{"id":1967,"nodeType":"Block","src":"2459:68:8","statements":[{"expression":{"arguments":[{"id":1964,"name":"APPROVED_VENN_POLICY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"2494:25:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1963,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"2476:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2476:44:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1962,"id":1966,"nodeType":"Return","src":"2469:51:8"}]},"functionSelector":"6064a013","id":1968,"implemented":true,"kind":"function","modifiers":[],"name":"getApprovedVennPolicy","nameLocation":"2403:21:8","nodeType":"FunctionDefinition","parameters":{"id":1959,"nodeType":"ParameterList","parameters":[],"src":"2424:2:8"},"returnParameters":{"id":1962,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1961,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1968,"src":"2450:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1960,"name":"address","nodeType":"ElementaryTypeName","src":"2450:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2449:9:8"},"scope":2137,"src":"2394:133:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3067],"body":{"id":1980,"nodeType":"Block","src":"2593:70:8","statements":[{"expression":{"arguments":[{"arguments":[{"id":1976,"name":"USER_NATIVE_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"2634:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1975,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2136,"src":"2618:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":1977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:37:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1974,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2610:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":1973,"name":"uint256","nodeType":"ElementaryTypeName","src":"2610:7:8","typeDescriptions":{}}},"id":1978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2610:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":1972,"id":1979,"nodeType":"Return","src":"2603:53:8"}]},"functionSelector":"1498be2f","id":1981,"implemented":true,"kind":"function","modifiers":[],"name":"getUserNativeFee","nameLocation":"2542:16:8","nodeType":"FunctionDefinition","parameters":{"id":1969,"nodeType":"ParameterList","parameters":[],"src":"2558:2:8"},"returnParameters":{"id":1972,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1971,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1981,"src":"2584:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":1970,"name":"uint256","nodeType":"ElementaryTypeName","src":"2584:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2583:9:8"},"scope":2137,"src":"2533:130:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3057],"body":{"id":1990,"nodeType":"Block","src":"2724:64:8","statements":[{"expression":{"arguments":[{"id":1987,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"2759:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1986,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"2741:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1988,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2741:40:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1985,"id":1989,"nodeType":"Return","src":"2734:47:8"}]},"functionSelector":"51cfdd39","id":1991,"implemented":true,"kind":"function","modifiers":[],"name":"getFirewall","nameLocation":"2678:11:8","nodeType":"FunctionDefinition","parameters":{"id":1982,"nodeType":"ParameterList","parameters":[],"src":"2689:2:8"},"returnParameters":{"id":1985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1984,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":1991,"src":"2715:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1983,"name":"address","nodeType":"ElementaryTypeName","src":"2715:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2714:9:8"},"scope":2137,"src":"2669:119:8","stateMutability":"view","virtual":false,"visibility":"external"},{"baseFunctions":[3052],"body":{"id":2000,"nodeType":"Block","src":"2854:70:8","statements":[{"expression":{"arguments":[{"id":1997,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"2889:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":1996,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"2871:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":1998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2871:46:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":1995,"id":1999,"nodeType":"Return","src":"2864:53:8"}]},"functionSelector":"af7f27f4","id":2001,"implemented":true,"kind":"function","modifiers":[],"name":"getFirewallAdmin","nameLocation":"2803:16:8","nodeType":"FunctionDefinition","parameters":{"id":1992,"nodeType":"ParameterList","parameters":[],"src":"2819:2:8"},"returnParameters":{"id":1995,"nodeType":"ParameterList","parameters":[{"constant":false,"id":1994,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2001,"src":"2845:7:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":1993,"name":"address","nodeType":"ElementaryTypeName","src":"2845:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2844:9:8"},"scope":2137,"src":"2794:130:8","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2014,"nodeType":"Block","src":"3291:73:8","statements":[{"expression":{"arguments":[{"id":2010,"name":"APPROVED_VENN_POLICY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1903,"src":"3319:25:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2011,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2004,"src":"3346:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2009,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"3301:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2012,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3301:56:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2013,"nodeType":"ExpressionStatement","src":"3301:56:8"}]},"documentation":{"id":2002,"nodeType":"StructuredDocumentation","src":"2930:286:8","text":" @dev Allows firewall admin to set Venn policy.\n IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract\n to send any data to an approved Venn policy.\n @param vennPolicy address of the Venn policy"},"functionSelector":"b73bccf5","id":2015,"implemented":true,"kind":"function","modifiers":[{"id":2007,"kind":"modifierInvocation","modifierName":{"id":2006,"name":"onlyFirewallAdmin","nameLocations":["3273:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"3273:17:8"},"nodeType":"ModifierInvocation","src":"3273:17:8"}],"name":"setVennPolicy","nameLocation":"3230:13:8","nodeType":"FunctionDefinition","parameters":{"id":2005,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2004,"mutability":"mutable","name":"vennPolicy","nameLocation":"3252:10:8","nodeType":"VariableDeclaration","scope":2015,"src":"3244:18:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2003,"name":"address","nodeType":"ElementaryTypeName","src":"3244:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3243:20:8"},"returnParameters":{"id":2008,"nodeType":"ParameterList","parameters":[],"src":"3291:0:8"},"scope":2137,"src":"3221:143:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2028,"nodeType":"Block","src":"3580:59:8","statements":[{"expression":{"arguments":[{"id":2024,"name":"USER_NATIVE_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1916,"src":"3606:20:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2025,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2018,"src":"3628:3:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2023,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2126,"src":"3590:15:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2026,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3590:42:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2027,"nodeType":"ExpressionStatement","src":"3590:42:8"}]},"documentation":{"id":2016,"nodeType":"StructuredDocumentation","src":"3370:139:8","text":" @dev Allows firewall admin to set user native fee for safeFunctionCall.\n @param fee native fee for the user"},"functionSelector":"369c87ca","id":2029,"implemented":true,"kind":"function","modifiers":[{"id":2021,"kind":"modifierInvocation","modifierName":{"id":2020,"name":"onlyFirewallAdmin","nameLocations":["3562:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"3562:17:8"},"nodeType":"ModifierInvocation","src":"3562:17:8"}],"name":"setUserNativeFee","nameLocation":"3523:16:8","nodeType":"FunctionDefinition","parameters":{"id":2019,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2018,"mutability":"mutable","name":"fee","nameLocation":"3548:3:8","nodeType":"VariableDeclaration","scope":2029,"src":"3540:11:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2017,"name":"uint256","nodeType":"ElementaryTypeName","src":"3540:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3539:13:8"},"returnParameters":{"id":2022,"nodeType":"ParameterList","parameters":[],"src":"3580:0:8"},"scope":2137,"src":"3514:125:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2046,"nodeType":"Block","src":"3866:109:8","statements":[{"expression":{"arguments":[{"id":2038,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1864,"src":"3894:21:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2039,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"3917:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2037,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"3876:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2040,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3876:51:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2041,"nodeType":"ExpressionStatement","src":"3876:51:8"},{"eventCall":{"arguments":[{"id":2043,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2032,"src":"3958:9:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2042,"name":"FirewallUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1924,"src":"3942:15:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2044,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3942:26:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2045,"nodeType":"EmitStatement","src":"3937:31:8"}]},"documentation":{"id":2030,"nodeType":"StructuredDocumentation","src":"3645:149:8","text":" @dev Admin only function allowing the consumers admin to set the firewall address.\n @param _firewall address of the firewall"},"functionSelector":"8c36d02d","id":2047,"implemented":true,"kind":"function","modifiers":[{"id":2035,"kind":"modifierInvocation","modifierName":{"id":2034,"name":"onlyFirewallAdmin","nameLocations":["3848:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"3848:17:8"},"nodeType":"ModifierInvocation","src":"3848:17:8"}],"name":"setFirewall","nameLocation":"3808:11:8","nodeType":"FunctionDefinition","parameters":{"id":2033,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2032,"mutability":"mutable","name":"_firewall","nameLocation":"3828:9:8","nodeType":"VariableDeclaration","scope":2047,"src":"3820:17:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2031,"name":"address","nodeType":"ElementaryTypeName","src":"3820:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3819:19:8"},"returnParameters":{"id":2036,"nodeType":"ParameterList","parameters":[],"src":"3866:0:8"},"scope":2137,"src":"3799:176:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2070,"nodeType":"Block","src":"4218:164:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2061,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2056,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"4236:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2059,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4262:1:8","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":2058,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4254:7:8","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2057,"name":"address","nodeType":"ElementaryTypeName","src":"4254:7:8","typeDescriptions":{}}},"id":2060,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4254:10:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4236:28:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","id":2062,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4266:32:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""},"value":"FirewallConsumer: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""}],"id":2055,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4228:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4228:71:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2064,"nodeType":"ExpressionStatement","src":"4228:71:8"},{"expression":{"arguments":[{"id":2066,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1890,"src":"4327:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2067,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2050,"src":"4360:14:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2065,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"4309:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2068,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4309:66:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2069,"nodeType":"ExpressionStatement","src":"4309:66:8"}]},"documentation":{"id":2048,"nodeType":"StructuredDocumentation","src":"3981:155:8","text":" @dev Admin only function, sets new firewall admin. New admin must accept.\n @param _firewallAdmin address of the new firewall admin"},"functionSelector":"734b7198","id":2071,"implemented":true,"kind":"function","modifiers":[{"id":2053,"kind":"modifierInvocation","modifierName":{"id":2052,"name":"onlyFirewallAdmin","nameLocations":["4200:17:8"],"nodeType":"IdentifierPath","referencedDeclaration":1939,"src":"4200:17:8"},"nodeType":"ModifierInvocation","src":"4200:17:8"}],"name":"setFirewallAdmin","nameLocation":"4150:16:8","nodeType":"FunctionDefinition","parameters":{"id":2051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2050,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"4175:14:8","nodeType":"VariableDeclaration","scope":2071,"src":"4167:22:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2049,"name":"address","nodeType":"ElementaryTypeName","src":"4167:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4166:24:8"},"returnParameters":{"id":2054,"nodeType":"ParameterList","parameters":[],"src":"4218:0:8"},"scope":2137,"src":"4141:241:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2096,"nodeType":"Block","src":"4491:240:8","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2081,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2076,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4509:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4513:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4509:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2079,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1890,"src":"4541:31:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2078,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2117,"src":"4523:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2080,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4523:50:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4509:64:8","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","id":2082,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4575:33:8","typeDescriptions":{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""},"value":"FirewallConsumer: not new admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""}],"id":2075,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4501:7:8","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2083,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4501:108:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2084,"nodeType":"ExpressionStatement","src":"4501:108:8"},{"expression":{"arguments":[{"id":2086,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1877,"src":"4637:27:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2087,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4666:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2088,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4670:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4666:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2085,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2107,"src":"4619:17:8","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4619:58:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2090,"nodeType":"ExpressionStatement","src":"4619:58:8"},{"eventCall":{"arguments":[{"expression":{"id":2092,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4713:3:8","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4717:6:8","memberName":"sender","nodeType":"MemberAccess","src":"4713:10:8","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2091,"name":"FirewallAdminUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1920,"src":"4692:20:8","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2094,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4692:32:8","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2095,"nodeType":"EmitStatement","src":"4687:37:8"}]},"documentation":{"id":2072,"nodeType":"StructuredDocumentation","src":"4388:58:8","text":" @dev Accept the role as firewall admin."},"functionSelector":"7c65c38b","id":2097,"implemented":true,"kind":"function","modifiers":[],"name":"acceptFirewallAdmin","nameLocation":"4460:19:8","nodeType":"FunctionDefinition","parameters":{"id":2073,"nodeType":"ParameterList","parameters":[],"src":"4479:2:8"},"returnParameters":{"id":2074,"nodeType":"ParameterList","parameters":[],"src":"4491:0:8"},"scope":2137,"src":"4451:280:8","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2106,"nodeType":"Block","src":"4969:72:8","statements":[{"AST":{"nodeType":"YulBlock","src":"4988:47:8","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5009:5:8"},{"name":"_address","nodeType":"YulIdentifier","src":"5016:8:8"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5002:6:8"},"nodeType":"YulFunctionCall","src":"5002:23:8"},"nodeType":"YulExpressionStatement","src":"5002:23:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":2102,"isOffset":false,"isSlot":false,"src":"5016:8:8","valueSize":1},{"declaration":2100,"isOffset":false,"isSlot":false,"src":"5009:5:8","valueSize":1}],"id":2105,"nodeType":"InlineAssembly","src":"4979:56:8"}]},"documentation":{"id":2098,"nodeType":"StructuredDocumentation","src":"4737:158:8","text":" @dev Internal helper function to set an address in a storage slot\n @param _slot storage slot\n @param _address address to be set"},"id":2107,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"4909:17:8","nodeType":"FunctionDefinition","parameters":{"id":2103,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2100,"mutability":"mutable","name":"_slot","nameLocation":"4935:5:8","nodeType":"VariableDeclaration","scope":2107,"src":"4927:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2099,"name":"bytes32","nodeType":"ElementaryTypeName","src":"4927:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2102,"mutability":"mutable","name":"_address","nameLocation":"4950:8:8","nodeType":"VariableDeclaration","scope":2107,"src":"4942:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2101,"name":"address","nodeType":"ElementaryTypeName","src":"4942:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4926:33:8"},"returnParameters":{"id":2104,"nodeType":"ParameterList","parameters":[],"src":"4969:0:8"},"scope":2137,"src":"4900:141:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2116,"nodeType":"Block","src":"5300:73:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5319:48:8","statements":[{"nodeType":"YulAssignment","src":"5333:24:8","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5351:5:8"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5345:5:8"},"nodeType":"YulFunctionCall","src":"5345:12:8"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"5333:8:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2113,"isOffset":false,"isSlot":false,"src":"5333:8:8","valueSize":1},{"declaration":2110,"isOffset":false,"isSlot":false,"src":"5351:5:8","valueSize":1}],"id":2115,"nodeType":"InlineAssembly","src":"5310:57:8"}]},"documentation":{"id":2108,"nodeType":"StructuredDocumentation","src":"5047:165:8","text":" @dev Internal helper function to get an address from a storage slot\n @param _slot storage slot\n @return _address from the storage slot"},"id":2117,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"5226:17:8","nodeType":"FunctionDefinition","parameters":{"id":2111,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2110,"mutability":"mutable","name":"_slot","nameLocation":"5252:5:8","nodeType":"VariableDeclaration","scope":2117,"src":"5244:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2109,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5244:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5243:15:8"},"returnParameters":{"id":2114,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2113,"mutability":"mutable","name":"_address","nameLocation":"5290:8:8","nodeType":"VariableDeclaration","scope":2117,"src":"5282:16:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2112,"name":"address","nodeType":"ElementaryTypeName","src":"5282:7:8","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5281:18:8"},"scope":2137,"src":"5217:156:8","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2125,"nodeType":"Block","src":"5444:70:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5463:45:8","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5484:5:8"},{"name":"_value","nodeType":"YulIdentifier","src":"5491:6:8"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"5477:6:8"},"nodeType":"YulFunctionCall","src":"5477:21:8"},"nodeType":"YulExpressionStatement","src":"5477:21:8"}]},"evmVersion":"paris","externalReferences":[{"declaration":2119,"isOffset":false,"isSlot":false,"src":"5484:5:8","valueSize":1},{"declaration":2121,"isOffset":false,"isSlot":false,"src":"5491:6:8","valueSize":1}],"id":2124,"nodeType":"InlineAssembly","src":"5454:54:8"}]},"id":2126,"implemented":true,"kind":"function","modifiers":[],"name":"_setValueBySlot","nameLocation":"5388:15:8","nodeType":"FunctionDefinition","parameters":{"id":2122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2119,"mutability":"mutable","name":"_slot","nameLocation":"5412:5:8","nodeType":"VariableDeclaration","scope":2126,"src":"5404:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2118,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5404:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2121,"mutability":"mutable","name":"_value","nameLocation":"5427:6:8","nodeType":"VariableDeclaration","scope":2126,"src":"5419:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2120,"name":"uint256","nodeType":"ElementaryTypeName","src":"5419:7:8","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5403:31:8"},"returnParameters":{"id":2123,"nodeType":"ParameterList","parameters":[],"src":"5444:0:8"},"scope":2137,"src":"5379:135:8","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2135,"nodeType":"Block","src":"5764:71:8","statements":[{"AST":{"nodeType":"YulBlock","src":"5783:46:8","statements":[{"nodeType":"YulAssignment","src":"5797:22:8","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"5813:5:8"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"5807:5:8"},"nodeType":"YulFunctionCall","src":"5807:12:8"},"variableNames":[{"name":"_value","nodeType":"YulIdentifier","src":"5797:6:8"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2129,"isOffset":false,"isSlot":false,"src":"5813:5:8","valueSize":1},{"declaration":2132,"isOffset":false,"isSlot":false,"src":"5797:6:8","valueSize":1}],"id":2134,"nodeType":"InlineAssembly","src":"5774:55:8"}]},"documentation":{"id":2127,"nodeType":"StructuredDocumentation","src":"5520:160:8","text":" @dev Internal helper function to get a value from a storage slot\n @param _slot storage slot\n @return _value from the storage slot"},"id":2136,"implemented":true,"kind":"function","modifiers":[],"name":"_getValueBySlot","nameLocation":"5694:15:8","nodeType":"FunctionDefinition","parameters":{"id":2130,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2129,"mutability":"mutable","name":"_slot","nameLocation":"5718:5:8","nodeType":"VariableDeclaration","scope":2136,"src":"5710:13:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2128,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5710:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5709:15:8"},"returnParameters":{"id":2133,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2132,"mutability":"mutable","name":"_value","nameLocation":"5756:6:8","nodeType":"VariableDeclaration","scope":2136,"src":"5748:14:8","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2131,"name":"bytes32","nodeType":"ElementaryTypeName","src":"5748:7:8","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"5747:16:8"},"scope":2137,"src":"5685:150:8","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2138,"src":"751:5086:8","usedErrors":[]}],"src":"115:5723:8"},"id":8},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol","exportedSymbols":{"Address":[828],"IFirewall":[3037],"IFirewallConsumer":[3045],"IFirewallConsumerStorage":[3068],"Initializable":[168],"SimpleUpgradeableFirewallConsumer":[2470]},"id":2471,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2139,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:9"},{"absolutePath":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","id":2141,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2471,"sourceUnit":169,"src":"140:96:9","symbolAliases":[{"foreign":{"id":2140,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":168,"src":"148:13:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":2143,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2471,"sourceUnit":829,"src":"237:66:9","symbolAliases":[{"foreign":{"id":2142,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"245:7:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":2145,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2471,"sourceUnit":3038,"src":"304:54:9","symbolAliases":[{"foreign":{"id":2144,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"312:9:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"../interfaces/IFirewallConsumer.sol","id":2147,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2471,"sourceUnit":3046,"src":"359:70:9","symbolAliases":[{"foreign":{"id":2146,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"367:17:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","file":"../interfaces/IFirewallConsumerStorage.sol","id":2149,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2471,"sourceUnit":3069,"src":"430:84:9","symbolAliases":[{"foreign":{"id":2148,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"438:24:9","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2151,"name":"IFirewallConsumer","nameLocations":["882:17:9"],"nodeType":"IdentifierPath","referencedDeclaration":3045,"src":"882:17:9"},"id":2152,"nodeType":"InheritanceSpecifier","src":"882:17:9"},{"baseName":{"id":2153,"name":"Initializable","nameLocations":["901:13:9"],"nodeType":"IdentifierPath","referencedDeclaration":168,"src":"901:13:9"},"id":2154,"nodeType":"InheritanceSpecifier","src":"901:13:9"}],"canonicalName":"SimpleUpgradeableFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":2150,"nodeType":"StructuredDocumentation","src":"516:319:9","text":" @title Firewall Minimal Upgradeable Consumer Contract\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface."},"fullyImplemented":true,"id":2470,"linearizedBaseContracts":[2470,168,3045],"name":"SimpleUpgradeableFirewallConsumer","nameLocation":"845:33:9","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2167,"mutability":"constant","name":"FIREWALL_CONSUMER_STORAGE_SLOT","nameLocation":"1010:30:9","nodeType":"VariableDeclaration","scope":2470,"src":"985:126:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2155,"name":"bytes32","nodeType":"ElementaryTypeName","src":"985:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2165,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e636f6e73756d65722e73746f72616765","id":2161,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1069:35:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d","typeString":"literal_string \"eip1967.firewall.consumer.storage\""},"value":"eip1967.firewall.consumer.storage"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d","typeString":"literal_string \"eip1967.firewall.consumer.storage\""}],"id":2160,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1059:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2162,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1059:46:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2159,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1051:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2158,"name":"uint256","nodeType":"ElementaryTypeName","src":"1051:7:9","typeDescriptions":{}}},"id":2163,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1051:55:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2164,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1109:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1051:59:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2157,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1043:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2156,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1043:7:9","typeDescriptions":{}}},"id":2166,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1043:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2180,"mutability":"constant","name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nameLocation":"1142:49:9","nodeType":"VariableDeclaration","scope":2470,"src":"1117:164:9","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2168,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1117:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2178,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e636f6e73756d65722e696e697469616c697a65722e6669726577616c6c2e61646d696e","id":2174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1220:54:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d","typeString":"literal_string \"eip1967.firewall.consumer.initializer.firewall.admin\""},"value":"eip1967.firewall.consumer.initializer.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d","typeString":"literal_string \"eip1967.firewall.consumer.initializer.firewall.admin\""}],"id":2173,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1210:9:9","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2175,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1210:65:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2172,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1202:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2171,"name":"uint256","nodeType":"ElementaryTypeName","src":"1202:7:9","typeDescriptions":{}}},"id":2176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1202:74:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2177,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1279:1:9","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1202:78:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2170,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1194:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2169,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1194:7:9","typeDescriptions":{}}},"id":2179,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1194:87:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":2243,"nodeType":"Block","src":"1807:675:9","statements":[{"assignments":[2184],"declarations":[{"constant":false,"id":2184,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"1825:23:9","nodeType":"VariableDeclaration","scope":2243,"src":"1817:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2183,"name":"address","nodeType":"ElementaryTypeName","src":"1817:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2187,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2185,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"1851:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1851:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1817:63:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2188,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"1894:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2191,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1929:1:9","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":2190,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1921:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2189,"name":"address","nodeType":"ElementaryTypeName","src":"1921:7:9","typeDescriptions":{}}},"id":2192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1921:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1894:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2197,"nodeType":"IfStatement","src":"1890:89:9","trueBody":{"id":2196,"nodeType":"Block","src":"1933:46:9","statements":[{"id":2194,"nodeType":"PlaceholderStatement","src":"1947:1:9"},{"id":2195,"nodeType":"Return","src":"1962:7:9"}]}},{"assignments":[2199],"declarations":[{"constant":false,"id":2199,"mutability":"mutable","name":"firewall","nameLocation":"1996:8:9","nodeType":"VariableDeclaration","scope":2243,"src":"1988:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2198,"name":"address","nodeType":"ElementaryTypeName","src":"1988:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2205,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2201,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2184,"src":"2032:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2200,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"2007:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$3068_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}},"id":2203,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2057:11:9","memberName":"getFirewall","nodeType":"MemberAccess","referencedDeclaration":3057,"src":"2007:61:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2204,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2007:63:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1988:82:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2206,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2199,"src":"2084:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2209,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2104:1:9","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":2208,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2096:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2207,"name":"address","nodeType":"ElementaryTypeName","src":"2096:7:9","typeDescriptions":{}}},"id":2210,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2096:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2084:22:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2215,"nodeType":"IfStatement","src":"2080:74:9","trueBody":{"id":2214,"nodeType":"Block","src":"2108:46:9","statements":[{"id":2212,"nodeType":"PlaceholderStatement","src":"2122:1:9"},{"id":2213,"nodeType":"Return","src":"2137:7:9"}]}},{"assignments":[2217],"declarations":[{"constant":false,"id":2217,"mutability":"mutable","name":"value","nameLocation":"2254:5:9","nodeType":"VariableDeclaration","scope":2243,"src":"2246:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2216,"name":"uint256","nodeType":"ElementaryTypeName","src":"2246:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2218,"nodeType":"VariableDeclarationStatement","src":"2246:13:9"},{"AST":{"nodeType":"YulBlock","src":"2278:44:9","statements":[{"nodeType":"YulAssignment","src":"2292:20:9","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"2301:9:9"},"nodeType":"YulFunctionCall","src":"2301:11:9"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"2292:5:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2217,"isOffset":false,"isSlot":false,"src":"2292:5:9","valueSize":1}],"id":2219,"nodeType":"InlineAssembly","src":"2269:53:9"},{"expression":{"arguments":[{"expression":{"id":2224,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2364:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2368:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2364:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2226,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2376:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2227,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2380:4:9","memberName":"data","nodeType":"MemberAccess","src":"2376:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2228,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"2386:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2221,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2199,"src":"2341:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2220,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2331:9:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":2222,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":2223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2351:12:9","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":3000,"src":"2331:32:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2331:61:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2230,"nodeType":"ExpressionStatement","src":"2331:61:9"},{"id":2231,"nodeType":"PlaceholderStatement","src":"2402:1:9"},{"expression":{"arguments":[{"expression":{"id":2236,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2447:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2451:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2447:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2238,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2459:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2463:4:9","memberName":"data","nodeType":"MemberAccess","src":"2459:8:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2240,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2217,"src":"2469:5:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2233,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2199,"src":"2423:8:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2232,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2413:9:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":2234,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":2235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2433:13:9","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":3009,"src":"2413:33:9","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2241,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2413:62:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2242,"nodeType":"ExpressionStatement","src":"2413:62:9"}]},"documentation":{"id":2181,"nodeType":"StructuredDocumentation","src":"1288:485:9","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":2244,"name":"firewallProtected","nameLocation":"1787:17:9","nodeType":"ModifierDefinition","parameters":{"id":2182,"nodeType":"ParameterList","parameters":[],"src":"1804:2:9"},"src":"1778:704:9","virtual":false,"visibility":"internal"},{"body":{"id":2257,"nodeType":"Block","src":"2604:110:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2248,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2622:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2249,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2626:6:9","memberName":"sender","nodeType":"MemberAccess","src":"2622:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":2250,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"2636:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2251,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2636:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2622:33:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":2253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2657:38:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""},"value":"FirewallConsumer: not firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""}],"id":2247,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"2614:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2614:82:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2255,"nodeType":"ExpressionStatement","src":"2614:82:9"},{"id":2256,"nodeType":"PlaceholderStatement","src":"2706:1:9"}]},"documentation":{"id":2245,"nodeType":"StructuredDocumentation","src":"2488:82:9","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":2258,"name":"onlyFirewallAdmin","nameLocation":"2584:17:9","nodeType":"ModifierDefinition","parameters":{"id":2246,"nodeType":"ParameterList","parameters":[],"src":"2601:2:9"},"src":"2575:139:9","virtual":false,"visibility":"internal"},{"body":{"id":2318,"nodeType":"Block","src":"3456:553:9","statements":[{"assignments":[2267],"declarations":[{"constant":false,"id":2267,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"3474:23:9","nodeType":"VariableDeclaration","scope":2318,"src":"3466:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2266,"name":"address","nodeType":"ElementaryTypeName","src":"3466:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2270,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2268,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"3500:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2269,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3500:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3466:63:9"},{"assignments":[2272],"declarations":[{"constant":false,"id":2272,"mutability":"mutable","name":"vennPolicy","nameLocation":"3547:10:9","nodeType":"VariableDeclaration","scope":2318,"src":"3539:18:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2271,"name":"address","nodeType":"ElementaryTypeName","src":"3539:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2278,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2274,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2267,"src":"3585:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2273,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"3560:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$3068_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2275,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3560:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}},"id":2276,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3610:21:9","memberName":"getApprovedVennPolicy","nodeType":"MemberAccess","referencedDeclaration":3062,"src":"3560:71:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3560:73:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3539:94:9"},{"assignments":[2280],"declarations":[{"constant":false,"id":2280,"mutability":"mutable","name":"userNativeFee","nameLocation":"3651:13:9","nodeType":"VariableDeclaration","scope":2318,"src":"3643:21:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2279,"name":"uint256","nodeType":"ElementaryTypeName","src":"3643:7:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2286,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2282,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2267,"src":"3692:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2281,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"3667:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$3068_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2283,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}},"id":2284,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3717:16:9","memberName":"getUserNativeFee","nodeType":"MemberAccess","referencedDeclaration":3067,"src":"3667:66:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_uint256_$","typeString":"function () view external returns (uint256)"}},"id":2285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3667:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"3643:92:9"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2291,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2288,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3753:3:9","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2289,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3757:5:9","memberName":"value","nodeType":"MemberAccess","src":"3753:9:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2290,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"3766:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3753:26:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e61746976652076616c756520666f7220666565","id":2292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3781:51:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c","typeString":"literal_string \"FirewallConsumer: Not enough native value for fee\""},"value":"FirewallConsumer: Not enough native value for fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c","typeString":"literal_string \"FirewallConsumer: Not enough native value for fee\""}],"id":2287,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3745:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3745:88:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2294,"nodeType":"ExpressionStatement","src":"3745:88:9"},{"assignments":[2296,null],"declarations":[{"constant":false,"id":2296,"mutability":"mutable","name":"success","nameLocation":"3849:7:9","nodeType":"VariableDeclaration","scope":2318,"src":"3844:12:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2295,"name":"bool","nodeType":"ElementaryTypeName","src":"3844:4:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2303,"initialValue":{"arguments":[{"id":2301,"name":"vennPolicyPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2261,"src":"3899:17:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2297,"name":"vennPolicy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2272,"src":"3861:10:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2298,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3872:4:9","memberName":"call","nodeType":"MemberAccess","src":"3861:15:9","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2299,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2280,"src":"3884:13:9","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"3861:37:9","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2302,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3861:56:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"3843:74:9"},{"expression":{"arguments":[{"id":2305,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2296,"src":"3935:7:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2304,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3927:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2306,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3927:16:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2307,"nodeType":"ExpressionStatement","src":"3927:16:9"},{"expression":{"arguments":[{"arguments":[{"id":2313,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3990:4:9","typeDescriptions":{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$2470","typeString":"contract SimpleUpgradeableFirewallConsumer"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_SimpleUpgradeableFirewallConsumer_$2470","typeString":"contract SimpleUpgradeableFirewallConsumer"}],"id":2312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3982:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2311,"name":"address","nodeType":"ElementaryTypeName","src":"3982:7:9","typeDescriptions":{}}},"id":2314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3982:13:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2315,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2263,"src":"3997:4:9","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2308,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"3953:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":2310,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3961:20:9","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"3953:28:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2316,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3953:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2317,"nodeType":"ExpressionStatement","src":"3953:49:9"}]},"documentation":{"id":2259,"nodeType":"StructuredDocumentation","src":"2720:611:9","text":" @dev Allows calling an approved external Venn policy before executing a method.\n This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before\n executing a function, allowing synchronous transaction approvals.\n NOTE: If userNativeFee is non zero, functions using this must take into account that\n the value received will be slightly less than msg.value due to the fee.\n @param vennPolicyPayload payload to be sent to the Venn policy\n @param data data to be executed after the Venn policy call"},"functionSelector":"8568b4d2","id":2319,"implemented":true,"kind":"function","modifiers":[],"name":"safeFunctionCall","nameLocation":"3345:16:9","nodeType":"FunctionDefinition","parameters":{"id":2264,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2261,"mutability":"mutable","name":"vennPolicyPayload","nameLocation":"3386:17:9","nodeType":"VariableDeclaration","scope":2319,"src":"3371:32:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2260,"name":"bytes","nodeType":"ElementaryTypeName","src":"3371:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2263,"mutability":"mutable","name":"data","nameLocation":"3428:4:9","nodeType":"VariableDeclaration","scope":2319,"src":"3413:19:9","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2262,"name":"bytes","nodeType":"ElementaryTypeName","src":"3413:5:9","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3361:77:9"},"returnParameters":{"id":2265,"nodeType":"ParameterList","parameters":[],"src":"3456:0:9"},"scope":2470,"src":"3336:673:9","stateMutability":"payable","virtual":false,"visibility":"external"},{"baseFunctions":[3044],"body":{"id":2328,"nodeType":"Block","src":"4137:43:9","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2325,"name":"_getFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2438,"src":"4154:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2326,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4154:19:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2324,"id":2327,"nodeType":"Return","src":"4147:26:9"}]},"documentation":{"id":2320,"nodeType":"StructuredDocumentation","src":"4015:60:9","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":2329,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"4089:13:9","nodeType":"FunctionDefinition","parameters":{"id":2321,"nodeType":"ParameterList","parameters":[],"src":"4102:2:9"},"returnParameters":{"id":2324,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2323,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2329,"src":"4128:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2322,"name":"address","nodeType":"ElementaryTypeName","src":"4128:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4127:9:9"},"scope":2470,"src":"4080:100:9","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2349,"nodeType":"Block","src":"4283:182:9","statements":[{"expression":{"arguments":[{"id":2337,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"4311:49:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"30","id":2340,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4370:1:9","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":2339,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4362:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2338,"name":"address","nodeType":"ElementaryTypeName","src":"4362:7:9","typeDescriptions":{}}},"id":2341,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4362:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2336,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"4293:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4293:80:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2343,"nodeType":"ExpressionStatement","src":"4293:80:9"},{"expression":{"arguments":[{"id":2345,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"4401:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2346,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2331,"src":"4433:24:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2344,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"4383:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2347,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4383:75:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2348,"nodeType":"ExpressionStatement","src":"4383:75:9"}]},"functionSelector":"af076af4","id":2350,"implemented":true,"kind":"function","modifiers":[{"id":2334,"kind":"modifierInvocation","modifierName":{"id":2333,"name":"onlyFirewallAdmin","nameLocations":["4265:17:9"],"nodeType":"IdentifierPath","referencedDeclaration":2258,"src":"4265:17:9"},"nodeType":"ModifierInvocation","src":"4265:17:9"}],"name":"setFirewallConsumerStorage","nameLocation":"4195:26:9","nodeType":"FunctionDefinition","parameters":{"id":2332,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2331,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"4230:24:9","nodeType":"VariableDeclaration","scope":2350,"src":"4222:32:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2330,"name":"address","nodeType":"ElementaryTypeName","src":"4222:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4221:34:9"},"returnParameters":{"id":2335,"nodeType":"ParameterList","parameters":[],"src":"4283:0:9"},"scope":2470,"src":"4186:279:9","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2407,"nodeType":"Block","src":"4622:548:9","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":2377,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2369,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":2363,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"4649:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}],"id":2362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4641:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2361,"name":"address","nodeType":"ElementaryTypeName","src":"4641:7:9","typeDescriptions":{}}},"id":2364,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4641:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2367,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4686:1:9","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":2366,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4678:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2365,"name":"address","nodeType":"ElementaryTypeName","src":"4678:7:9","typeDescriptions":{}}},"id":2368,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4678:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4641:47:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":2370,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"4640:49:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2371,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2355,"src":"4693:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2374,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4719:1:9","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":2373,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4711:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2372,"name":"address","nodeType":"ElementaryTypeName","src":"4711:7:9","typeDescriptions":{}}},"id":2375,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4711:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4693:28:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"4640:81:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206d7573742068617665206669726577616c6c20636f6e73756d65722073746f72616765206f72206669726577616c6c2061646d696e","id":2378,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4723:73:9","typeDescriptions":{"typeIdentifier":"t_stringliteral_33565c926b695c4ac07253821675609a7a4db29d5d6517a25bcc304c1c1267f0","typeString":"literal_string \"FirewallConsumer: must have firewall consumer storage or firewall admin\""},"value":"FirewallConsumer: must have firewall consumer storage or firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_33565c926b695c4ac07253821675609a7a4db29d5d6517a25bcc304c1c1267f0","typeString":"literal_string \"FirewallConsumer: must have firewall consumer storage or firewall admin\""}],"id":2360,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4632:7:9","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4632:165:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2380,"nodeType":"ExpressionStatement","src":"4632:165:9"},{"assignments":[2382],"declarations":[{"constant":false,"id":2382,"mutability":"mutable","name":"_firewallConsumerStorageAddress","nameLocation":"4815:31:9","nodeType":"VariableDeclaration","scope":2407,"src":"4807:39:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2381,"name":"address","nodeType":"ElementaryTypeName","src":"4807:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2387,"initialValue":{"arguments":[{"id":2385,"name":"_firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2353,"src":"4857:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}],"id":2384,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4849:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2383,"name":"address","nodeType":"ElementaryTypeName","src":"4849:7:9","typeDescriptions":{}}},"id":2386,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4849:33:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4807:75:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2388,"name":"_firewallConsumerStorageAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"4896:31:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2391,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4939:1:9","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":2390,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4931:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2389,"name":"address","nodeType":"ElementaryTypeName","src":"4931:7:9","typeDescriptions":{}}},"id":2392,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4931:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4896:45:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2401,"nodeType":"IfStatement","src":"4892:180:9","trueBody":{"id":2400,"nodeType":"Block","src":"4943:129:9","statements":[{"expression":{"arguments":[{"id":2395,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"4975:49:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2396,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2355,"src":"5026:14:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2394,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"4957:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2397,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4957:84:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2398,"nodeType":"ExpressionStatement","src":"4957:84:9"},{"functionReturnParameters":2359,"id":2399,"nodeType":"Return","src":"5055:7:9"}]}},{"expression":{"arguments":[{"id":2403,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"5099:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2404,"name":"_firewallConsumerStorageAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2382,"src":"5131:31:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2402,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2459,"src":"5081:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5081:82:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2406,"nodeType":"ExpressionStatement","src":"5081:82:9"}]},"id":2408,"implemented":true,"kind":"function","modifiers":[{"id":2358,"kind":"modifierInvocation","modifierName":{"id":2357,"name":"onlyInitializing","nameLocations":["4605:16:9"],"nodeType":"IdentifierPath","referencedDeclaration":113,"src":"4605:16:9"},"nodeType":"ModifierInvocation","src":"4605:16:9"}],"name":"__SimpleUpgradeableFirewallConsumer_init","nameLocation":"4480:40:9","nodeType":"FunctionDefinition","parameters":{"id":2356,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2353,"mutability":"mutable","name":"_firewallConsumerStorage","nameLocation":"4546:24:9","nodeType":"VariableDeclaration","scope":2408,"src":"4521:49:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"},"typeName":{"id":2352,"nodeType":"UserDefinedTypeName","pathNode":{"id":2351,"name":"IFirewallConsumerStorage","nameLocations":["4521:24:9"],"nodeType":"IdentifierPath","referencedDeclaration":3068,"src":"4521:24:9"},"referencedDeclaration":3068,"src":"4521:24:9","typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}},"visibility":"internal"},{"constant":false,"id":2355,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"4580:14:9","nodeType":"VariableDeclaration","scope":2408,"src":"4572:22:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2354,"name":"address","nodeType":"ElementaryTypeName","src":"4572:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4520:75:9"},"returnParameters":{"id":2359,"nodeType":"ParameterList","parameters":[],"src":"4622:0:9"},"scope":2470,"src":"4471:699:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2437,"nodeType":"Block","src":"5311:317:9","statements":[{"assignments":[2415],"declarations":[{"constant":false,"id":2415,"mutability":"mutable","name":"firewallConsumerStorage","nameLocation":"5329:23:9","nodeType":"VariableDeclaration","scope":2437,"src":"5321:31:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2414,"name":"address","nodeType":"ElementaryTypeName","src":"5321:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2418,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2416,"name":"_getFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2449,"src":"5355:27:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2417,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5355:29:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5321:63:9"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2419,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"5398:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2422,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5433:1:9","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":2421,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5425:7:9","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2420,"name":"address","nodeType":"ElementaryTypeName","src":"5425:7:9","typeDescriptions":{}}},"id":2423,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5425:10:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5398:37:9","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2430,"nodeType":"IfStatement","src":"5394:143:9","trueBody":{"id":2429,"nodeType":"Block","src":"5437:100:9","statements":[{"expression":{"arguments":[{"id":2426,"name":"FIREWALL_CONSUMER_INITIALIZER_FIREWALL_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2180,"src":"5476:49:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2425,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"5458:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2427,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5458:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2413,"id":2428,"nodeType":"Return","src":"5451:75:9"}]}},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":2432,"name":"firewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2415,"src":"5578:23:9","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2431,"name":"IFirewallConsumerStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3068,"src":"5553:24:9","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewallConsumerStorage_$3068_$","typeString":"type(contract IFirewallConsumerStorage)"}},"id":2433,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewallConsumerStorage_$3068","typeString":"contract IFirewallConsumerStorage"}},"id":2434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5603:16:9","memberName":"getFirewallAdmin","nodeType":"MemberAccess","referencedDeclaration":3052,"src":"5553:66:9","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":2435,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5553:68:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2413,"id":2436,"nodeType":"Return","src":"5546:75:9"}]},"documentation":{"id":2409,"nodeType":"StructuredDocumentation","src":"5176:69:9","text":" @dev Internal view function for the firewall admin"},"id":2438,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallAdmin","nameLocation":"5259:17:9","nodeType":"FunctionDefinition","parameters":{"id":2410,"nodeType":"ParameterList","parameters":[],"src":"5276:2:9"},"returnParameters":{"id":2413,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2412,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2438,"src":"5302:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2411,"name":"address","nodeType":"ElementaryTypeName","src":"5302:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5301:9:9"},"scope":2470,"src":"5250:378:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2448,"nodeType":"Block","src":"5781:73:9","statements":[{"expression":{"arguments":[{"id":2445,"name":"FIREWALL_CONSUMER_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2167,"src":"5816:30:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2444,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2469,"src":"5798:17:9","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2446,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5798:49:9","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2443,"id":2447,"nodeType":"Return","src":"5791:56:9"}]},"documentation":{"id":2439,"nodeType":"StructuredDocumentation","src":"5634:71:9","text":" @dev Internal view function for the consumer storage"},"id":2449,"implemented":true,"kind":"function","modifiers":[],"name":"_getFirewallConsumerStorage","nameLocation":"5719:27:9","nodeType":"FunctionDefinition","parameters":{"id":2440,"nodeType":"ParameterList","parameters":[],"src":"5746:2:9"},"returnParameters":{"id":2443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2449,"src":"5772:7:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2441,"name":"address","nodeType":"ElementaryTypeName","src":"5772:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5771:9:9"},"scope":2470,"src":"5710:144:9","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2458,"nodeType":"Block","src":"6093:72:9","statements":[{"AST":{"nodeType":"YulBlock","src":"6112:47:9","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"6133:5:9"},{"name":"_address","nodeType":"YulIdentifier","src":"6140:8:9"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"6126:6:9"},"nodeType":"YulFunctionCall","src":"6126:23:9"},"nodeType":"YulExpressionStatement","src":"6126:23:9"}]},"evmVersion":"paris","externalReferences":[{"declaration":2454,"isOffset":false,"isSlot":false,"src":"6140:8:9","valueSize":1},{"declaration":2452,"isOffset":false,"isSlot":false,"src":"6133:5:9","valueSize":1}],"id":2457,"nodeType":"InlineAssembly","src":"6103:56:9"}]},"documentation":{"id":2450,"nodeType":"StructuredDocumentation","src":"5861:158:9","text":" @dev Internal helper function to set an address in a storage slot\n @param _slot storage slot\n @param _address address to be set"},"id":2459,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"6033:17:9","nodeType":"FunctionDefinition","parameters":{"id":2455,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2452,"mutability":"mutable","name":"_slot","nameLocation":"6059:5:9","nodeType":"VariableDeclaration","scope":2459,"src":"6051:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2451,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6051:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2454,"mutability":"mutable","name":"_address","nameLocation":"6074:8:9","nodeType":"VariableDeclaration","scope":2459,"src":"6066:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2453,"name":"address","nodeType":"ElementaryTypeName","src":"6066:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6050:33:9"},"returnParameters":{"id":2456,"nodeType":"ParameterList","parameters":[],"src":"6093:0:9"},"scope":2470,"src":"6024:141:9","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2468,"nodeType":"Block","src":"6424:73:9","statements":[{"AST":{"nodeType":"YulBlock","src":"6443:48:9","statements":[{"nodeType":"YulAssignment","src":"6457:24:9","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"6475:5:9"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"6469:5:9"},"nodeType":"YulFunctionCall","src":"6469:12:9"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"6457:8:9"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2465,"isOffset":false,"isSlot":false,"src":"6457:8:9","valueSize":1},{"declaration":2462,"isOffset":false,"isSlot":false,"src":"6475:5:9","valueSize":1}],"id":2467,"nodeType":"InlineAssembly","src":"6434:57:9"}]},"documentation":{"id":2460,"nodeType":"StructuredDocumentation","src":"6171:165:9","text":" @dev Internal helper function to get an address from a storage slot\n @param _slot storage slot\n @return _address from the storage slot"},"id":2469,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"6350:17:9","nodeType":"FunctionDefinition","parameters":{"id":2463,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2462,"mutability":"mutable","name":"_slot","nameLocation":"6376:5:9","nodeType":"VariableDeclaration","scope":2469,"src":"6368:13:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2461,"name":"bytes32","nodeType":"ElementaryTypeName","src":"6368:7:9","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"6367:15:9"},"returnParameters":{"id":2466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2465,"mutability":"mutable","name":"_address","nameLocation":"6414:8:9","nodeType":"VariableDeclaration","scope":2469,"src":"6406:16:9","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2464,"name":"address","nodeType":"ElementaryTypeName","src":"6406:7:9","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6405:18:9"},"scope":2470,"src":"6341:156:9","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2471,"src":"836:5664:9","usedErrors":[]}],"src":"115:6385:9"},"id":9},"contracts/consumers/VennFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/consumers/VennFirewallConsumer.sol","exportedSymbols":{"VennFirewallConsumer":[2484],"VennFirewallConsumerBase":[2989]},"id":2485,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2472,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:10"},{"absolutePath":"contracts/consumers/VennFirewallConsumerBase.sol","file":"./VennFirewallConsumerBase.sol","id":2474,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2485,"sourceUnit":2990,"src":"140:72:10","symbolAliases":[{"foreign":{"id":2473,"name":"VennFirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2989,"src":"148:24:10","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"arguments":[{"hexValue":"30","id":2479,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"580:1:10","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":2478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"572:7:10","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2477,"name":"address","nodeType":"ElementaryTypeName","src":"572:7:10","typeDescriptions":{}}},"id":2480,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"572:10:10","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":2481,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"584:3:10","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"588:6:10","memberName":"sender","nodeType":"MemberAccess","src":"584:10:10","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"baseName":{"id":2476,"name":"VennFirewallConsumerBase","nameLocations":["547:24:10"],"nodeType":"IdentifierPath","referencedDeclaration":2989,"src":"547:24:10"},"id":2483,"nodeType":"InheritanceSpecifier","src":"547:48:10"}],"canonicalName":"VennFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":2475,"nodeType":"StructuredDocumentation","src":"214:299:10","text":" @title Firewall Consumer\n @author David Benchimol @ Ironblocks \n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract must initializes with the firewall contract disabled, and the deployer\n as the firewall admin."},"fullyImplemented":true,"id":2484,"linearizedBaseContracts":[2484,2989,850,3045],"name":"VennFirewallConsumer","nameLocation":"523:20:10","nodeType":"ContractDefinition","nodes":[],"scope":2485,"src":"514:85:10","usedErrors":[]}],"src":"115:485:10"},"id":10},"contracts/consumers/VennFirewallConsumerBase.sol":{"ast":{"absolutePath":"contracts/consumers/VennFirewallConsumerBase.sol","exportedSymbols":{"Address":[828],"Context":[850],"ERC165Checker":[1044],"IFirewall":[3037],"IFirewallConsumer":[3045],"VennFirewallConsumerBase":[2989]},"id":2990,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2486,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:11"},{"absolutePath":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","id":2488,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2990,"sourceUnit":1045,"src":"140:92:11","symbolAliases":[{"foreign":{"id":2487,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"148:13:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","id":2490,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2990,"sourceUnit":829,"src":"233:66:11","symbolAliases":[{"foreign":{"id":2489,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"241:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"@openzeppelin/contracts/utils/Context.sol","file":"@openzeppelin/contracts/utils/Context.sol","id":2492,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2990,"sourceUnit":851,"src":"300:66:11","symbolAliases":[{"foreign":{"id":2491,"name":"Context","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":850,"src":"308:7:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewall.sol","file":"../interfaces/IFirewall.sol","id":2494,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2990,"sourceUnit":3038,"src":"367:54:11","symbolAliases":[{"foreign":{"id":2493,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"375:9:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","file":"../interfaces/IFirewallConsumer.sol","id":2496,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":2990,"sourceUnit":3046,"src":"422:70:11","symbolAliases":[{"foreign":{"id":2495,"name":"IFirewallConsumer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3045,"src":"430:17:11","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":2498,"name":"IFirewallConsumer","nameLocations":["931:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":3045,"src":"931:17:11"},"id":2499,"nodeType":"InheritanceSpecifier","src":"931:17:11"},{"baseName":{"id":2500,"name":"Context","nameLocations":["950:7:11"],"nodeType":"IdentifierPath","referencedDeclaration":850,"src":"950:7:11"},"id":2501,"nodeType":"InheritanceSpecifier","src":"950:7:11"}],"canonicalName":"VennFirewallConsumerBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":2497,"nodeType":"StructuredDocumentation","src":"494:399:11","text":" @title Firewall Consumer Base Contract\n @author David Benchimol @ Ironblocks\n @dev This contract is a parent contract that can be used to add firewall protection to any contract.\n The contract must define a firewall contract which will manage the policies that are applied to the contract.\n It also must define a firewall admin which will be able to add and remove policies."},"fullyImplemented":true,"id":2989,"linearizedBaseContracts":[2989,850,3045],"name":"VennFirewallConsumerBase","nameLocation":"903:24:11","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":2507,"mutability":"constant","name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nameLocation":"989:43:11","nodeType":"VariableDeclaration","scope":2989,"src":"965:88:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"typeName":{"id":2502,"name":"bytes4","nodeType":"ElementaryTypeName","src":"965:6:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"value":{"arguments":[{"hexValue":"30783063393038636666","id":2505,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1042:10:11","typeDescriptions":{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"},"value":"0x0c908cff"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_210799871_by_1","typeString":"int_const 210799871"}],"id":2504,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1035:6:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes4_$","typeString":"type(bytes4)"},"typeName":{"id":2503,"name":"bytes4","nodeType":"ElementaryTypeName","src":"1035:6:11","typeDescriptions":{}}},"id":2506,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1035:18:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},"visibility":"private"},{"constant":true,"id":2520,"mutability":"constant","name":"FIREWALL_STORAGE_SLOT","nameLocation":"1179:21:11","nodeType":"VariableDeclaration","scope":2989,"src":"1154:100:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2508,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1154:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2518,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c","id":2514,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1229:18:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""},"value":"eip1967.firewall"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662","typeString":"literal_string \"eip1967.firewall\""}],"id":2513,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1219:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2515,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1219:29:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2512,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1211:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2511,"name":"uint256","nodeType":"ElementaryTypeName","src":"1211:7:11","typeDescriptions":{}}},"id":2516,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1211:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2517,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1252:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1211:42:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2510,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1203:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2509,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1203:7:11","typeDescriptions":{}}},"id":2519,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1203:51:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2533,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1347:27:11","nodeType":"VariableDeclaration","scope":2989,"src":"1322:112:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2521,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1322:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2531,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":2527,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1403:24:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":2526,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1393:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2528,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1393:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2525,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1385:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2524,"name":"uint256","nodeType":"ElementaryTypeName","src":"1385:7:11","typeDescriptions":{}}},"id":2529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1385:44:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2530,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1432:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1385:48:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2523,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1377:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2522,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1377:7:11","typeDescriptions":{}}},"id":2532,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1377:57:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2546,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"1553:31:11","nodeType":"VariableDeclaration","scope":2989,"src":"1528:120:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2534,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1528:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2544,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":2540,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1613:28:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":2539,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1603:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2541,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1603:39:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2538,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1595:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2537,"name":"uint256","nodeType":"ElementaryTypeName","src":"1595:7:11","typeDescriptions":{}}},"id":2542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1595:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2543,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1646:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1595:52:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2536,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1587:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2535,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1587:7:11","typeDescriptions":{}}},"id":2545,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1587:61:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2559,"mutability":"constant","name":"ATTESTATION_CENTER_PROXY_SLOT","nameLocation":"1680:29:11","nodeType":"VariableDeclaration","scope":2989,"src":"1655:124:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2547,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1655:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2557,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6174746573746174696f6e2e63656e7465722e70726f7879","id":2553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1738:34:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1","typeString":"literal_string \"eip1967.attestation.center.proxy\""},"value":"eip1967.attestation.center.proxy"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1","typeString":"literal_string \"eip1967.attestation.center.proxy\""}],"id":2552,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1728:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1728:45:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2551,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1720:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2550,"name":"uint256","nodeType":"ElementaryTypeName","src":"1720:7:11","typeDescriptions":{}}},"id":2555,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1720:54:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2556,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1777:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1720:58:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2549,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1712:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2548,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1712:7:11","typeDescriptions":{}}},"id":2558,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1712:67:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2572,"mutability":"constant","name":"USER_PAID_FEE_SLOT","nameLocation":"1810:18:11","nodeType":"VariableDeclaration","scope":2989,"src":"1785:102:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2560,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1785:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2570,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e757365722e706169642e666565","id":2566,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1857:23:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72","typeString":"literal_string \"eip1967.user.paid.fee\""},"value":"eip1967.user.paid.fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72","typeString":"literal_string \"eip1967.user.paid.fee\""}],"id":2565,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1847:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2567,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1847:34:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1839:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2563,"name":"uint256","nodeType":"ElementaryTypeName","src":"1839:7:11","typeDescriptions":{}}},"id":2568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1839:43:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1885:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1839:47:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2562,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1831:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2561,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1831:7:11","typeDescriptions":{}}},"id":2571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1831:56:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2585,"mutability":"constant","name":"SAFE_FUNCTION_CALLER_SLOT","nameLocation":"1918:25:11","nodeType":"VariableDeclaration","scope":2989,"src":"1893:116:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2573,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1893:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2583,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e736166652e66756e6374696f6e2e63616c6c6572","id":2579,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1972:30:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3","typeString":"literal_string \"eip1967.safe.function.caller\""},"value":"eip1967.safe.function.caller"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3","typeString":"literal_string \"eip1967.safe.function.caller\""}],"id":2578,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"1962:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2580,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1962:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2577,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1954:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2576,"name":"uint256","nodeType":"ElementaryTypeName","src":"1954:7:11","typeDescriptions":{}}},"id":2581,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1954:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2582,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2007:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"1954:54:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2575,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1946:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2574,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1946:7:11","typeDescriptions":{}}},"id":2584,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1946:63:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":2598,"mutability":"constant","name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nameLocation":"2040:28:11","nodeType":"VariableDeclaration","scope":2989,"src":"2015:122:11","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2586,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2015:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2596,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e736166652e66756e6374696f6e2e63616c6c2e666c6167","id":2592,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2097:33:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040","typeString":"literal_string \"eip1967.safe.function.call.flag\""},"value":"eip1967.safe.function.call.flag"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040","typeString":"literal_string \"eip1967.safe.function.call.flag\""}],"id":2591,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"2087:9:11","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":2593,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2087:44:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2590,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2079:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2589,"name":"uint256","nodeType":"ElementaryTypeName","src":"2079:7:11","typeDescriptions":{}}},"id":2594,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2079:53:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":2595,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2135:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"2079:57:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2588,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2071:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":2587,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2071:7:11","typeDescriptions":{}}},"id":2597,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2071:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"anonymous":false,"eventSelector":"2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b","id":2602,"name":"FirewallAdminUpdated","nameLocation":"2150:20:11","nodeType":"EventDefinition","parameters":{"id":2601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2600,"indexed":false,"mutability":"mutable","name":"newAdmin","nameLocation":"2179:8:11","nodeType":"VariableDeclaration","scope":2602,"src":"2171:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2599,"name":"address","nodeType":"ElementaryTypeName","src":"2171:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2170:18:11"},"src":"2144:45:11"},{"anonymous":false,"eventSelector":"60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd03608670","id":2606,"name":"FirewallUpdated","nameLocation":"2200:15:11","nodeType":"EventDefinition","parameters":{"id":2605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2604,"indexed":false,"mutability":"mutable","name":"newFirewall","nameLocation":"2224:11:11","nodeType":"VariableDeclaration","scope":2606,"src":"2216:19:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2603,"name":"address","nodeType":"ElementaryTypeName","src":"2216:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2215:21:11"},"src":"2194:43:11"},{"body":{"id":2653,"nodeType":"Block","src":"2762:358:11","statements":[{"assignments":[2610],"declarations":[{"constant":false,"id":2610,"mutability":"mutable","name":"firewall","nameLocation":"2780:8:11","nodeType":"VariableDeclaration","scope":2653,"src":"2772:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2609,"name":"address","nodeType":"ElementaryTypeName","src":"2772:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2614,"initialValue":{"arguments":[{"id":2612,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"2809:21:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2611,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"2791:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2613,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2791:40:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2772:59:11"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2620,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2615,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"2845:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":2618,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2865:1:11","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":2617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2857:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2616,"name":"address","nodeType":"ElementaryTypeName","src":"2857:7:11","typeDescriptions":{}}},"id":2619,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2857:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2845:22:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2624,"nodeType":"IfStatement","src":"2841:74:11","trueBody":{"id":2623,"nodeType":"Block","src":"2869:46:11","statements":[{"id":2621,"nodeType":"PlaceholderStatement","src":"2883:1:11"},{"id":2622,"nodeType":"Return","src":"2898:7:11"}]}},{"assignments":[2626],"declarations":[{"constant":false,"id":2626,"mutability":"mutable","name":"value","nameLocation":"2932:5:11","nodeType":"VariableDeclaration","scope":2653,"src":"2924:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2625,"name":"uint256","nodeType":"ElementaryTypeName","src":"2924:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2629,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":2627,"name":"_msgValue","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2949,"src":"2940:9:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":2628,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2940:11:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2924:27:11"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2634,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"2994:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2994:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2636,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"3008:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":2637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3008:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2638,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"3020:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2631,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"2971:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2630,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"2961:9:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":2632,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2961:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":2633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2981:12:11","memberName":"preExecution","nodeType":"MemberAccess","referencedDeclaration":3000,"src":"2961:32:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2639,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2961:65:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2640,"nodeType":"ExpressionStatement","src":"2961:65:11"},{"id":2641,"nodeType":"PlaceholderStatement","src":"3036:1:11"},{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":2646,"name":"_msgSender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":840,"src":"3081:10:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":2647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3081:12:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":2648,"name":"_msgData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":849,"src":"3095:8:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bytes_calldata_ptr_$","typeString":"function () view returns (bytes calldata)"}},"id":2649,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3095:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":2650,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2626,"src":"3107:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":2643,"name":"firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2610,"src":"3057:8:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2642,"name":"IFirewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3037,"src":"3047:9:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IFirewall_$3037_$","typeString":"type(contract IFirewall)"}},"id":2644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:19:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IFirewall_$3037","typeString":"contract IFirewall"}},"id":2645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3067:13:11","memberName":"postExecution","nodeType":"MemberAccess","referencedDeclaration":3009,"src":"3047:33:11","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$","typeString":"function (address,bytes memory,uint256) external"}},"id":2651,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3047:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2652,"nodeType":"ExpressionStatement","src":"3047:66:11"}]},"documentation":{"id":2607,"nodeType":"StructuredDocumentation","src":"2243:485:11","text":" @dev modifier that will run the preExecution and postExecution hooks of the firewall, applying each of\n the subscribed policies.\n NOTE: Applying this modifier on functions that exit execution flow by an inline assmebly \"return\" call will\n prevent the postExecution hook from running - breaking the protection provided by the firewall.\n If you have any questions, please refer to the Firewall's documentation and/or contact our support."},"id":2654,"name":"firewallProtected","nameLocation":"2742:17:11","nodeType":"ModifierDefinition","parameters":{"id":2608,"nodeType":"ParameterList","parameters":[],"src":"2759:2:11"},"src":"2733:387:11","virtual":false,"visibility":"internal"},{"body":{"id":2668,"nodeType":"Block","src":"3242:137:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2658,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3260:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2659,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3264:6:11","memberName":"sender","nodeType":"MemberAccess","src":"3260:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2661,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"3292:27:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2660,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"3274:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2662,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3274:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3260:60:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061646d696e","id":2664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"3322:38:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""},"value":"FirewallConsumer: not firewall admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda","typeString":"literal_string \"FirewallConsumer: not firewall admin\""}],"id":2657,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"3252:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2665,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3252:109:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2666,"nodeType":"ExpressionStatement","src":"3252:109:11"},{"id":2667,"nodeType":"PlaceholderStatement","src":"3371:1:11"}]},"documentation":{"id":2655,"nodeType":"StructuredDocumentation","src":"3126:82:11","text":" @dev modifier similar to onlyOwner, but for the firewall admin."},"id":2669,"name":"onlyFirewallAdmin","nameLocation":"3222:17:11","nodeType":"ModifierDefinition","parameters":{"id":2656,"nodeType":"ParameterList","parameters":[],"src":"3239:2:11"},"src":"3213:166:11","virtual":false,"visibility":"internal"},{"body":{"id":2700,"nodeType":"Block","src":"3584:264:11","statements":[{"expression":{"arguments":[{"id":2678,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"3612:21:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2679,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2672,"src":"3635:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2677,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"3594:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2680,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3594:51:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2681,"nodeType":"ExpressionStatement","src":"3594:51:11"},{"expression":{"arguments":[{"id":2683,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"3673:27:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2684,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2674,"src":"3702:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2682,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"3655:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3655:62:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2686,"nodeType":"ExpressionStatement","src":"3655:62:11"},{"expression":{"arguments":[{"id":2688,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"3745:25:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"31","id":2691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3780:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3772:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2689,"name":"address","nodeType":"ElementaryTypeName","src":"3772:7:11","typeDescriptions":{}}},"id":2692,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3772:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2687,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"3727:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3727:56:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2694,"nodeType":"ExpressionStatement","src":"3727:56:11"},{"expression":{"arguments":[{"id":2696,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"3809:28:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"31","id":2697,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3839:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2695,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"3793:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2698,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3793:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2699,"nodeType":"ExpressionStatement","src":"3793:48:11"}]},"documentation":{"id":2670,"nodeType":"StructuredDocumentation","src":"3385:117:11","text":" @dev Initializes a contract protected by a firewall, with a firewall address and a firewall admin."},"id":2701,"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","nodeType":"FunctionDefinition","parameters":{"id":2675,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2672,"mutability":"mutable","name":"_firewall","nameLocation":"3536:9:11","nodeType":"VariableDeclaration","scope":2701,"src":"3528:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2671,"name":"address","nodeType":"ElementaryTypeName","src":"3528:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2674,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"3563:14:11","nodeType":"VariableDeclaration","scope":2701,"src":"3555:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2673,"name":"address","nodeType":"ElementaryTypeName","src":"3555:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3518:65:11"},"returnParameters":{"id":2676,"nodeType":"ParameterList","parameters":[],"src":"3584:0:11"},"scope":2989,"src":"3507:341:11","stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"body":{"id":2755,"nodeType":"Block","src":"4000:596:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2714,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4018:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4022:5:11","memberName":"value","nodeType":"MemberAccess","src":"4018:9:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":2713,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"4031:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4018:26:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544820666f7220666565","id":2715,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4046:46:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213","typeString":"literal_string \"VennFirewallConsumer: Not enough ETH for fee\""},"value":"VennFirewallConsumer: Not enough ETH for fee"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213","typeString":"literal_string \"VennFirewallConsumer: Not enough ETH for fee\""}],"id":2710,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4010:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4010:83:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2717,"nodeType":"ExpressionStatement","src":"4010:83:11"},{"expression":{"arguments":[{"id":2719,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"4130:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2718,"name":"_initSafeFunctionCallFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2778,"src":"4103:26:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":2720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4103:41:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2721,"nodeType":"ExpressionStatement","src":"4103:41:11"},{"assignments":[2723],"declarations":[{"constant":false,"id":2723,"mutability":"mutable","name":"attestationCenterProxy","nameLocation":"4162:22:11","nodeType":"VariableDeclaration","scope":2755,"src":"4154:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2722,"name":"address","nodeType":"ElementaryTypeName","src":"4154:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":2727,"initialValue":{"arguments":[{"id":2725,"name":"ATTESTATION_CENTER_PROXY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"4205:29:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2724,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"4187:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2726,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4187:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4154:81:11"},{"assignments":[2729,null],"declarations":[{"constant":false,"id":2729,"mutability":"mutable","name":"success","nameLocation":"4251:7:11","nodeType":"VariableDeclaration","scope":2755,"src":"4246:12:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":2728,"name":"bool","nodeType":"ElementaryTypeName","src":"4246:4:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"},null],"id":2736,"initialValue":{"arguments":[{"id":2734,"name":"proxyPayload","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2705,"src":"4314:12:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2730,"name":"attestationCenterProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2723,"src":"4264:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":2731,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4287:4:11","memberName":"call","nodeType":"MemberAccess","src":"4264:27:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2733,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":2732,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2703,"src":"4299:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"4264:49:11","typeDescriptions":{"typeIdentifier":"t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value","typeString":"function (bytes memory) payable returns (bool,bytes memory)"}},"id":2735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4264:63:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_bool_$_t_bytes_memory_ptr_$","typeString":"tuple(bool,bytes memory)"}},"nodeType":"VariableDeclarationStatement","src":"4245:82:11"},{"expression":{"arguments":[{"id":2738,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2729,"src":"4345:7:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c206661696c6564","id":2739,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4354:41:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7","typeString":"literal_string \"VennFirewallConsumer: Proxy call failed\""},"value":"VennFirewallConsumer: Proxy call failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7","typeString":"literal_string \"VennFirewallConsumer: Proxy call failed\""}],"id":2737,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4337:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4337:59:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2741,"nodeType":"ExpressionStatement","src":"4337:59:11"},{"expression":{"arguments":[{"arguments":[{"id":2747,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4537:4:11","typeDescriptions":{"typeIdentifier":"t_contract$_VennFirewallConsumerBase_$2989","typeString":"contract VennFirewallConsumerBase"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_VennFirewallConsumerBase_$2989","typeString":"contract VennFirewallConsumerBase"}],"id":2746,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4529:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2745,"name":"address","nodeType":"ElementaryTypeName","src":"4529:7:11","typeDescriptions":{}}},"id":2748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4529:13:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2749,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2707,"src":"4544:4:11","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"expression":{"id":2742,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":828,"src":"4500:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$828_$","typeString":"type(library Address)"}},"id":2744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4508:20:11","memberName":"functionDelegateCall","nodeType":"MemberAccess","referencedDeclaration":715,"src":"4500:28:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (address,bytes memory) returns (bytes memory)"}},"id":2750,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4500:49:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":2751,"nodeType":"ExpressionStatement","src":"4500:49:11"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":2752,"name":"_deInitSafeFunctionCallFlags","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2800,"src":"4559:28:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":2753,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4559:30:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2754,"nodeType":"ExpressionStatement","src":"4559:30:11"}]},"functionSelector":"cb09f61f","id":2756,"implemented":true,"kind":"function","modifiers":[],"name":"safeFunctionCall","nameLocation":"3863:16:11","nodeType":"FunctionDefinition","parameters":{"id":2708,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2703,"mutability":"mutable","name":"userNativeFee","nameLocation":"3897:13:11","nodeType":"VariableDeclaration","scope":2756,"src":"3889:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2702,"name":"uint256","nodeType":"ElementaryTypeName","src":"3889:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":2705,"mutability":"mutable","name":"proxyPayload","nameLocation":"3935:12:11","nodeType":"VariableDeclaration","scope":2756,"src":"3920:27:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2704,"name":"bytes","nodeType":"ElementaryTypeName","src":"3920:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2707,"mutability":"mutable","name":"data","nameLocation":"3972:4:11","nodeType":"VariableDeclaration","scope":2756,"src":"3957:19:11","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":2706,"name":"bytes","nodeType":"ElementaryTypeName","src":"3957:5:11","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3879:103:11"},"returnParameters":{"id":2709,"nodeType":"ParameterList","parameters":[],"src":"4000:0:11"},"scope":2989,"src":"3854:742:11","stateMutability":"payable","virtual":false,"visibility":"external"},{"body":{"id":2777,"nodeType":"Block","src":"4670:191:11","statements":[{"expression":{"arguments":[{"id":2762,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"4698:25:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2763,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4725:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4729:6:11","memberName":"sender","nodeType":"MemberAccess","src":"4725:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2761,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"4680:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2765,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4680:56:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2766,"nodeType":"ExpressionStatement","src":"4680:56:11"},{"expression":{"arguments":[{"id":2768,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"4762:28:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"32","id":2769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4792:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"id":2767,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"4746:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2770,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4746:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2771,"nodeType":"ExpressionStatement","src":"4746:48:11"},{"expression":{"arguments":[{"id":2773,"name":"USER_PAID_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"4820:18:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2774,"name":"userNativeFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2758,"src":"4840:13:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":2772,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"4804:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2775,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4804:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2776,"nodeType":"ExpressionStatement","src":"4804:50:11"}]},"id":2778,"implemented":true,"kind":"function","modifiers":[],"name":"_initSafeFunctionCallFlags","nameLocation":"4611:26:11","nodeType":"FunctionDefinition","parameters":{"id":2759,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2758,"mutability":"mutable","name":"userNativeFee","nameLocation":"4646:13:11","nodeType":"VariableDeclaration","scope":2778,"src":"4638:21:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2757,"name":"uint256","nodeType":"ElementaryTypeName","src":"4638:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4637:23:11"},"returnParameters":{"id":2760,"nodeType":"ParameterList","parameters":[],"src":"4670:0:11"},"scope":2989,"src":"4602:259:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2799,"nodeType":"Block","src":"4916:179:11","statements":[{"expression":{"arguments":[{"id":2782,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"4944:25:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"arguments":[{"hexValue":"31","id":2785,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4979:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2784,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4971:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2783,"name":"address","nodeType":"ElementaryTypeName","src":"4971:7:11","typeDescriptions":{}}},"id":2786,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4971:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2781,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"4926:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4926:56:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2788,"nodeType":"ExpressionStatement","src":"4926:56:11"},{"expression":{"arguments":[{"id":2790,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"5008:28:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"31","id":2791,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5038:1:11","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"id":2789,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"4992:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2792,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4992:48:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2793,"nodeType":"ExpressionStatement","src":"4992:48:11"},{"expression":{"arguments":[{"id":2795,"name":"USER_PAID_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"5066:18:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"hexValue":"30","id":2796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5086:1:11","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":2794,"name":"_setValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2978,"src":"5050:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,uint256)"}},"id":2797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5050:38:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2798,"nodeType":"ExpressionStatement","src":"5050:38:11"}]},"id":2800,"implemented":true,"kind":"function","modifiers":[],"name":"_deInitSafeFunctionCallFlags","nameLocation":"4876:28:11","nodeType":"FunctionDefinition","parameters":{"id":2779,"nodeType":"ParameterList","parameters":[],"src":"4904:2:11"},"returnParameters":{"id":2780,"nodeType":"ParameterList","parameters":[],"src":"4916:0:11"},"scope":2989,"src":"4867:228:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2828,"nodeType":"Block","src":"5195:289:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2812,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2807,"name":"attestationCenterProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"5209:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5243:1:11","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":2809,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5235:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2808,"name":"address","nodeType":"ElementaryTypeName","src":"5235:7:11","typeDescriptions":{}}},"id":2811,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5235:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5209:36:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2822,"nodeType":"IfStatement","src":"5205:191:11","trueBody":{"id":2821,"nodeType":"Block","src":"5247:149:11","statements":[{"expression":{"arguments":[{"arguments":[{"id":2816,"name":"attestationCenterProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"5316:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":2817,"name":"SUPPORTS_APPROVE_VIA_SIGNATURE_INTERFACE_ID","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2507,"src":"5340:43:11","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":2814,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1044,"src":"5269:13:11","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$1044_$","typeString":"type(library ERC165Checker)"}},"id":2815,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5283:32:11","memberName":"supportsERC165InterfaceUnchecked","nodeType":"MemberAccess","referencedDeclaration":1043,"src":"5269:46:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":2818,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5269:115:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":2813,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5261:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":2819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5261:124:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2820,"nodeType":"ExpressionStatement","src":"5261:124:11"}]}},{"expression":{"arguments":[{"id":2824,"name":"ATTESTATION_CENTER_PROXY_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2559,"src":"5423:29:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2825,"name":"attestationCenterProxy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2802,"src":"5454:22:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2823,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"5405:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2826,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5405:72:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2827,"nodeType":"ExpressionStatement","src":"5405:72:11"}]},"functionSelector":"54222e6c","id":2829,"implemented":true,"kind":"function","modifiers":[{"id":2805,"kind":"modifierInvocation","modifierName":{"id":2804,"name":"onlyFirewallAdmin","nameLocations":["5177:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":2669,"src":"5177:17:11"},"nodeType":"ModifierInvocation","src":"5177:17:11"}],"name":"setAttestationCenterProxy","nameLocation":"5110:25:11","nodeType":"FunctionDefinition","parameters":{"id":2803,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2802,"mutability":"mutable","name":"attestationCenterProxy","nameLocation":"5144:22:11","nodeType":"VariableDeclaration","scope":2829,"src":"5136:30:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2801,"name":"address","nodeType":"ElementaryTypeName","src":"5136:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5135:32:11"},"returnParameters":{"id":2806,"nodeType":"ParameterList","parameters":[],"src":"5195:0:11"},"scope":2989,"src":"5101:383:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"baseFunctions":[3044],"body":{"id":2839,"nodeType":"Block","src":"5612:70:11","statements":[{"expression":{"arguments":[{"id":2836,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"5647:27:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2835,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"5629:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2837,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5629:46:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":2834,"id":2838,"nodeType":"Return","src":"5622:53:11"}]},"documentation":{"id":2830,"nodeType":"StructuredDocumentation","src":"5490:60:11","text":" @dev View function for the firewall admin"},"functionSelector":"f05c8582","id":2840,"implemented":true,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"5564:13:11","nodeType":"FunctionDefinition","parameters":{"id":2831,"nodeType":"ParameterList","parameters":[],"src":"5577:2:11"},"returnParameters":{"id":2834,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2833,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":2840,"src":"5603:7:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2832,"name":"address","nodeType":"ElementaryTypeName","src":"5603:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5602:9:11"},"scope":2989,"src":"5555:127:11","stateMutability":"view","virtual":false,"visibility":"external"},{"body":{"id":2857,"nodeType":"Block","src":"5909:109:11","statements":[{"expression":{"arguments":[{"id":2849,"name":"FIREWALL_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2520,"src":"5937:21:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2850,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"5960:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2848,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"5919:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5919:51:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2852,"nodeType":"ExpressionStatement","src":"5919:51:11"},{"eventCall":{"arguments":[{"id":2854,"name":"_firewall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2843,"src":"6001:9:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2853,"name":"FirewallUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2606,"src":"5985:15:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5985:26:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2856,"nodeType":"EmitStatement","src":"5980:31:11"}]},"documentation":{"id":2841,"nodeType":"StructuredDocumentation","src":"5688:149:11","text":" @dev Admin only function allowing the consumers admin to set the firewall address.\n @param _firewall address of the firewall"},"functionSelector":"8c36d02d","id":2858,"implemented":true,"kind":"function","modifiers":[{"id":2846,"kind":"modifierInvocation","modifierName":{"id":2845,"name":"onlyFirewallAdmin","nameLocations":["5891:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":2669,"src":"5891:17:11"},"nodeType":"ModifierInvocation","src":"5891:17:11"}],"name":"setFirewall","nameLocation":"5851:11:11","nodeType":"FunctionDefinition","parameters":{"id":2844,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2843,"mutability":"mutable","name":"_firewall","nameLocation":"5871:9:11","nodeType":"VariableDeclaration","scope":2858,"src":"5863:17:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2842,"name":"address","nodeType":"ElementaryTypeName","src":"5863:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5862:19:11"},"returnParameters":{"id":2847,"nodeType":"ParameterList","parameters":[],"src":"5909:0:11"},"scope":2989,"src":"5842:176:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2881,"nodeType":"Block","src":"6261:164:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2867,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"6279:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":2870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6305:1:11","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":2869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6297:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":2868,"name":"address","nodeType":"ElementaryTypeName","src":"6297:7:11","typeDescriptions":{}}},"id":2871,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6297:10:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6279:28:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","id":2873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6309:32:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""},"value":"FirewallConsumer: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949","typeString":"literal_string \"FirewallConsumer: zero address\""}],"id":2866,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6271:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2874,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6271:71:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2875,"nodeType":"ExpressionStatement","src":"6271:71:11"},{"expression":{"arguments":[{"id":2877,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"6370:31:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":2878,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2861,"src":"6403:14:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2876,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"6352:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2879,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6352:66:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2880,"nodeType":"ExpressionStatement","src":"6352:66:11"}]},"documentation":{"id":2859,"nodeType":"StructuredDocumentation","src":"6024:155:11","text":" @dev Admin only function, sets new firewall admin. New admin must accept.\n @param _firewallAdmin address of the new firewall admin"},"functionSelector":"734b7198","id":2882,"implemented":true,"kind":"function","modifiers":[{"id":2864,"kind":"modifierInvocation","modifierName":{"id":2863,"name":"onlyFirewallAdmin","nameLocations":["6243:17:11"],"nodeType":"IdentifierPath","referencedDeclaration":2669,"src":"6243:17:11"},"nodeType":"ModifierInvocation","src":"6243:17:11"}],"name":"setFirewallAdmin","nameLocation":"6193:16:11","nodeType":"FunctionDefinition","parameters":{"id":2862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2861,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"6218:14:11","nodeType":"VariableDeclaration","scope":2882,"src":"6210:22:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2860,"name":"address","nodeType":"ElementaryTypeName","src":"6210:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6209:24:11"},"returnParameters":{"id":2865,"nodeType":"ParameterList","parameters":[],"src":"6261:0:11"},"scope":2989,"src":"6184:241:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2907,"nodeType":"Block","src":"6534:240:11","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2887,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6552:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2888,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6556:6:11","memberName":"sender","nodeType":"MemberAccess","src":"6552:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2890,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2546,"src":"6584:31:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2889,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"6566:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6566:50:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6552:64:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","id":2893,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6618:33:11","typeDescriptions":{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""},"value":"FirewallConsumer: not new admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427","typeString":"literal_string \"FirewallConsumer: not new admin\""}],"id":2886,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"6544:7:11","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":2894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6544:108:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2895,"nodeType":"ExpressionStatement","src":"6544:108:11"},{"expression":{"arguments":[{"id":2897,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2533,"src":"6680:27:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":2898,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6709:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6713:6:11","memberName":"sender","nodeType":"MemberAccess","src":"6709:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":2896,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2959,"src":"6662:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":2900,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6662:58:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2901,"nodeType":"ExpressionStatement","src":"6662:58:11"},{"eventCall":{"arguments":[{"expression":{"id":2903,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6756:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6760:6:11","memberName":"sender","nodeType":"MemberAccess","src":"6756:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":2902,"name":"FirewallAdminUpdated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2602,"src":"6735:20:11","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":2905,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6735:32:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":2906,"nodeType":"EmitStatement","src":"6730:37:11"}]},"documentation":{"id":2883,"nodeType":"StructuredDocumentation","src":"6431:58:11","text":" @dev Accept the role as firewall admin."},"functionSelector":"7c65c38b","id":2908,"implemented":true,"kind":"function","modifiers":[],"name":"acceptFirewallAdmin","nameLocation":"6503:19:11","nodeType":"FunctionDefinition","parameters":{"id":2884,"nodeType":"ParameterList","parameters":[],"src":"6522:2:11"},"returnParameters":{"id":2885,"nodeType":"ParameterList","parameters":[],"src":"6534:0:11"},"scope":2989,"src":"6494:280:11","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"body":{"id":2948,"nodeType":"Block","src":"6950:442:11","statements":[{"AST":{"nodeType":"YulBlock","src":"7052:44:11","statements":[{"nodeType":"YulAssignment","src":"7066:20:11","value":{"arguments":[],"functionName":{"name":"callvalue","nodeType":"YulIdentifier","src":"7075:9:11"},"nodeType":"YulFunctionCall","src":"7075:11:11"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"7066:5:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2912,"isOffset":false,"isSlot":false,"src":"7066:5:11","valueSize":1}],"id":2914,"nodeType":"InlineAssembly","src":"7043:53:11"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2922,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":2918,"name":"SAFE_FUNCTION_CALL_FLAG_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2598,"src":"7133:28:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2917,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"7117:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7117:45:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2916,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7109:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2915,"name":"uint256","nodeType":"ElementaryTypeName","src":"7109:7:11","typeDescriptions":{}}},"id":2920,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7109:54:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"32","id":2921,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7167:1:11","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"src":"7109:59:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2947,"nodeType":"IfStatement","src":"7105:281:11","trueBody":{"id":2946,"nodeType":"Block","src":"7170:216:11","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":2928,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":2923,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7188:3:11","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":2924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7192:6:11","memberName":"sender","nodeType":"MemberAccess","src":"7188:10:11","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":2926,"name":"SAFE_FUNCTION_CALLER_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2585,"src":"7220:25:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2925,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2969,"src":"7202:17:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":2927,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7202:44:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"7188:58:11","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":2945,"nodeType":"IfStatement","src":"7184:192:11","trueBody":{"id":2944,"nodeType":"Block","src":"7248:128:11","statements":[{"assignments":[2930],"declarations":[{"constant":false,"id":2930,"mutability":"mutable","name":"fee","nameLocation":"7274:3:11","nodeType":"VariableDeclaration","scope":2944,"src":"7266:11:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2929,"name":"uint256","nodeType":"ElementaryTypeName","src":"7266:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":2937,"initialValue":{"arguments":[{"arguments":[{"id":2934,"name":"USER_PAID_FEE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2572,"src":"7304:18:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2933,"name":"_getValueBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2988,"src":"7288:15:11","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_bytes32_$","typeString":"function (bytes32) view returns (bytes32)"}},"id":2935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7288:35:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":2932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7280:7:11","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":2931,"name":"uint256","nodeType":"ElementaryTypeName","src":"7280:7:11","typeDescriptions":{}}},"id":2936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7280:44:11","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7266:58:11"},{"expression":{"id":2942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":2938,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"7342:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":2941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":2939,"name":"value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2912,"src":"7350:5:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":2940,"name":"fee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":2930,"src":"7358:3:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7350:11:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7342:19:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":2943,"nodeType":"ExpressionStatement","src":"7342:19:11"}]}}]}}]},"documentation":{"id":2909,"nodeType":"StructuredDocumentation","src":"6780:106:11","text":" @dev Internal helper funtion to get the msg.value\n @return value of the msg.value"},"id":2949,"implemented":true,"kind":"function","modifiers":[],"name":"_msgValue","nameLocation":"6900:9:11","nodeType":"FunctionDefinition","parameters":{"id":2910,"nodeType":"ParameterList","parameters":[],"src":"6909:2:11"},"returnParameters":{"id":2913,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2912,"mutability":"mutable","name":"value","nameLocation":"6943:5:11","nodeType":"VariableDeclaration","scope":2949,"src":"6935:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2911,"name":"uint256","nodeType":"ElementaryTypeName","src":"6935:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6934:15:11"},"scope":2989,"src":"6891:501:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2958,"nodeType":"Block","src":"7630:72:11","statements":[{"AST":{"nodeType":"YulBlock","src":"7649:47:11","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"7670:5:11"},{"name":"_address","nodeType":"YulIdentifier","src":"7677:8:11"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"7663:6:11"},"nodeType":"YulFunctionCall","src":"7663:23:11"},"nodeType":"YulExpressionStatement","src":"7663:23:11"}]},"evmVersion":"paris","externalReferences":[{"declaration":2954,"isOffset":false,"isSlot":false,"src":"7677:8:11","valueSize":1},{"declaration":2952,"isOffset":false,"isSlot":false,"src":"7670:5:11","valueSize":1}],"id":2957,"nodeType":"InlineAssembly","src":"7640:56:11"}]},"documentation":{"id":2950,"nodeType":"StructuredDocumentation","src":"7398:158:11","text":" @dev Internal helper function to set an address in a storage slot\n @param _slot storage slot\n @param _address address to be set"},"id":2959,"implemented":true,"kind":"function","modifiers":[],"name":"_setAddressBySlot","nameLocation":"7570:17:11","nodeType":"FunctionDefinition","parameters":{"id":2955,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2952,"mutability":"mutable","name":"_slot","nameLocation":"7596:5:11","nodeType":"VariableDeclaration","scope":2959,"src":"7588:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2951,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7588:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2954,"mutability":"mutable","name":"_address","nameLocation":"7611:8:11","nodeType":"VariableDeclaration","scope":2959,"src":"7603:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2953,"name":"address","nodeType":"ElementaryTypeName","src":"7603:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7587:33:11"},"returnParameters":{"id":2956,"nodeType":"ParameterList","parameters":[],"src":"7630:0:11"},"scope":2989,"src":"7561:141:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2968,"nodeType":"Block","src":"7961:73:11","statements":[{"AST":{"nodeType":"YulBlock","src":"7980:48:11","statements":[{"nodeType":"YulAssignment","src":"7994:24:11","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"8012:5:11"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"8006:5:11"},"nodeType":"YulFunctionCall","src":"8006:12:11"},"variableNames":[{"name":"_address","nodeType":"YulIdentifier","src":"7994:8:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2965,"isOffset":false,"isSlot":false,"src":"7994:8:11","valueSize":1},{"declaration":2962,"isOffset":false,"isSlot":false,"src":"8012:5:11","valueSize":1}],"id":2967,"nodeType":"InlineAssembly","src":"7971:57:11"}]},"documentation":{"id":2960,"nodeType":"StructuredDocumentation","src":"7708:165:11","text":" @dev Internal helper function to get an address from a storage slot\n @param _slot storage slot\n @return _address from the storage slot"},"id":2969,"implemented":true,"kind":"function","modifiers":[],"name":"_getAddressBySlot","nameLocation":"7887:17:11","nodeType":"FunctionDefinition","parameters":{"id":2963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2962,"mutability":"mutable","name":"_slot","nameLocation":"7913:5:11","nodeType":"VariableDeclaration","scope":2969,"src":"7905:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2961,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7905:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"7904:15:11"},"returnParameters":{"id":2966,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2965,"mutability":"mutable","name":"_address","nameLocation":"7951:8:11","nodeType":"VariableDeclaration","scope":2969,"src":"7943:16:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2964,"name":"address","nodeType":"ElementaryTypeName","src":"7943:7:11","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7942:18:11"},"scope":2989,"src":"7878:156:11","stateMutability":"view","virtual":false,"visibility":"internal"},{"body":{"id":2977,"nodeType":"Block","src":"8105:70:11","statements":[{"AST":{"nodeType":"YulBlock","src":"8124:45:11","statements":[{"expression":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"8145:5:11"},{"name":"_value","nodeType":"YulIdentifier","src":"8152:6:11"}],"functionName":{"name":"sstore","nodeType":"YulIdentifier","src":"8138:6:11"},"nodeType":"YulFunctionCall","src":"8138:21:11"},"nodeType":"YulExpressionStatement","src":"8138:21:11"}]},"evmVersion":"paris","externalReferences":[{"declaration":2971,"isOffset":false,"isSlot":false,"src":"8145:5:11","valueSize":1},{"declaration":2973,"isOffset":false,"isSlot":false,"src":"8152:6:11","valueSize":1}],"id":2976,"nodeType":"InlineAssembly","src":"8115:54:11"}]},"id":2978,"implemented":true,"kind":"function","modifiers":[],"name":"_setValueBySlot","nameLocation":"8049:15:11","nodeType":"FunctionDefinition","parameters":{"id":2974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2971,"mutability":"mutable","name":"_slot","nameLocation":"8073:5:11","nodeType":"VariableDeclaration","scope":2978,"src":"8065:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2970,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8065:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":2973,"mutability":"mutable","name":"_value","nameLocation":"8088:6:11","nodeType":"VariableDeclaration","scope":2978,"src":"8080:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2972,"name":"uint256","nodeType":"ElementaryTypeName","src":"8080:7:11","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8064:31:11"},"returnParameters":{"id":2975,"nodeType":"ParameterList","parameters":[],"src":"8105:0:11"},"scope":2989,"src":"8040:135:11","stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"body":{"id":2987,"nodeType":"Block","src":"8425:71:11","statements":[{"AST":{"nodeType":"YulBlock","src":"8444:46:11","statements":[{"nodeType":"YulAssignment","src":"8458:22:11","value":{"arguments":[{"name":"_slot","nodeType":"YulIdentifier","src":"8474:5:11"}],"functionName":{"name":"sload","nodeType":"YulIdentifier","src":"8468:5:11"},"nodeType":"YulFunctionCall","src":"8468:12:11"},"variableNames":[{"name":"_value","nodeType":"YulIdentifier","src":"8458:6:11"}]}]},"evmVersion":"paris","externalReferences":[{"declaration":2981,"isOffset":false,"isSlot":false,"src":"8474:5:11","valueSize":1},{"declaration":2984,"isOffset":false,"isSlot":false,"src":"8458:6:11","valueSize":1}],"id":2986,"nodeType":"InlineAssembly","src":"8435:55:11"}]},"documentation":{"id":2979,"nodeType":"StructuredDocumentation","src":"8181:160:11","text":" @dev Internal helper function to get a value from a storage slot\n @param _slot storage slot\n @return _value from the storage slot"},"id":2988,"implemented":true,"kind":"function","modifiers":[],"name":"_getValueBySlot","nameLocation":"8355:15:11","nodeType":"FunctionDefinition","parameters":{"id":2982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2981,"mutability":"mutable","name":"_slot","nameLocation":"8379:5:11","nodeType":"VariableDeclaration","scope":2988,"src":"8371:13:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2980,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8371:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8370:15:11"},"returnParameters":{"id":2985,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2984,"mutability":"mutable","name":"_value","nameLocation":"8417:6:11","nodeType":"VariableDeclaration","scope":2988,"src":"8409:14:11","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":2983,"name":"bytes32","nodeType":"ElementaryTypeName","src":"8409:7:11","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"8408:16:11"},"scope":2989,"src":"8346:150:11","stateMutability":"view","virtual":false,"visibility":"internal"}],"scope":2990,"src":"894:7604:11","usedErrors":[]}],"src":"115:8384:11"},"id":11},"contracts/interfaces/IFirewall.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewall.sol","exportedSymbols":{"IFirewall":[3037]},"id":3038,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":2991,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:12"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewall","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3037,"linearizedBaseContracts":[3037],"name":"IFirewall","nameLocation":"148:9:12","nodeType":"ContractDefinition","nodes":[{"functionSelector":"6fe1967c","id":3000,"implemented":false,"kind":"function","modifiers":[],"name":"preExecution","nameLocation":"173:12:12","nodeType":"FunctionDefinition","parameters":{"id":2998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":2993,"mutability":"mutable","name":"sender","nameLocation":"194:6:12","nodeType":"VariableDeclaration","scope":3000,"src":"186:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":2992,"name":"address","nodeType":"ElementaryTypeName","src":"186:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":2995,"mutability":"mutable","name":"data","nameLocation":"215:4:12","nodeType":"VariableDeclaration","scope":3000,"src":"202:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":2994,"name":"bytes","nodeType":"ElementaryTypeName","src":"202:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":2997,"mutability":"mutable","name":"value","nameLocation":"229:5:12","nodeType":"VariableDeclaration","scope":3000,"src":"221:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":2996,"name":"uint256","nodeType":"ElementaryTypeName","src":"221:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"185:50:12"},"returnParameters":{"id":2999,"nodeType":"ParameterList","parameters":[],"src":"244:0:12"},"scope":3037,"src":"164:81:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"93163a91","id":3009,"implemented":false,"kind":"function","modifiers":[],"name":"postExecution","nameLocation":"259:13:12","nodeType":"FunctionDefinition","parameters":{"id":3007,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3002,"mutability":"mutable","name":"sender","nameLocation":"281:6:12","nodeType":"VariableDeclaration","scope":3009,"src":"273:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3001,"name":"address","nodeType":"ElementaryTypeName","src":"273:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3004,"mutability":"mutable","name":"data","nameLocation":"302:4:12","nodeType":"VariableDeclaration","scope":3009,"src":"289:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3003,"name":"bytes","nodeType":"ElementaryTypeName","src":"289:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3006,"mutability":"mutable","name":"value","nameLocation":"316:5:12","nodeType":"VariableDeclaration","scope":3009,"src":"308:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3005,"name":"uint256","nodeType":"ElementaryTypeName","src":"308:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"272:50:12"},"returnParameters":{"id":3008,"nodeType":"ParameterList","parameters":[],"src":"331:0:12"},"scope":3037,"src":"250:82:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"33a0c536","id":3021,"implemented":false,"kind":"function","modifiers":[],"name":"preExecutionPrivateInvariants","nameLocation":"346:29:12","nodeType":"FunctionDefinition","parameters":{"id":3016,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3011,"mutability":"mutable","name":"sender","nameLocation":"384:6:12","nodeType":"VariableDeclaration","scope":3021,"src":"376:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3010,"name":"address","nodeType":"ElementaryTypeName","src":"376:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3013,"mutability":"mutable","name":"data","nameLocation":"405:4:12","nodeType":"VariableDeclaration","scope":3021,"src":"392:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3012,"name":"bytes","nodeType":"ElementaryTypeName","src":"392:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3015,"mutability":"mutable","name":"value","nameLocation":"419:5:12","nodeType":"VariableDeclaration","scope":3021,"src":"411:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3014,"name":"uint256","nodeType":"ElementaryTypeName","src":"411:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"375:50:12"},"returnParameters":{"id":3020,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3019,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3021,"src":"444:18:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":3017,"name":"bytes32","nodeType":"ElementaryTypeName","src":"444:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3018,"nodeType":"ArrayTypeName","src":"444:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"443:20:12"},"scope":3037,"src":"337:127:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"functionSelector":"cacb2838","id":3036,"implemented":false,"kind":"function","modifiers":[],"name":"postExecutionPrivateInvariants","nameLocation":"478:30:12","nodeType":"FunctionDefinition","parameters":{"id":3034,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3023,"mutability":"mutable","name":"sender","nameLocation":"526:6:12","nodeType":"VariableDeclaration","scope":3036,"src":"518:14:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3022,"name":"address","nodeType":"ElementaryTypeName","src":"518:7:12","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":3025,"mutability":"mutable","name":"data","nameLocation":"555:4:12","nodeType":"VariableDeclaration","scope":3036,"src":"542:17:12","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":3024,"name":"bytes","nodeType":"ElementaryTypeName","src":"542:5:12","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":3027,"mutability":"mutable","name":"value","nameLocation":"577:5:12","nodeType":"VariableDeclaration","scope":3036,"src":"569:13:12","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3026,"name":"uint256","nodeType":"ElementaryTypeName","src":"569:7:12","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":3030,"mutability":"mutable","name":"preValues","nameLocation":"611:9:12","nodeType":"VariableDeclaration","scope":3036,"src":"592:28:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":3028,"name":"bytes32","nodeType":"ElementaryTypeName","src":"592:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3029,"nodeType":"ArrayTypeName","src":"592:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"},{"constant":false,"id":3033,"mutability":"mutable","name":"postValues","nameLocation":"649:10:12","nodeType":"VariableDeclaration","scope":3036,"src":"630:29:12","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_calldata_ptr","typeString":"bytes32[]"},"typeName":{"baseType":{"id":3031,"name":"bytes32","nodeType":"ElementaryTypeName","src":"630:7:12","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"id":3032,"nodeType":"ArrayTypeName","src":"630:9:12","typeDescriptions":{"typeIdentifier":"t_array$_t_bytes32_$dyn_storage_ptr","typeString":"bytes32[]"}},"visibility":"internal"}],"src":"508:157:12"},"returnParameters":{"id":3035,"nodeType":"ParameterList","parameters":[],"src":"674:0:12"},"scope":3037,"src":"469:206:12","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3038,"src":"138:539:12","usedErrors":[]}],"src":"115:562:12"},"id":12},"contracts/interfaces/IFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumer.sol","exportedSymbols":{"IFirewallConsumer":[3045]},"id":3046,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3039,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:13"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumer","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3045,"linearizedBaseContracts":[3045],"name":"IFirewallConsumer","nameLocation":"148:17:13","nodeType":"ContractDefinition","nodes":[{"functionSelector":"f05c8582","id":3044,"implemented":false,"kind":"function","modifiers":[],"name":"firewallAdmin","nameLocation":"181:13:13","nodeType":"FunctionDefinition","parameters":{"id":3040,"nodeType":"ParameterList","parameters":[],"src":"194:2:13"},"returnParameters":{"id":3043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3044,"src":"220:7:13","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3041,"name":"address","nodeType":"ElementaryTypeName","src":"220:7:13","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"219:9:13"},"scope":3045,"src":"172:57:13","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3046,"src":"138:93:13","usedErrors":[]}],"src":"115:116:13"},"id":13},"contracts/interfaces/IFirewallConsumerStorage.sol":{"ast":{"absolutePath":"contracts/interfaces/IFirewallConsumerStorage.sol","exportedSymbols":{"IFirewallConsumerStorage":[3068]},"id":3069,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3047,"literals":["solidity","^","0.8",".0"],"nodeType":"PragmaDirective","src":"115:23:14"},{"abstract":false,"baseContracts":[],"canonicalName":"IFirewallConsumerStorage","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3068,"linearizedBaseContracts":[3068],"name":"IFirewallConsumerStorage","nameLocation":"150:24:14","nodeType":"ContractDefinition","nodes":[{"functionSelector":"af7f27f4","id":3052,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewallAdmin","nameLocation":"190:16:14","nodeType":"FunctionDefinition","parameters":{"id":3048,"nodeType":"ParameterList","parameters":[],"src":"206:2:14"},"returnParameters":{"id":3051,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3050,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3052,"src":"232:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3049,"name":"address","nodeType":"ElementaryTypeName","src":"232:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"231:9:14"},"scope":3068,"src":"181:60:14","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"51cfdd39","id":3057,"implemented":false,"kind":"function","modifiers":[],"name":"getFirewall","nameLocation":"255:11:14","nodeType":"FunctionDefinition","parameters":{"id":3053,"nodeType":"ParameterList","parameters":[],"src":"266:2:14"},"returnParameters":{"id":3056,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3055,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3057,"src":"292:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3054,"name":"address","nodeType":"ElementaryTypeName","src":"292:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"291:9:14"},"scope":3068,"src":"246:55:14","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"6064a013","id":3062,"implemented":false,"kind":"function","modifiers":[],"name":"getApprovedVennPolicy","nameLocation":"315:21:14","nodeType":"FunctionDefinition","parameters":{"id":3058,"nodeType":"ParameterList","parameters":[],"src":"336:2:14"},"returnParameters":{"id":3061,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3060,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3062,"src":"362:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3059,"name":"address","nodeType":"ElementaryTypeName","src":"362:7:14","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"361:9:14"},"scope":3068,"src":"306:65:14","stateMutability":"view","virtual":false,"visibility":"external"},{"functionSelector":"1498be2f","id":3067,"implemented":false,"kind":"function","modifiers":[],"name":"getUserNativeFee","nameLocation":"385:16:14","nodeType":"FunctionDefinition","parameters":{"id":3063,"nodeType":"ParameterList","parameters":[],"src":"401:2:14"},"returnParameters":{"id":3066,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3065,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3067,"src":"427:7:14","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":3064,"name":"uint256","nodeType":"ElementaryTypeName","src":"427:7:14","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"426:9:14"},"scope":3068,"src":"376:60:14","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3069,"src":"140:298:14","usedErrors":[]}],"src":"115:324:14"},"id":14},"contracts/interfaces/IOwnable.sol":{"ast":{"absolutePath":"contracts/interfaces/IOwnable.sol","exportedSymbols":{"IOwnable":[3076]},"id":3077,"license":"MIT","nodeType":"SourceUnit","nodes":[{"id":3070,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"33:21:15"},{"abstract":false,"baseContracts":[],"canonicalName":"IOwnable","contractDependencies":[],"contractKind":"interface","fullyImplemented":false,"id":3076,"linearizedBaseContracts":[3076],"name":"IOwnable","nameLocation":"66:8:15","nodeType":"ContractDefinition","nodes":[{"functionSelector":"8da5cb5b","id":3075,"implemented":false,"kind":"function","modifiers":[],"name":"owner","nameLocation":"90:5:15","nodeType":"FunctionDefinition","parameters":{"id":3071,"nodeType":"ParameterList","parameters":[],"src":"95:2:15"},"returnParameters":{"id":3074,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3073,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":3075,"src":"121:7:15","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3072,"name":"address","nodeType":"ElementaryTypeName","src":"121:7:15","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"120:9:15"},"scope":3076,"src":"81:49:15","stateMutability":"view","virtual":false,"visibility":"external"}],"scope":3077,"src":"56:76:15","usedErrors":[]}],"src":"33:99:15"},"id":15},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/proxies/BeaconProxyFirewallConsumer.sol","exportedSymbols":{"BeaconProxyFirewallConsumer":[3101],"ProxyFirewallConsumerBase":[3207]},"id":3102,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3078,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:16"},{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","file":"./ProxyFirewallConsumerBase.sol","id":3080,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3102,"sourceUnit":3208,"src":"138:74:16","symbolAliases":[{"foreign":{"id":3079,"name":"ProxyFirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"146:25:16","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3082,"name":"ProxyFirewallConsumerBase","nameLocations":["580:25:16"],"nodeType":"IdentifierPath","referencedDeclaration":3207,"src":"580:25:16"},"id":3083,"nodeType":"InheritanceSpecifier","src":"580:25:16"}],"canonicalName":"BeaconProxyFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":3081,"nodeType":"StructuredDocumentation","src":"214:325:16","text":" @title BeaconProxyFirewallConsumer\n @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":3101,"linearizedBaseContracts":[3101,3207,1840,850,3045],"name":"BeaconProxyFirewallConsumer","nameLocation":"549:27:16","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3086,"mutability":"constant","name":"BEACON_SLOT","nameLocation":"714:11:16","nodeType":"VariableDeclaration","scope":3101,"src":"689:105:16","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3084,"name":"bytes32","nodeType":"ElementaryTypeName","src":"689:7:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307861336630616437346535343233616562666438306433656634333436353738333335613961373261656165653539666636636233353832623335313333643530","id":3085,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"728:66:16","typeDescriptions":{"typeIdentifier":"t_rational_74152234768234802001998023604048924213078445070507226371336425913862612794704_by_1","typeString":"int_const 7415...(69 digits omitted)...4704"},"value":"0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50"},"visibility":"private"},{"body":{"id":3099,"nodeType":"Block","src":"1333:57:16","statements":[{"expression":{"arguments":[{"id":3096,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3089,"src":"1368:14:16","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3095,"name":"_initializeFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"1343:24:16","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3097,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1343:40:16","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3098,"nodeType":"ExpressionStatement","src":"1343:40:16"}]},"documentation":{"id":3087,"nodeType":"StructuredDocumentation","src":"801:427:16","text":" @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"functionSelector":"7eba9471","id":3100,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3092,"name":"BEACON_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3086,"src":"1311:11:16","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3093,"kind":"modifierInvocation","modifierName":{"id":3091,"name":"isAllowedInitializer","nameLocations":["1290:20:16"],"nodeType":"IdentifierPath","referencedDeclaration":3172,"src":"1290:20:16"},"nodeType":"ModifierInvocation","src":"1290:33:16"}],"name":"initializeFirewallAdmin","nameLocation":"1242:23:16","nodeType":"FunctionDefinition","parameters":{"id":3090,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3089,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1274:14:16","nodeType":"VariableDeclaration","scope":3100,"src":"1266:22:16","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3088,"name":"address","nodeType":"ElementaryTypeName","src":"1266:7:16","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1265:24:16"},"returnParameters":{"id":3094,"nodeType":"ParameterList","parameters":[],"src":"1333:0:16"},"scope":3101,"src":"1233:157:16","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3102,"src":"540:852:16","usedErrors":[]}],"src":"115:1277:16"},"id":16},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"ast":{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","exportedSymbols":{"FirewallConsumerBase":[1840],"IOwnable":[3076],"ProxyFirewallConsumerBase":[3207]},"id":3208,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3103,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:17"},{"absolutePath":"contracts/FirewallConsumerBase.sol","file":"../FirewallConsumerBase.sol","id":3105,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3208,"sourceUnit":1841,"src":"138:65:17","symbolAliases":[{"foreign":{"id":3104,"name":"FirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1840,"src":"146:20:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"absolutePath":"contracts/interfaces/IOwnable.sol","file":"../interfaces/IOwnable.sol","id":3107,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3208,"sourceUnit":3077,"src":"204:52:17","symbolAliases":[{"foreign":{"id":3106,"name":"IOwnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"212:8:17","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"arguments":[{"arguments":[{"hexValue":"30","id":3112,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"651:1:17","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":3111,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"643:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3110,"name":"address","nodeType":"ElementaryTypeName","src":"643:7:17","typeDescriptions":{}}},"id":3113,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"643:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"hexValue":"30","id":3116,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"663:1:17","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":3115,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"655:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3114,"name":"address","nodeType":"ElementaryTypeName","src":"655:7:17","typeDescriptions":{}}},"id":3117,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"655:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"baseName":{"id":3109,"name":"FirewallConsumerBase","nameLocations":["622:20:17"],"nodeType":"IdentifierPath","referencedDeclaration":1840,"src":"622:20:17"},"id":3118,"nodeType":"InheritanceSpecifier","src":"622:44:17"}],"canonicalName":"ProxyFirewallConsumerBase","contractDependencies":[],"contractKind":"contract","documentation":{"id":3108,"nodeType":"StructuredDocumentation","src":"258:325:17","text":" @title BeaconProxyFirewallConsumer\n @notice this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed\n with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":3207,"linearizedBaseContracts":[3207,1840,850,3045],"name":"ProxyFirewallConsumerBase","nameLocation":"593:25:17","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3131,"mutability":"constant","name":"FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"698:27:17","nodeType":"VariableDeclaration","scope":3207,"src":"673:112:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3119,"name":"bytes32","nodeType":"ElementaryTypeName","src":"673:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3129,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6669726577616c6c2e61646d696e","id":3125,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"754:24:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""},"value":"eip1967.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136","typeString":"literal_string \"eip1967.firewall.admin\""}],"id":3124,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"744:9:17","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3126,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"744:35:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3123,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"736:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3122,"name":"uint256","nodeType":"ElementaryTypeName","src":"736:7:17","typeDescriptions":{}}},"id":3127,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"736:44:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3128,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"783:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"736:48:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3121,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"728:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3120,"name":"bytes32","nodeType":"ElementaryTypeName","src":"728:7:17","typeDescriptions":{}}},"id":3130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"728:57:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"constant":true,"id":3144,"mutability":"constant","name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nameLocation":"904:31:17","nodeType":"VariableDeclaration","scope":3207,"src":"879:120:17","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3132,"name":"bytes32","nodeType":"ElementaryTypeName","src":"879:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":3142,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"hexValue":"656970313936372e6e65772e6669726577616c6c2e61646d696e","id":3138,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"964:28:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""},"value":"eip1967.new.firewall.admin"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3","typeString":"literal_string \"eip1967.new.firewall.admin\""}],"id":3137,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"954:9:17","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":3139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"954:39:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3136,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"946:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":3135,"name":"uint256","nodeType":"ElementaryTypeName","src":"946:7:17","typeDescriptions":{}}},"id":3140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"946:48:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":3141,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"997:1:17","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"946:52:17","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":3134,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"938:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes32_$","typeString":"type(bytes32)"},"typeName":{"id":3133,"name":"bytes32","nodeType":"ElementaryTypeName","src":"938:7:17","typeDescriptions":{}}},"id":3143,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"938:61:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"private"},{"body":{"id":3171,"nodeType":"Block","src":"1064:268:17","statements":[{"assignments":[3149],"declarations":[{"constant":false,"id":3149,"mutability":"mutable","name":"initializerAddress","nameLocation":"1082:18:17","nodeType":"VariableDeclaration","scope":3171,"src":"1074:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3148,"name":"address","nodeType":"ElementaryTypeName","src":"1074:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3153,"initialValue":{"arguments":[{"id":3151,"name":"_admin_memory_slot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3146,"src":"1121:18:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3150,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"1103:17:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":3152,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1103:37:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1074:66:17"},{"assignments":[3155],"declarations":[{"constant":false,"id":3155,"mutability":"mutable","name":"initializerOwner","nameLocation":"1158:16:17","nodeType":"VariableDeclaration","scope":3171,"src":"1150:24:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3154,"name":"address","nodeType":"ElementaryTypeName","src":"1150:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":3161,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":3157,"name":"initializerAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3149,"src":"1186:18:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3156,"name":"IOwnable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3076,"src":"1177:8:17","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOwnable_$3076_$","typeString":"type(contract IOwnable)"}},"id":3158,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:28:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOwnable_$3076","typeString":"contract IOwnable"}},"id":3159,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1206:5:17","memberName":"owner","nodeType":"MemberAccess","referencedDeclaration":3075,"src":"1177:34:17","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":3160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1177:36:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1150:63:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":3163,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1231:3:17","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":3164,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1235:6:17","memberName":"sender","nodeType":"MemberAccess","src":"1231:10:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":3165,"name":"initializerOwner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3155,"src":"1245:16:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1231:30:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646572206973206e6f7420616c6c6f776564","id":3167,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1263:50:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8","typeString":"literal_string \"ProxyFirewallConsumerBase: sender is not allowed\""},"value":"ProxyFirewallConsumerBase: sender is not allowed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8","typeString":"literal_string \"ProxyFirewallConsumerBase: sender is not allowed\""}],"id":3162,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1223:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3168,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1223:91:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3169,"nodeType":"ExpressionStatement","src":"1223:91:17"},{"id":3170,"nodeType":"PlaceholderStatement","src":"1324:1:17"}]},"id":3172,"name":"isAllowedInitializer","nameLocation":"1015:20:17","nodeType":"ModifierDefinition","parameters":{"id":3147,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3146,"mutability":"mutable","name":"_admin_memory_slot","nameLocation":"1044:18:17","nodeType":"VariableDeclaration","scope":3172,"src":"1036:26:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3145,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1036:7:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1035:28:17"},"src":"1006:326:17","virtual":false,"visibility":"internal"},{"body":{"id":3205,"nodeType":"Block","src":"1837:301:17","statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3184,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":3179,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"1855:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":3182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1881:1:17","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":3181,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1873:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3180,"name":"address","nodeType":"ElementaryTypeName","src":"1873:7:17","typeDescriptions":{}}},"id":3183,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1873:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1855:28:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2061646472657373","id":3185,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1885:41:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa","typeString":"literal_string \"ProxyFirewallConsumerBase: zero address\""},"value":"ProxyFirewallConsumerBase: zero address"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa","typeString":"literal_string \"ProxyFirewallConsumerBase: zero address\""}],"id":3178,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1847:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3186,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1847:80:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3187,"nodeType":"ExpressionStatement","src":"1847:80:17"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":3196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":3190,"name":"FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3131,"src":"1963:27:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":3189,"name":"_getAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1820,"src":"1945:17:17","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$returns$_t_address_$","typeString":"function (bytes32) view returns (address)"}},"id":3191,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1945:46:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":3194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2003:1:17","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":3193,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1995:7:17","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":3192,"name":"address","nodeType":"ElementaryTypeName","src":"1995:7:17","typeDescriptions":{}}},"id":3195,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1995:10:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1945:60:17","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e20616c726561647920736574","id":3197,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2007:46:17","typeDescriptions":{"typeIdentifier":"t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47","typeString":"literal_string \"ProxyFirewallConsumerBase: admin already set\""},"value":"ProxyFirewallConsumerBase: admin already set"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47","typeString":"literal_string \"ProxyFirewallConsumerBase: admin already set\""}],"id":3188,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"1937:7:17","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":3198,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1937:117:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3199,"nodeType":"ExpressionStatement","src":"1937:117:17"},{"expression":{"arguments":[{"id":3201,"name":"NEW_FIREWALL_ADMIN_STORAGE_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3144,"src":"2083:31:17","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":3202,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3175,"src":"2116:14:17","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":3200,"name":"_setAddressBySlot","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":1810,"src":"2065:17:17","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":3203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2065:66:17","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3204,"nodeType":"ExpressionStatement","src":"2065:66:17"}]},"documentation":{"id":3173,"nodeType":"StructuredDocumentation","src":"1338:427:17","text":" @dev Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"id":3206,"implemented":true,"kind":"function","modifiers":[],"name":"_initializeFirewallAdmin","nameLocation":"1779:24:17","nodeType":"FunctionDefinition","parameters":{"id":3176,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3175,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1812:14:17","nodeType":"VariableDeclaration","scope":3206,"src":"1804:22:17","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3174,"name":"address","nodeType":"ElementaryTypeName","src":"1804:7:17","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1803:24:17"},"returnParameters":{"id":3177,"nodeType":"ParameterList","parameters":[],"src":"1837:0:17"},"scope":3207,"src":"1770:368:17","stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"scope":3208,"src":"584:1556:17","usedErrors":[]}],"src":"115:2025:17"},"id":17},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"ast":{"absolutePath":"contracts/proxies/TransparentProxyFirewallConsumer.sol","exportedSymbols":{"ProxyFirewallConsumerBase":[3207],"TransparentProxyFirewallConsumer":[3232]},"id":3233,"license":"UNLICENSED","nodeType":"SourceUnit","nodes":[{"id":3209,"literals":["solidity","^","0.8"],"nodeType":"PragmaDirective","src":"115:21:18"},{"absolutePath":"contracts/proxies/ProxyFirewallConsumerBase.sol","file":"./ProxyFirewallConsumerBase.sol","id":3211,"nameLocation":"-1:-1:-1","nodeType":"ImportDirective","scope":3233,"sourceUnit":3208,"src":"138:74:18","symbolAliases":[{"foreign":{"id":3210,"name":"ProxyFirewallConsumerBase","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3207,"src":"146:25:18","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"abstract":false,"baseContracts":[{"baseName":{"id":3213,"name":"ProxyFirewallConsumerBase","nameLocations":["640:25:18"],"nodeType":"IdentifierPath","referencedDeclaration":3207,"src":"640:25:18"},"id":3214,"nodeType":"InheritanceSpecifier","src":"640:25:18"}],"canonicalName":"TransparentProxyFirewallConsumer","contractDependencies":[],"contractKind":"contract","documentation":{"id":3212,"nodeType":"StructuredDocumentation","src":"214:380:18","text":" @title TransparentProxyFirewallConsumer\n @notice For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin\n even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed"},"fullyImplemented":true,"id":3232,"linearizedBaseContracts":[3232,3207,1840,850,3045],"name":"TransparentProxyFirewallConsumer","nameLocation":"604:32:18","nodeType":"ContractDefinition","nodes":[{"constant":true,"id":3217,"mutability":"constant","name":"PROXY_ADMIN_SLOT","nameLocation":"773:16:18","nodeType":"VariableDeclaration","scope":3232,"src":"748:110:18","stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":3215,"name":"bytes32","nodeType":"ElementaryTypeName","src":"748:7:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"hexValue":"307862353331323736383461353638623331373361653133623966386136303136653234336536336236653865653131373864366137313738353062356436313033","id":3216,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"792:66:18","typeDescriptions":{"typeIdentifier":"t_rational_81955473079516046949633743016697847541294818689821282749996681496272635257091_by_1","typeString":"int_const 8195...(69 digits omitted)...7091"},"value":"0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103"},"visibility":"private"},{"body":{"id":3230,"nodeType":"Block","src":"1388:57:18","statements":[{"expression":{"arguments":[{"id":3227,"name":"_firewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3220,"src":"1423:14:18","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":3226,"name":"_initializeFirewallAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3206,"src":"1398:24:18","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":3228,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1398:40:18","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":3229,"nodeType":"ExpressionStatement","src":"1398:40:18"}]},"documentation":{"id":3218,"nodeType":"StructuredDocumentation","src":"865:413:18","text":" @dev Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases:\n - If the contract was originally deployed with a zero-address in the constructor (for various reasons)\n - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\n @param _firewallAdmin address of the firewall admin"},"functionSelector":"7eba9471","id":3231,"implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":3223,"name":"PROXY_ADMIN_SLOT","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":3217,"src":"1361:16:18","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":3224,"kind":"modifierInvocation","modifierName":{"id":3222,"name":"isAllowedInitializer","nameLocations":["1340:20:18"],"nodeType":"IdentifierPath","referencedDeclaration":3172,"src":"1340:20:18"},"nodeType":"ModifierInvocation","src":"1340:38:18"}],"name":"initializeFirewallAdmin","nameLocation":"1292:23:18","nodeType":"FunctionDefinition","parameters":{"id":3221,"nodeType":"ParameterList","parameters":[{"constant":false,"id":3220,"mutability":"mutable","name":"_firewallAdmin","nameLocation":"1324:14:18","nodeType":"VariableDeclaration","scope":3231,"src":"1316:22:18","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":3219,"name":"address","nodeType":"ElementaryTypeName","src":"1316:7:18","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1315:24:18"},"returnParameters":{"id":3225,"nodeType":"ParameterList","parameters":[],"src":"1388:0:18"},"scope":3232,"src":"1283:162:18","stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"scope":3233,"src":"595:852:18","usedErrors":[]}],"src":"115:1332:18"},"id":18}},"contracts":{"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol":{"Initializable":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"}],\"devdoc\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor constructor() {     _disableInitializers(); } ``` ====\",\"details\":\"This is a base contract to aid in writing upgradeable contracts, or any kind of contract that will be deployed behind a proxy. Since proxied contracts do not make use of a constructor, it's common to move constructor logic to an external initializer function, usually called `initialize`. It then becomes necessary to protect this initializer function so it can only be called once. The {initializer} modifier provided by this contract will have this effect. The initialization functions use a version number. Once a version number is used, it is consumed and cannot be reused. This mechanism prevents re-execution of each \\\"step\\\" but allows the creation of new initialization steps in case an upgrade adds a module that needs to be initialized. For example: [.hljs-theme-light.nopadding] ```solidity contract MyToken is ERC20Upgradeable {     function initialize() initializer public {         __ERC20_init(\\\"MyToken\\\", \\\"MTK\\\");     } } contract MyTokenV2 is MyToken, ERC20PermitUpgradeable {     function initializeV2() reinitializer(2) public {         __ERC20Permit_init(\\\"MyToken\\\");     } } ``` TIP: To avoid leaving the proxy in an uninitialized state, the initializer function should be called as early as possible by providing the encoded function call as the `_data` argument to {ERC1967Proxy-constructor}. CAUTION: When used with inheritance, manual care must be taken to not invoke a parent initializer twice, or to ensure that all initializers are idempotent. This is not verified automatically as constructors are by Solidity. [CAUTION] ==== Avoid leaving a contract uninitialized. An uninitialized contract can be taken over by an attacker. This applies to both a proxy and its implementation contract, which may impact the proxy. To prevent the implementation contract from being used, you should invoke the {_disableInitializers} function in the constructor to automatically lock it when it is deployed: [.hljs-theme-light.nopadding] ```\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{},\"stateVariables\":{\"_initialized\":{\"custom:oz-retyped-from\":\"bool\",\"details\":\"Indicates that the contract has been initialized.\"},\"_initializing\":{\"details\":\"Indicates that the contract is in the process of being initialized.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":\"Initializable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":6,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":9,"contract":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:Initializable","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol":{"AddressUpgradeable":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e380f9e83f55e00224733f46e5f767be278461009deb4ad86598053bf5f845d664736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 DUP1 0xF9 0xE8 EXTCODEHASH SSTORE 0xE0 MUL 0x24 PUSH20 0x3F46E5F767BE278461009DEB4AD86598053BF5F8 GASLIMIT 0xD6 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:9180:1:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9180:1;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e380f9e83f55e00224733f46e5f767be278461009deb4ad86598053bf5f845d664736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE3 DUP1 0xF9 0xE8 EXTCODEHASH SSTORE 0xE0 MUL 0x24 PUSH20 0x3F46E5F767BE278461009DEB4AD86598053BF5F8 GASLIMIT 0xD6 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"194:9180:1:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":\"AddressUpgradeable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/Address.sol":{"Address":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220365300b846e9cd226fb9ff580218ca34d5e88d7a7bbc8199c8e16b16722b9a7a64736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE MSTORE8 STOP 0xB8 CHAINID 0xE9 0xCD 0x22 PUSH16 0xB9FF580218CA34D5E88D7A7BBC8199C8 0xE1 PUSH12 0x16722B9A7A64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:9169:2:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;194:9169:2;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220365300b846e9cd226fb9ff580218ca34d5e88d7a7bbc8199c8e16b16722b9a7a64736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 CALLDATASIZE MSTORE8 STOP 0xB8 CHAINID 0xE9 0xCD 0x22 PUSH16 0xB9FF580218CA34D5E88D7A7BBC8199C8 0xE1 PUSH12 0x16722B9A7A64736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"194:9169:2:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Collection of functions related to the address type\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Address.sol\":\"Address\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@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.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Provides information about the current execution context, including the sender of the transaction and its data. While these are generally available via msg.sender and msg.data, they should not be accessed in such a direct manner, since when dealing with meta-transactions the account sending and paying for execution may not be the actual sender (as far as an application is concerned). This contract is only required for intermediate, library-like contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/Context.sol\":\"Context\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol":{"ERC165Checker":{"abi":[],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d3ea421a167260c5d5bec7031c76d2d82878fcfd878e3482cbb1af75e0903d64736f6c63430008130033","opcodes":"PUSH1 0x56 PUSH1 0x37 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x2A JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x0 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 0xD3 0xEA TIMESTAMP BYTE AND PUSH19 0x60C5D5BEC7031C76D2D82878FCFD878E3482CB 0xB1 0xAF PUSH22 0xE0903D64736F6C634300081300330000000000000000 ","sourceMap":"449:4621:4:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;449:4621:4;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122049d3ea421a167260c5d5bec7031c76d2d82878fcfd878e3482cbb1af75e0903d64736f6c63430008130033","opcodes":"PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x49 0xD3 0xEA TIMESTAMP BYTE AND PUSH19 0x60C5D5BEC7031C76D2D82878FCFD878E3482CB 0xB1 0xAF PUSH22 0xE0903D64736F6C634300081300330000000000000000 ","sourceMap":"449:4621:4:-:0;;;;;;;;"},"methodIdentifiers":{}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"details\":\"Library used to query support of an interface declared via {IERC165}. Note that these functions return the actual result of the query: they do not `revert` if an interface is not supported. It is up to the caller to decide what to do in these cases.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":\"ERC165Checker\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"@openzeppelin/contracts/utils/introspection/IERC165.sol":{"IERC165":{"abi":[{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"supportsInterface(bytes4)":"01ffc9a7"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC165 standard, as defined in the https://eips.ethereum.org/EIPS/eip-165[EIP]. Implementers can declare support of contract interfaces, which can then be queried by others ({ERC165Checker}). For an implementation, see {ERC165}.\",\"kind\":\"dev\",\"methods\":{\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":\"IERC165\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/FirewallConsumer.sol":{"FirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setApprovedVennPolicyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1503":{"entryPoint":null,"id":1503,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":241,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:19","statements":[{"nodeType":"YulAssignment","src":"73:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:19"},"nodeType":"YulFunctionCall","src":"81:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:19"}]},{"body":{"nodeType":"YulBlock","src":"122:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:19"},"nodeType":"YulFunctionCall","src":"136:31:19"},"nodeType":"YulExpressionStatement","src":"136:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:19"},"nodeType":"YulFunctionCall","src":"180:15:19"},"nodeType":"YulExpressionStatement","src":"180:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:19"},"nodeType":"YulFunctionCall","src":"208:15:19"},"nodeType":"YulExpressionStatement","src":"208:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:19"},"nodeType":"YulFunctionCall","src":"102:11:19"},"nodeType":"YulIf","src":"99:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:19","type":""}],"src":"14:225:19"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506000336200004b6200004660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662620000f1565b839055565b620000816200007c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136620000f1565b829055565b620000b8620000b260017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3620000f1565b60019055565b620000e9620000b260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040620000f1565b505062000119565b818103818111156200011357634e487b7160e01b600052601160045260246000fd5b92915050565b6110cb80620001296000396000f3fe6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202ee378f50f6fbc08f89cf42125739113a2e16af8402a043fe9978538cdb67dd964736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 CALLER PUSH3 0x4B PUSH3 0x46 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0xF1 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x81 PUSH3 0x7C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0xF1 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xB8 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0xF1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xE9 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0xF1 JUMP JUMPDEST POP POP PUSH3 0x119 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x113 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10CB DUP1 PUSH3 0x129 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212202EE378 CREATE2 0xF PUSH16 0xBC08F89CF42125739113A2E16AF8402A DIV EXTCODEHASH 0xE9 SWAP8 DUP6 CODESIZE 0xCD 0xB6 PUSH30 0xD964736F6C63430008130033000000000000000000000000000000000000 ","sourceMap":"503:77:6:-:0;;;;;;;;;;;;-1:-1:-1;561:1:6;565:10;8608:51:7;1071:42;1112:1;1079:29;1071:42;:::i;:::-;8649:9;13673:23;;13571:141;8608:51;8669:62;1245:48;1292:1;1253:35;1245:48;:::i;:::-;8716:14;13673:23;;13571:141;8669:62;8741:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;8794:1;13673:23;;13571:141;8741:56;8807:48;2086:57;2142:1;2094:44;2086:57;:::i;8807:48::-;8521:341;;503:77:6;;14:225:19;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;503:77:6;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1820":{"entryPoint":null,"id":1820,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1839":{"entryPoint":null,"id":1839,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":3564,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1704":{"entryPoint":1684,"id":1704,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1636":{"entryPoint":2957,"id":1636,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":3219,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3263,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1590":{"entryPoint":349,"id":1590,"parameterSlots":5,"returnSlots":0},"@setApprovedVennPolicyFee_1625":{"entryPoint":2330,"id":1625,"parameterSlots":1,"returnSlots":0},"@setApprovedVennPolicy_1612":{"entryPoint":2607,"id":1612,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1678":{"entryPoint":1274,"id":1678,"parameterSlots":1,"returnSlots":0},"@setFirewall_1654":{"entryPoint":1977,"id":1654,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":3010,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3396,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":3632,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3673,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3875,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3927,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3746,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":3902,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4045,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3987,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4061,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7153:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:19","statements":[{"nodeType":"YulAssignment","src":"73:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:19"},"nodeType":"YulFunctionCall","src":"82:20:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:19"}]},{"body":{"nodeType":"YulBlock","src":"188:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:19"},"nodeType":"YulFunctionCall","src":"190:12:19"},"nodeType":"YulExpressionStatement","src":"190:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:19"},"nodeType":"YulFunctionCall","src":"131:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:19"},"nodeType":"YulFunctionCall","src":"121:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:19"},"nodeType":"YulFunctionCall","src":"114:73:19"},"nodeType":"YulIf","src":"111:93:19"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:19","type":""}],"src":"14:196:19"},{"body":{"nodeType":"YulBlock","src":"287:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:19"},"nodeType":"YulFunctionCall","src":"338:12:19"},"nodeType":"YulExpressionStatement","src":"338:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:19"},"nodeType":"YulFunctionCall","src":"300:35:19"},"nodeType":"YulIf","src":"297:55:19"},{"nodeType":"YulAssignment","src":"361:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:19"},"nodeType":"YulFunctionCall","src":"371:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:19"}]},{"body":{"nodeType":"YulBlock","src":"434:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:19"},"nodeType":"YulFunctionCall","src":"436:12:19"},"nodeType":"YulExpressionStatement","src":"436:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:19"},"nodeType":"YulFunctionCall","src":"403:30:19"},"nodeType":"YulIf","src":"400:50:19"},{"nodeType":"YulAssignment","src":"459:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:19"},"nodeType":"YulFunctionCall","src":"471:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:19"}]},{"body":{"nodeType":"YulBlock","src":"540:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:19"},"nodeType":"YulFunctionCall","src":"542:12:19"},"nodeType":"YulExpressionStatement","src":"542:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:19"},"nodeType":"YulFunctionCall","src":"507:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:19"},"nodeType":"YulFunctionCall","src":"503:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:19"},"nodeType":"YulFunctionCall","src":"500:39:19"},"nodeType":"YulIf","src":"497:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:19","type":""}],"src":"215:347:19"},{"body":{"nodeType":"YulBlock","src":"709:649:19","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:19"},"nodeType":"YulFunctionCall","src":"757:12:19"},"nodeType":"YulExpressionStatement","src":"757:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:19"},"nodeType":"YulFunctionCall","src":"726:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:19"},"nodeType":"YulFunctionCall","src":"722:32:19"},"nodeType":"YulIf","src":"719:52:19"},{"nodeType":"YulAssignment","src":"780:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:19"},"nodeType":"YulFunctionCall","src":"790:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:19"},"nodeType":"YulFunctionCall","src":"855:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:19"},"nodeType":"YulFunctionCall","src":"842:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:19"},"nodeType":"YulFunctionCall","src":"940:12:19"},"nodeType":"YulExpressionStatement","src":"940:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:19"},"nodeType":"YulFunctionCall","src":"923:14:19"},"nodeType":"YulIf","src":"920:34:19"},{"nodeType":"YulVariableDeclaration","src":"963:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:19"},"nodeType":"YulFunctionCall","src":"1015:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:19"},"nodeType":"YulFunctionCall","src":"989:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:19"}]},{"nodeType":"YulAssignment","src":"1083:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:19"},"nodeType":"YulFunctionCall","src":"1139:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:19"},"nodeType":"YulFunctionCall","src":"1126:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:19"},"nodeType":"YulFunctionCall","src":"1189:12:19"},"nodeType":"YulExpressionStatement","src":"1189:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:19"},"nodeType":"YulFunctionCall","src":"1170:16:19"},"nodeType":"YulIf","src":"1167:36:19"},{"nodeType":"YulVariableDeclaration","src":"1212:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:19"},"nodeType":"YulFunctionCall","src":"1264:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:19"},"nodeType":"YulFunctionCall","src":"1238:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:19"}]},{"nodeType":"YulAssignment","src":"1334:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:19","type":""}],"src":"567:791:19"},{"body":{"nodeType":"YulBlock","src":"1433:116:19","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:19"},"nodeType":"YulFunctionCall","src":"1481:12:19"},"nodeType":"YulExpressionStatement","src":"1481:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:19"},"nodeType":"YulFunctionCall","src":"1450:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:19"},"nodeType":"YulFunctionCall","src":"1446:32:19"},"nodeType":"YulIf","src":"1443:52:19"},{"nodeType":"YulAssignment","src":"1504:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:19"},"nodeType":"YulFunctionCall","src":"1514:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:19","type":""}],"src":"1363:186:19"},{"body":{"nodeType":"YulBlock","src":"1624:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"1670:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1679:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1682:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1672:6:19"},"nodeType":"YulFunctionCall","src":"1672:12:19"},"nodeType":"YulExpressionStatement","src":"1672:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1645:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1654:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1641:3:19"},"nodeType":"YulFunctionCall","src":"1641:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1666:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1637:3:19"},"nodeType":"YulFunctionCall","src":"1637:32:19"},"nodeType":"YulIf","src":"1634:52:19"},{"nodeType":"YulAssignment","src":"1695:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1705:12:19"},"nodeType":"YulFunctionCall","src":"1705:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1695:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1590:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1601:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1613:6:19","type":""}],"src":"1554:180:19"},{"body":{"nodeType":"YulBlock","src":"1823:263:19","statements":[{"body":{"nodeType":"YulBlock","src":"1869:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1881:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1871:6:19"},"nodeType":"YulFunctionCall","src":"1871:12:19"},"nodeType":"YulExpressionStatement","src":"1871:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1844:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1840:3:19"},"nodeType":"YulFunctionCall","src":"1840:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1865:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1836:3:19"},"nodeType":"YulFunctionCall","src":"1836:32:19"},"nodeType":"YulIf","src":"1833:52:19"},{"nodeType":"YulAssignment","src":"1894:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1904:18:19"},"nodeType":"YulFunctionCall","src":"1904:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1894:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1942:45:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1972:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1968:3:19"},"nodeType":"YulFunctionCall","src":"1968:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1955:12:19"},"nodeType":"YulFunctionCall","src":"1955:32:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1946:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2040:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2042:6:19"},"nodeType":"YulFunctionCall","src":"2042:12:19"},"nodeType":"YulExpressionStatement","src":"2042:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2009:5:19"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2030:5:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2023:6:19"},"nodeType":"YulFunctionCall","src":"2023:13:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2016:6:19"},"nodeType":"YulFunctionCall","src":"2016:21:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2006:2:19"},"nodeType":"YulFunctionCall","src":"2006:32:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1999:6:19"},"nodeType":"YulFunctionCall","src":"1999:40:19"},"nodeType":"YulIf","src":"1996:60:19"},{"nodeType":"YulAssignment","src":"2065:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"2075:5:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2065:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1781:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1792:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1804:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1812:6:19","type":""}],"src":"1739:347:19"},{"body":{"nodeType":"YulBlock","src":"2192:125:19","statements":[{"nodeType":"YulAssignment","src":"2202:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:19"},"nodeType":"YulFunctionCall","src":"2210:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2267:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:19"},"nodeType":"YulFunctionCall","src":"2255:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:19"},"nodeType":"YulFunctionCall","src":"2237:74:19"},"nodeType":"YulExpressionStatement","src":"2237:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:19","type":""}],"src":"2091:226:19"},{"body":{"nodeType":"YulBlock","src":"2371:233:19","statements":[{"nodeType":"YulAssignment","src":"2381:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2393:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2396:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2389:3:19"},"nodeType":"YulFunctionCall","src":"2389:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2381:4:19"}]},{"body":{"nodeType":"YulBlock","src":"2430:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2451:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2454:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2444:6:19"},"nodeType":"YulFunctionCall","src":"2444:88:19"},"nodeType":"YulExpressionStatement","src":"2444:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2552:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2555:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2545:6:19"},"nodeType":"YulFunctionCall","src":"2545:15:19"},"nodeType":"YulExpressionStatement","src":"2545:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:19"},"nodeType":"YulFunctionCall","src":"2573:15:19"},"nodeType":"YulExpressionStatement","src":"2573:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2413:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"2419:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2410:2:19"},"nodeType":"YulFunctionCall","src":"2410:11:19"},"nodeType":"YulIf","src":"2407:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2353:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"2356:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2362:4:19","type":""}],"src":"2322:282:19"},{"body":{"nodeType":"YulBlock","src":"2738:168:19","statements":[{"nodeType":"YulAssignment","src":"2748:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2760:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2771:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2756:3:19"},"nodeType":"YulFunctionCall","src":"2756:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2748:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2801:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:19"},"nodeType":"YulFunctionCall","src":"2783:25:19"},"nodeType":"YulExpressionStatement","src":"2783:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2839:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:19"},"nodeType":"YulFunctionCall","src":"2824:18:19"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2848:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2856:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2844:3:19"},"nodeType":"YulFunctionCall","src":"2844:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2817:6:19"},"nodeType":"YulFunctionCall","src":"2817:83:19"},"nodeType":"YulExpressionStatement","src":"2817:83:19"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2699:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2710:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2718:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2729:4:19","type":""}],"src":"2609:297:19"},{"body":{"nodeType":"YulBlock","src":"3085:232:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3102:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3095:6:19"},"nodeType":"YulFunctionCall","src":"3095:21:19"},"nodeType":"YulExpressionStatement","src":"3095:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3136:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3147:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3132:3:19"},"nodeType":"YulFunctionCall","src":"3132:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3152:2:19","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3125:6:19"},"nodeType":"YulFunctionCall","src":"3125:30:19"},"nodeType":"YulExpressionStatement","src":"3125:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3175:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3186:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3171:3:19"},"nodeType":"YulFunctionCall","src":"3171:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056","kind":"string","nodeType":"YulLiteral","src":"3191:34:19","type":"","value":"FirewallConsumer: Not approved V"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3164:6:19"},"nodeType":"YulFunctionCall","src":"3164:62:19"},"nodeType":"YulExpressionStatement","src":"3164:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3246:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3257:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3242:3:19"},"nodeType":"YulFunctionCall","src":"3242:18:19"},{"hexValue":"656e6e20706f6c696379","kind":"string","nodeType":"YulLiteral","src":"3262:12:19","type":"","value":"enn policy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3235:6:19"},"nodeType":"YulFunctionCall","src":"3235:40:19"},"nodeType":"YulExpressionStatement","src":"3235:40:19"},{"nodeType":"YulAssignment","src":"3284:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3307:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3292:3:19"},"nodeType":"YulFunctionCall","src":"3292:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3284:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3062:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3076:4:19","type":""}],"src":"2911:406:19"},{"body":{"nodeType":"YulBlock","src":"3496:230:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3524:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3506:6:19"},"nodeType":"YulFunctionCall","src":"3506:21:19"},"nodeType":"YulExpressionStatement","src":"3506:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3547:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3558:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3543:3:19"},"nodeType":"YulFunctionCall","src":"3543:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3563:2:19","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3536:6:19"},"nodeType":"YulFunctionCall","src":"3536:30:19"},"nodeType":"YulExpressionStatement","src":"3536:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3586:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3597:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3582:3:19"},"nodeType":"YulFunctionCall","src":"3582:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676820455448","kind":"string","nodeType":"YulLiteral","src":"3602:34:19","type":"","value":"FirewallConsumer: Not enough ETH"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3575:6:19"},"nodeType":"YulFunctionCall","src":"3575:62:19"},"nodeType":"YulExpressionStatement","src":"3575:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3657:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3668:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3653:3:19"},"nodeType":"YulFunctionCall","src":"3653:18:19"},{"hexValue":"20666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3673:10:19","type":"","value":" for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3646:6:19"},"nodeType":"YulFunctionCall","src":"3646:38:19"},"nodeType":"YulExpressionStatement","src":"3646:38:19"},{"nodeType":"YulAssignment","src":"3693:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3716:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:19"},"nodeType":"YulFunctionCall","src":"3701:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3693:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3473:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:19","type":""}],"src":"3322:404:19"},{"body":{"nodeType":"YulBlock","src":"3878:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3901:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"3906:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3914:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3888:12:19"},"nodeType":"YulFunctionCall","src":"3888:33:19"},"nodeType":"YulExpressionStatement","src":"3888:33:19"},{"nodeType":"YulVariableDeclaration","src":"3930:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3944:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3949:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3940:3:19"},"nodeType":"YulFunctionCall","src":"3940:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3934:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3972:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3965:6:19"},"nodeType":"YulFunctionCall","src":"3965:13:19"},"nodeType":"YulExpressionStatement","src":"3965:13:19"},{"nodeType":"YulAssignment","src":"3987:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"3994:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3987:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3846:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3851:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3859:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3870:3:19","type":""}],"src":"3731:271:19"},{"body":{"nodeType":"YulBlock","src":"4181:228:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4198:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4209:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4191:6:19"},"nodeType":"YulFunctionCall","src":"4191:21:19"},"nodeType":"YulExpressionStatement","src":"4191:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4232:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4243:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4228:3:19"},"nodeType":"YulFunctionCall","src":"4228:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4248:2:19","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4221:6:19"},"nodeType":"YulFunctionCall","src":"4221:30:19"},"nodeType":"YulExpressionStatement","src":"4221:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4271:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4282:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4267:3:19"},"nodeType":"YulFunctionCall","src":"4267:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"4287:34:19","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:19"},"nodeType":"YulFunctionCall","src":"4260:62:19"},"nodeType":"YulExpressionStatement","src":"4260:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4342:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4353:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4338:3:19"},"nodeType":"YulFunctionCall","src":"4338:18:19"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"4358:8:19","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:19"},"nodeType":"YulFunctionCall","src":"4331:36:19"},"nodeType":"YulExpressionStatement","src":"4331:36:19"},{"nodeType":"YulAssignment","src":"4376:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4388:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4399:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4384:3:19"},"nodeType":"YulFunctionCall","src":"4384:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4376:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4158:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4172:4:19","type":""}],"src":"4007:402:19"},{"body":{"nodeType":"YulBlock","src":"4588:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4605:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4616:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4598:6:19"},"nodeType":"YulFunctionCall","src":"4598:21:19"},"nodeType":"YulExpressionStatement","src":"4598:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4639:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4650:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4635:3:19"},"nodeType":"YulFunctionCall","src":"4635:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4655:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4628:6:19"},"nodeType":"YulFunctionCall","src":"4628:30:19"},"nodeType":"YulExpressionStatement","src":"4628:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4678:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4689:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:19"},"nodeType":"YulFunctionCall","src":"4674:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4694:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:19"},"nodeType":"YulFunctionCall","src":"4667:62:19"},"nodeType":"YulExpressionStatement","src":"4667:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4749:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4760:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:19"},"nodeType":"YulFunctionCall","src":"4745:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4765:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4738:6:19"},"nodeType":"YulFunctionCall","src":"4738:34:19"},"nodeType":"YulExpressionStatement","src":"4738:34:19"},{"nodeType":"YulAssignment","src":"4781:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4793:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4804:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4789:3:19"},"nodeType":"YulFunctionCall","src":"4789:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4781:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4565:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4579:4:19","type":""}],"src":"4414:400:19"},{"body":{"nodeType":"YulBlock","src":"4993:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5010:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5021:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5003:6:19"},"nodeType":"YulFunctionCall","src":"5003:21:19"},"nodeType":"YulExpressionStatement","src":"5003:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5044:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5055:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5040:3:19"},"nodeType":"YulFunctionCall","src":"5040:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5060:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5033:6:19"},"nodeType":"YulFunctionCall","src":"5033:30:19"},"nodeType":"YulExpressionStatement","src":"5033:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5083:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5094:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5079:3:19"},"nodeType":"YulFunctionCall","src":"5079:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5099:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:19"},"nodeType":"YulFunctionCall","src":"5072:60:19"},"nodeType":"YulExpressionStatement","src":"5072:60:19"},{"nodeType":"YulAssignment","src":"5141:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5153:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5164:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5149:3:19"},"nodeType":"YulFunctionCall","src":"5149:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5141:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4970:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4984:4:19","type":""}],"src":"4819:354:19"},{"body":{"nodeType":"YulBlock","src":"5352:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5369:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5380:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5362:6:19"},"nodeType":"YulFunctionCall","src":"5362:21:19"},"nodeType":"YulExpressionStatement","src":"5362:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5403:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5414:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5399:3:19"},"nodeType":"YulFunctionCall","src":"5399:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5419:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5392:6:19"},"nodeType":"YulFunctionCall","src":"5392:30:19"},"nodeType":"YulExpressionStatement","src":"5392:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5442:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5453:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5438:3:19"},"nodeType":"YulFunctionCall","src":"5438:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5458:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5431:6:19"},"nodeType":"YulFunctionCall","src":"5431:61:19"},"nodeType":"YulExpressionStatement","src":"5431:61:19"},{"nodeType":"YulAssignment","src":"5501:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5524:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5509:3:19"},"nodeType":"YulFunctionCall","src":"5509:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5501:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5329:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5343:4:19","type":""}],"src":"5178:355:19"},{"body":{"nodeType":"YulBlock","src":"5637:149:19","statements":[{"nodeType":"YulAssignment","src":"5647:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5670:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5655:3:19"},"nodeType":"YulFunctionCall","src":"5655:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5647:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5689:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5704:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5712:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5700:3:19"},"nodeType":"YulFunctionCall","src":"5700:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5682:6:19"},"nodeType":"YulFunctionCall","src":"5682:98:19"},"nodeType":"YulExpressionStatement","src":"5682:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5606:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5617:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5628:4:19","type":""}],"src":"5538:248:19"},{"body":{"nodeType":"YulBlock","src":"5857:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"5867:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"5876:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5871:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5936:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5961:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5966:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5957:3:19"},"nodeType":"YulFunctionCall","src":"5957:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5980:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5985:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5976:3:19"},"nodeType":"YulFunctionCall","src":"5976:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5970:5:19"},"nodeType":"YulFunctionCall","src":"5970:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:19"},"nodeType":"YulFunctionCall","src":"5950:39:19"},"nodeType":"YulExpressionStatement","src":"5950:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5897:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"5900:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5894:2:19"},"nodeType":"YulFunctionCall","src":"5894:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5908:19:19","statements":[{"nodeType":"YulAssignment","src":"5910:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5919:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"5922:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5915:3:19"},"nodeType":"YulFunctionCall","src":"5915:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5910:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"5890:3:19","statements":[]},"src":"5886:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6019:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6024:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6015:3:19"},"nodeType":"YulFunctionCall","src":"6015:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"6033:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6008:6:19"},"nodeType":"YulFunctionCall","src":"6008:27:19"},"nodeType":"YulExpressionStatement","src":"6008:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5835:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5840:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"5845:6:19","type":""}],"src":"5791:250:19"},{"body":{"nodeType":"YulBlock","src":"6183:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"6193:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6213:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6207:5:19"},"nodeType":"YulFunctionCall","src":"6207:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6197:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6268:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6276:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:19"},"nodeType":"YulFunctionCall","src":"6264:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"6283:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6288:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6229:34:19"},"nodeType":"YulFunctionCall","src":"6229:66:19"},"nodeType":"YulExpressionStatement","src":"6229:66:19"},{"nodeType":"YulAssignment","src":"6304:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6315:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6320:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6311:3:19"},"nodeType":"YulFunctionCall","src":"6311:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6304:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6159:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6164:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6175:3:19","type":""}],"src":"6046:287:19"},{"body":{"nodeType":"YulBlock","src":"6512:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6529:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6540:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6522:6:19"},"nodeType":"YulFunctionCall","src":"6522:21:19"},"nodeType":"YulExpressionStatement","src":"6522:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6563:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6574:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6559:3:19"},"nodeType":"YulFunctionCall","src":"6559:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6579:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6552:6:19"},"nodeType":"YulFunctionCall","src":"6552:30:19"},"nodeType":"YulExpressionStatement","src":"6552:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6602:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6613:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6598:3:19"},"nodeType":"YulFunctionCall","src":"6598:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6618:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6591:6:19"},"nodeType":"YulFunctionCall","src":"6591:59:19"},"nodeType":"YulExpressionStatement","src":"6591:59:19"},{"nodeType":"YulAssignment","src":"6659:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6671:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6682:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6667:3:19"},"nodeType":"YulFunctionCall","src":"6667:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6659:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6489:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6503:4:19","type":""}],"src":"6338:353:19"},{"body":{"nodeType":"YulBlock","src":"6817:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6834:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6845:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6827:6:19"},"nodeType":"YulFunctionCall","src":"6827:21:19"},"nodeType":"YulExpressionStatement","src":"6827:21:19"},{"nodeType":"YulVariableDeclaration","src":"6857:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6877:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6871:5:19"},"nodeType":"YulFunctionCall","src":"6871:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6861:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:19"},"nodeType":"YulFunctionCall","src":"6900:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"6920:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6893:6:19"},"nodeType":"YulFunctionCall","src":"6893:34:19"},"nodeType":"YulExpressionStatement","src":"6893:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6975:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:19"},"nodeType":"YulFunctionCall","src":"6971:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6992:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7003:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6988:3:19"},"nodeType":"YulFunctionCall","src":"6988:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"7008:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6936:34:19"},"nodeType":"YulFunctionCall","src":"6936:79:19"},"nodeType":"YulExpressionStatement","src":"6936:79:19"},{"nodeType":"YulAssignment","src":"7024:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7040:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7059:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7067:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:19"},"nodeType":"YulFunctionCall","src":"7055:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"7072:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7051:3:19"},"nodeType":"YulFunctionCall","src":"7051:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:19"},"nodeType":"YulFunctionCall","src":"7036:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"7142:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7032:3:19"},"nodeType":"YulFunctionCall","src":"7032:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7024:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6797:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6808:4:19","type":""}],"src":"6696:455:19"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved V\")\n        mstore(add(headStart, 96), \"enn policy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough ETH\")\n        mstore(add(headStart, 96), \" for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202ee378f50f6fbc08f89cf42125739113a2e16af8402a043fe9978538cdb67dd964736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212202EE378 CREATE2 0xF PUSH16 0xBC08F89CF42125739113A2E16AF8402A DIV EXTCODEHASH 0xE9 SWAP8 DUP6 CODESIZE 0xCD 0xB6 PUSH30 0xD964736F6C63430008130033000000000000000000000000000000000000 ","sourceMap":"503:77:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:843:7;;;;;;:::i;:::-;;:::i;:::-;;11651:241;;;;;;;;;;-1:-1:-1;11651:241:7;;;;;:::i;:::-;;:::i;11961:280::-;;;;;;;;;;;;;:::i;11309:176::-;;;;;;;;;;-1:-1:-1;11309:176:7;;;;;:::i;:::-;;:::i;10809:142::-;;;;;;;;;;-1:-1:-1;10809:142:7;;;;;:::i;:::-;;:::i;10556:247::-;;;;;;;;;;-1:-1:-1;10556:247:7;;;;;:::i;:::-;;:::i;11022:127::-;;;;;;;;;;;;;:::i;:::-;;;2267:42:19;2255:55;;;2237:74;;2225:2;2210:18;11022:127:7;;;;;;;9358:843;9529:10;7759:13;1709:54;1762:1;1717:41;1709:54;:::i;:::-;7785:49;;;;;;2783:25:19;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;7785:49:7;;;;;;;;;;;;7775:60;;;;;;7759:76;;7845:25;7907:1;7899:10;;7873:22;7889:5;14478:12;;14356:150;7873:22;:36;;7845:64;;7927:20;7919:75;;;;;;;3113:2:19;7919:75:7;;;3095:21:19;3152:2;3132:18;;;3125:30;3191:34;3171:18;;;3164:62;3262:12;3242:18;;;3235:40;3292:19;;7919:75:7;;;;;;;;;8012:103;8059:10;1584:18;8012:46;:103::i;:::-;8004:112;;;;;;9551:11:::1;9573:46;1835:58;1892:1;1843:45;1835:58;:::i;:::-;14478:12:::0;;14356:150;9573:46:::1;9565:55:::0;-1:-1:-1;9638:9:7::1;:16:::0;-1:-1:-1;9638:16:7::1;9630:69;;;::::0;::::1;::::0;;3524:2:19;9630:69:7::1;::::0;::::1;3506:21:19::0;3563:2;3543:18;;;3536:30;3602:34;3582:18;;;3575:62;3673:10;3653:18;;;3646:38;3701:19;;9630:69:7::1;3322:404:19::0;9630:69:7::1;9709:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;9754:10;13673:23:::0;;13571:141;9709:56:::1;9775:48;2086:57;2142:1;2094:44;2086:57;:::i;:::-;9821:1;13673:23:::0;;13571:141;9775:48:::1;9834:12;9852:10;:15;;9875:3;9880:17;;9852:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:65;;;9916:7;9908:16;;;::::0;::::1;;10021:49;10058:4;10065;;10021:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10021:28:7::1;::::0;-1:-1:-1;;;10021:49:7:i:1;:::-;-1:-1:-1::0;10080:56:7::1;1961:54;2014:1;1969:41;1961:54;:::i;:::-;10133:1;13673:23:::0;;13571:141;10080:56:::1;10146:48;2086:57;2142:1;2094:44;2086:57;:::i;10146:48::-;9541:660;;7479:655:::0;;9358:843;;;;;;:::o;11651:241::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11746:28:::1;::::0;::::1;11738:71;;;::::0;::::1;::::0;;5021:2:19;11738:71:7::1;::::0;::::1;5003:21:19::0;5060:2;5040:18;;;5033:30;5099:32;5079:18;;;5072:60;5149:18;;11738:71:7::1;4819:354:19::0;11738:71:7::1;11819:66;1455:52;1506:1;1463:39;1455:52;:::i;:::-;11870:14:::0;13673:23;;13571:141;11819:66:::1;11651:241:::0;:::o;11961:280::-;12033:50;1455:52;1506:1;1463:39;1455:52;:::i;12033:50::-;12019:64;;:10;:64;;;12011:108;;;;;;;5380:2:19;12011:108:7;;;5362:21:19;5419:2;5399:18;;;5392:30;5458:33;5438:18;;;5431:61;5509:18;;12011:108:7;5178:355:19;12011:108:7;12129:58;1245:48;1292:1;1253:35;1245:48;:::i;12129:58::-;12202:32;;12223:10;2237:74:19;;12202:32:7;;2225:2:19;2210:18;12202:32:7;;;;;;;11961:280::o;11309:176::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11386:51:::1;1071:42;1112:1;1079:29;1071:42;:::i;11386:51::-;11452:26;::::0;2267:42:19;2255:55;;2237:74;;11452:26:7::1;::::0;2225:2:19;2210:18;11452:26:7::1;;;;;;;11309:176:::0;:::o;10809:142::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10893:51:::1;1835:58;1892:1;1843:45;1835:58;:::i;10556:247::-:0;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10657:13:::1;1709:54;1762:1;1717:41;1709:54;:::i;:::-;10683:49;::::0;;::::1;::::0;::::1;2783:25:19::0;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;10683:49:7::1;;;;;;;;;;;;10673:60;;;;;;10657:76;;10780:6;10773:5;10766:21;10752:45;10556:247:::0;;:::o;11022:127::-;11070:7;11096:46;1245:48;1292:1;1253:35;1245:48;:::i;11096:46::-;11089:53;;11022:127;:::o;4421:647:4:-;4592:71;;;5712:66:19;5700:79;;4592:71:4;;;;5682:98:19;;;;4592:71:4;;;;;;;;;;5655:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;7058:325::-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;6540:2:19;8113:60:2;;;6522:21:19;6579:2;6559:18;;;6552:30;6618:31;6598:18;;;6591:59;6667:18;;8113:60:2;6338:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:196:19:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:19;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:19;-1:-1:-1;1154:2:19;1139:18;;1126:32;;-1:-1:-1;1170:16:19;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:19;;-1:-1:-1;1317:8:19;;1212:86;567:791;-1:-1:-1;;;567:791:19:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:180::-;1613:6;1666:2;1654:9;1645:7;1641:23;1637:32;1634:52;;;1682:1;1679;1672:12;1634:52;-1:-1:-1;1705:23:19;;1554:180;-1:-1:-1;1554:180:19:o;1739:347::-;1804:6;1812;1865:2;1853:9;1844:7;1840:23;1836:32;1833:52;;;1881:1;1878;1871:12;1833:52;1904:29;1923:9;1904:29;:::i;:::-;1894:39;;1983:2;1972:9;1968:18;1955:32;2030:5;2023:13;2016:21;2009:5;2006:32;1996:60;;2052:1;2049;2042:12;1996:60;2075:5;2065:15;;;1739:347;;;;;:::o;2322:282::-;2389:9;;;2410:11;;;2407:191;;;2454:77;2451:1;2444:88;2555:4;2552:1;2545:15;2583:4;2580:1;2573:15;3731:271;3914:6;3906;3901:3;3888:33;3870:3;3940:16;;3965:13;;;3940:16;3731:271;-1:-1:-1;3731:271:19:o;5791:250::-;5876:1;5886:113;5900:6;5897:1;5894:13;5886:113;;;5976:11;;;5970:18;5957:11;;;5950:39;5922:2;5915:10;5886:113;;;-1:-1:-1;;6033:1:19;6015:16;;6008:27;5791:250::o;6046:287::-;6175:3;6213:6;6207:13;6229:66;6288:6;6283:3;6276:4;6268:6;6264:17;6229:66;:::i;:::-;6311:16;;;;;6046:287;-1:-1:-1;;6046:287:19:o;6696:455::-;6845:2;6834:9;6827:21;6808:4;6877:6;6871:13;6920:6;6915:2;6904:9;6900:18;6893:34;6936:79;7008:6;7003:2;6992:9;6988:18;6983:2;6975:6;6971:15;6936:79;:::i;:::-;7067:2;7055:15;7072:66;7051:88;7036:104;;;;7142:2;7032:113;;6696:455;-1:-1:-1;;6696:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedVennPolicy(address,bool)":"efc2e703","setApprovedVennPolicyFee(uint256)":"acef6106","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setApprovedVennPolicyFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract must initializes with the firewall contract disabled, and the deployer as the firewall admin.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicy\":\"address of the Venn policy\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}},\"setApprovedVennPolicy(address,bool)\":{\"details\":\"Allows firewall admin to set approved Venn policies. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"status\":\"status of the Venn policy\",\"vennPolicy\":\"address of the Venn policy\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FirewallConsumer.sol\":\"FirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumer.sol\":{\"keccak256\":\"0x66d18a70f2d2de191d74f73cd770859188856dee6634d924cf09f9608a4da620\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://3cf4b9054c91ba03f6688b30b2705651e5d399854ceb2ee213a7d077c6599355\",\"dweb:/ipfs/QmPxiJgm1qaJfUEXGo8vpTxhdfx8sSUUUxNcdSotWjg5kb\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0xeea5ac84823e36dddb5e629ae033650f8debcbacde6a2b8f54d57b93cd5017ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec4dbce3d0356a23e65a4a89be4f771e1d3fb1747e7efa4ce3453337b7dd749b\",\"dweb:/ipfs/QmZtxxDQvoWaLp5hx7Dzxur3YkxGQ6G9KAQDvF7PwwLqhy\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/FirewallConsumerBase.sol":{"FirewallConsumerBase":{"abi":[{"inputs":[{"internalType":"address","name":"_firewall","type":"address"},{"internalType":"address","name":"_firewallAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setApprovedVennPolicyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1503":{"entryPoint":null,"id":1503,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":272,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":301,"id":null,"parameterSlots":2,"returnSlots":2},"checked_sub_t_uint256":{"entryPoint":357,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:721:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:19","statements":[{"nodeType":"YulAssignment","src":"84:22:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:19"},"nodeType":"YulFunctionCall","src":"93:13:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:19"}]},{"body":{"nodeType":"YulBlock","src":"169:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:19"},"nodeType":"YulFunctionCall","src":"171:12:19"},"nodeType":"YulExpressionStatement","src":"171:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:19"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:19","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:19","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:19"},"nodeType":"YulFunctionCall","src":"150:11:19"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:19","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:19:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:19"},"nodeType":"YulFunctionCall","src":"135:31:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:19"},"nodeType":"YulFunctionCall","src":"125:42:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:19"},"nodeType":"YulFunctionCall","src":"118:50:19"},"nodeType":"YulIf","src":"115:70:19"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:19","type":""}],"src":"14:177:19"},{"body":{"nodeType":"YulBlock","src":"294:195:19","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:19"},"nodeType":"YulFunctionCall","src":"342:12:19"},"nodeType":"YulExpressionStatement","src":"342:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:32:19"},"nodeType":"YulIf","src":"304:52:19"},{"nodeType":"YulAssignment","src":"365:50:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:19"},"nodeType":"YulFunctionCall","src":"375:40:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:19"}]},{"nodeType":"YulAssignment","src":"424:59:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:19"},"nodeType":"YulFunctionCall","src":"464:18:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:19"},"nodeType":"YulFunctionCall","src":"434:49:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:19","type":""}],"src":"196:293:19"},{"body":{"nodeType":"YulBlock","src":"543:176:19","statements":[{"nodeType":"YulAssignment","src":"553:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"565:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"568:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"561:3:19"},"nodeType":"YulFunctionCall","src":"561:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"553:4:19"}]},{"body":{"nodeType":"YulBlock","src":"602:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"623:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"630:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"635:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"626:3:19"},"nodeType":"YulFunctionCall","src":"626:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"616:6:19"},"nodeType":"YulFunctionCall","src":"616:31:19"},"nodeType":"YulExpressionStatement","src":"616:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"667:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"670:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"660:6:19"},"nodeType":"YulFunctionCall","src":"660:15:19"},"nodeType":"YulExpressionStatement","src":"660:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:19"},"nodeType":"YulFunctionCall","src":"688:15:19"},"nodeType":"YulExpressionStatement","src":"688:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"585:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"591:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"582:2:19"},"nodeType":"YulFunctionCall","src":"582:11:19"},"nodeType":"YulIf","src":"579:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"525:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"528:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"534:4:19","type":""}],"src":"494:225:19"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620012683803806200126883398101604081905262000034916200012d565b6200006a6200006560017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f66262000165565b839055565b620000a06200009b60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c97413662000165565b829055565b620000d7620000d160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a362000165565b60019055565b62000108620000d160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e204062000165565b50506200018d565b80516001600160a01b03811681146200012857600080fd5b919050565b600080604083850312156200014157600080fd5b6200014c8362000110565b91506200015c6020840162000110565b90509250929050565b818103818111156200018757634e487b7160e01b600052601160045260246000fd5b92915050565b6110cb806200019d6000396000f3fe6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acb75ca671d27bff56ab0f5c1d5da7807b4f4bd7fce06e367d368fcecc903a2f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1268 CODESIZE SUB DUP1 PUSH3 0x1268 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x12D JUMP JUMPDEST PUSH3 0x6A PUSH3 0x65 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0x165 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xA0 PUSH3 0x9B PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0x165 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xD7 PUSH3 0xD1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0x165 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x108 PUSH3 0xD1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0x165 JUMP JUMPDEST POP POP PUSH3 0x18D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14C DUP4 PUSH3 0x110 JUMP JUMPDEST SWAP2 POP PUSH3 0x15C PUSH1 0x20 DUP5 ADD PUSH3 0x110 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x187 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10CB DUP1 PUSH3 0x19D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220ACB75C 0xA6 PUSH18 0xD27BFF56AB0F5C1D5DA7807B4F4BD7FCE06E CALLDATASIZE PUSH30 0x368FCECC903A2F64736F6C63430008130033000000000000000000000000 ","sourceMap":"892:13616:7:-:0;;;8521:341;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8608:51;1071:42;1112:1;1079:29;1071:42;:::i;:::-;8649:9;13673:23;;13571:141;8608:51;8669:62;1245:48;1292:1;1253:35;1245:48;:::i;:::-;8716:14;13673:23;;13571:141;8669:62;8741:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;8794:1;13673:23;;13571:141;8741:56;8807:48;2086:57;2142:1;2094:44;2086:57;:::i;8807:48::-;8521:341;;892:13616;;14:177:19;93:13;;-1:-1:-1;;;;;135:31:19;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:225::-;561:9;;;582:11;;;579:134;;;635:10;630:3;626:20;623:1;616:31;670:4;667:1;660:15;698:4;695:1;688:15;579:134;494:225;;;;:::o;:::-;892:13616:7;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1820":{"entryPoint":null,"id":1820,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1839":{"entryPoint":null,"id":1839,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":3564,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1704":{"entryPoint":1684,"id":1704,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1636":{"entryPoint":2957,"id":1636,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":3219,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3263,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1590":{"entryPoint":349,"id":1590,"parameterSlots":5,"returnSlots":0},"@setApprovedVennPolicyFee_1625":{"entryPoint":2330,"id":1625,"parameterSlots":1,"returnSlots":0},"@setApprovedVennPolicy_1612":{"entryPoint":2607,"id":1612,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1678":{"entryPoint":1274,"id":1678,"parameterSlots":1,"returnSlots":0},"@setFirewall_1654":{"entryPoint":1977,"id":1654,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":3010,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3396,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":3632,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3673,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3875,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3927,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3746,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":3902,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4045,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3987,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4061,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7153:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:19","statements":[{"nodeType":"YulAssignment","src":"73:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:19"},"nodeType":"YulFunctionCall","src":"82:20:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:19"}]},{"body":{"nodeType":"YulBlock","src":"188:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:19"},"nodeType":"YulFunctionCall","src":"190:12:19"},"nodeType":"YulExpressionStatement","src":"190:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:19"},"nodeType":"YulFunctionCall","src":"131:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:19"},"nodeType":"YulFunctionCall","src":"121:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:19"},"nodeType":"YulFunctionCall","src":"114:73:19"},"nodeType":"YulIf","src":"111:93:19"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:19","type":""}],"src":"14:196:19"},{"body":{"nodeType":"YulBlock","src":"287:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:19"},"nodeType":"YulFunctionCall","src":"338:12:19"},"nodeType":"YulExpressionStatement","src":"338:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:19"},"nodeType":"YulFunctionCall","src":"300:35:19"},"nodeType":"YulIf","src":"297:55:19"},{"nodeType":"YulAssignment","src":"361:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:19"},"nodeType":"YulFunctionCall","src":"371:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:19"}]},{"body":{"nodeType":"YulBlock","src":"434:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:19"},"nodeType":"YulFunctionCall","src":"436:12:19"},"nodeType":"YulExpressionStatement","src":"436:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:19"},"nodeType":"YulFunctionCall","src":"403:30:19"},"nodeType":"YulIf","src":"400:50:19"},{"nodeType":"YulAssignment","src":"459:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:19"},"nodeType":"YulFunctionCall","src":"471:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:19"}]},{"body":{"nodeType":"YulBlock","src":"540:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:19"},"nodeType":"YulFunctionCall","src":"542:12:19"},"nodeType":"YulExpressionStatement","src":"542:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:19"},"nodeType":"YulFunctionCall","src":"507:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:19"},"nodeType":"YulFunctionCall","src":"503:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:19"},"nodeType":"YulFunctionCall","src":"500:39:19"},"nodeType":"YulIf","src":"497:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:19","type":""}],"src":"215:347:19"},{"body":{"nodeType":"YulBlock","src":"709:649:19","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:19"},"nodeType":"YulFunctionCall","src":"757:12:19"},"nodeType":"YulExpressionStatement","src":"757:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:19"},"nodeType":"YulFunctionCall","src":"726:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:19"},"nodeType":"YulFunctionCall","src":"722:32:19"},"nodeType":"YulIf","src":"719:52:19"},{"nodeType":"YulAssignment","src":"780:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:19"},"nodeType":"YulFunctionCall","src":"790:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:19"},"nodeType":"YulFunctionCall","src":"855:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:19"},"nodeType":"YulFunctionCall","src":"842:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:19"},"nodeType":"YulFunctionCall","src":"940:12:19"},"nodeType":"YulExpressionStatement","src":"940:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:19"},"nodeType":"YulFunctionCall","src":"923:14:19"},"nodeType":"YulIf","src":"920:34:19"},{"nodeType":"YulVariableDeclaration","src":"963:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:19"},"nodeType":"YulFunctionCall","src":"1015:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:19"},"nodeType":"YulFunctionCall","src":"989:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:19"}]},{"nodeType":"YulAssignment","src":"1083:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:19"},"nodeType":"YulFunctionCall","src":"1139:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:19"},"nodeType":"YulFunctionCall","src":"1126:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:19"},"nodeType":"YulFunctionCall","src":"1189:12:19"},"nodeType":"YulExpressionStatement","src":"1189:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:19"},"nodeType":"YulFunctionCall","src":"1170:16:19"},"nodeType":"YulIf","src":"1167:36:19"},{"nodeType":"YulVariableDeclaration","src":"1212:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:19"},"nodeType":"YulFunctionCall","src":"1264:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:19"},"nodeType":"YulFunctionCall","src":"1238:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:19"}]},{"nodeType":"YulAssignment","src":"1334:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:19","type":""}],"src":"567:791:19"},{"body":{"nodeType":"YulBlock","src":"1433:116:19","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:19"},"nodeType":"YulFunctionCall","src":"1481:12:19"},"nodeType":"YulExpressionStatement","src":"1481:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:19"},"nodeType":"YulFunctionCall","src":"1450:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:19"},"nodeType":"YulFunctionCall","src":"1446:32:19"},"nodeType":"YulIf","src":"1443:52:19"},{"nodeType":"YulAssignment","src":"1504:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:19"},"nodeType":"YulFunctionCall","src":"1514:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:19","type":""}],"src":"1363:186:19"},{"body":{"nodeType":"YulBlock","src":"1624:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"1670:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1679:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1682:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1672:6:19"},"nodeType":"YulFunctionCall","src":"1672:12:19"},"nodeType":"YulExpressionStatement","src":"1672:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1645:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1654:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1641:3:19"},"nodeType":"YulFunctionCall","src":"1641:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1666:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1637:3:19"},"nodeType":"YulFunctionCall","src":"1637:32:19"},"nodeType":"YulIf","src":"1634:52:19"},{"nodeType":"YulAssignment","src":"1695:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1705:12:19"},"nodeType":"YulFunctionCall","src":"1705:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1695:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1590:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1601:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1613:6:19","type":""}],"src":"1554:180:19"},{"body":{"nodeType":"YulBlock","src":"1823:263:19","statements":[{"body":{"nodeType":"YulBlock","src":"1869:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1881:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1871:6:19"},"nodeType":"YulFunctionCall","src":"1871:12:19"},"nodeType":"YulExpressionStatement","src":"1871:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1844:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1840:3:19"},"nodeType":"YulFunctionCall","src":"1840:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1865:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1836:3:19"},"nodeType":"YulFunctionCall","src":"1836:32:19"},"nodeType":"YulIf","src":"1833:52:19"},{"nodeType":"YulAssignment","src":"1894:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1904:18:19"},"nodeType":"YulFunctionCall","src":"1904:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1894:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1942:45:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1972:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1968:3:19"},"nodeType":"YulFunctionCall","src":"1968:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1955:12:19"},"nodeType":"YulFunctionCall","src":"1955:32:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1946:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2040:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2042:6:19"},"nodeType":"YulFunctionCall","src":"2042:12:19"},"nodeType":"YulExpressionStatement","src":"2042:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2009:5:19"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2030:5:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2023:6:19"},"nodeType":"YulFunctionCall","src":"2023:13:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2016:6:19"},"nodeType":"YulFunctionCall","src":"2016:21:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2006:2:19"},"nodeType":"YulFunctionCall","src":"2006:32:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1999:6:19"},"nodeType":"YulFunctionCall","src":"1999:40:19"},"nodeType":"YulIf","src":"1996:60:19"},{"nodeType":"YulAssignment","src":"2065:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"2075:5:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2065:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1781:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1792:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1804:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1812:6:19","type":""}],"src":"1739:347:19"},{"body":{"nodeType":"YulBlock","src":"2192:125:19","statements":[{"nodeType":"YulAssignment","src":"2202:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:19"},"nodeType":"YulFunctionCall","src":"2210:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2267:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:19"},"nodeType":"YulFunctionCall","src":"2255:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:19"},"nodeType":"YulFunctionCall","src":"2237:74:19"},"nodeType":"YulExpressionStatement","src":"2237:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:19","type":""}],"src":"2091:226:19"},{"body":{"nodeType":"YulBlock","src":"2371:233:19","statements":[{"nodeType":"YulAssignment","src":"2381:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2393:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2396:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2389:3:19"},"nodeType":"YulFunctionCall","src":"2389:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2381:4:19"}]},{"body":{"nodeType":"YulBlock","src":"2430:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2451:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2454:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2444:6:19"},"nodeType":"YulFunctionCall","src":"2444:88:19"},"nodeType":"YulExpressionStatement","src":"2444:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2552:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2555:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2545:6:19"},"nodeType":"YulFunctionCall","src":"2545:15:19"},"nodeType":"YulExpressionStatement","src":"2545:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:19"},"nodeType":"YulFunctionCall","src":"2573:15:19"},"nodeType":"YulExpressionStatement","src":"2573:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2413:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"2419:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2410:2:19"},"nodeType":"YulFunctionCall","src":"2410:11:19"},"nodeType":"YulIf","src":"2407:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2353:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"2356:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2362:4:19","type":""}],"src":"2322:282:19"},{"body":{"nodeType":"YulBlock","src":"2738:168:19","statements":[{"nodeType":"YulAssignment","src":"2748:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2760:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2771:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2756:3:19"},"nodeType":"YulFunctionCall","src":"2756:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2748:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2801:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:19"},"nodeType":"YulFunctionCall","src":"2783:25:19"},"nodeType":"YulExpressionStatement","src":"2783:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2839:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:19"},"nodeType":"YulFunctionCall","src":"2824:18:19"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2848:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2856:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2844:3:19"},"nodeType":"YulFunctionCall","src":"2844:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2817:6:19"},"nodeType":"YulFunctionCall","src":"2817:83:19"},"nodeType":"YulExpressionStatement","src":"2817:83:19"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2699:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2710:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2718:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2729:4:19","type":""}],"src":"2609:297:19"},{"body":{"nodeType":"YulBlock","src":"3085:232:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3102:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3095:6:19"},"nodeType":"YulFunctionCall","src":"3095:21:19"},"nodeType":"YulExpressionStatement","src":"3095:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3136:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3147:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3132:3:19"},"nodeType":"YulFunctionCall","src":"3132:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3152:2:19","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3125:6:19"},"nodeType":"YulFunctionCall","src":"3125:30:19"},"nodeType":"YulExpressionStatement","src":"3125:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3175:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3186:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3171:3:19"},"nodeType":"YulFunctionCall","src":"3171:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056","kind":"string","nodeType":"YulLiteral","src":"3191:34:19","type":"","value":"FirewallConsumer: Not approved V"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3164:6:19"},"nodeType":"YulFunctionCall","src":"3164:62:19"},"nodeType":"YulExpressionStatement","src":"3164:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3246:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3257:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3242:3:19"},"nodeType":"YulFunctionCall","src":"3242:18:19"},{"hexValue":"656e6e20706f6c696379","kind":"string","nodeType":"YulLiteral","src":"3262:12:19","type":"","value":"enn policy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3235:6:19"},"nodeType":"YulFunctionCall","src":"3235:40:19"},"nodeType":"YulExpressionStatement","src":"3235:40:19"},{"nodeType":"YulAssignment","src":"3284:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3307:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3292:3:19"},"nodeType":"YulFunctionCall","src":"3292:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3284:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3062:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3076:4:19","type":""}],"src":"2911:406:19"},{"body":{"nodeType":"YulBlock","src":"3496:230:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3524:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3506:6:19"},"nodeType":"YulFunctionCall","src":"3506:21:19"},"nodeType":"YulExpressionStatement","src":"3506:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3547:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3558:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3543:3:19"},"nodeType":"YulFunctionCall","src":"3543:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3563:2:19","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3536:6:19"},"nodeType":"YulFunctionCall","src":"3536:30:19"},"nodeType":"YulExpressionStatement","src":"3536:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3586:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3597:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3582:3:19"},"nodeType":"YulFunctionCall","src":"3582:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676820455448","kind":"string","nodeType":"YulLiteral","src":"3602:34:19","type":"","value":"FirewallConsumer: Not enough ETH"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3575:6:19"},"nodeType":"YulFunctionCall","src":"3575:62:19"},"nodeType":"YulExpressionStatement","src":"3575:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3657:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3668:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3653:3:19"},"nodeType":"YulFunctionCall","src":"3653:18:19"},{"hexValue":"20666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3673:10:19","type":"","value":" for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3646:6:19"},"nodeType":"YulFunctionCall","src":"3646:38:19"},"nodeType":"YulExpressionStatement","src":"3646:38:19"},{"nodeType":"YulAssignment","src":"3693:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3716:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:19"},"nodeType":"YulFunctionCall","src":"3701:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3693:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3473:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:19","type":""}],"src":"3322:404:19"},{"body":{"nodeType":"YulBlock","src":"3878:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3901:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"3906:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3914:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3888:12:19"},"nodeType":"YulFunctionCall","src":"3888:33:19"},"nodeType":"YulExpressionStatement","src":"3888:33:19"},{"nodeType":"YulVariableDeclaration","src":"3930:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3944:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3949:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3940:3:19"},"nodeType":"YulFunctionCall","src":"3940:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3934:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3972:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3965:6:19"},"nodeType":"YulFunctionCall","src":"3965:13:19"},"nodeType":"YulExpressionStatement","src":"3965:13:19"},{"nodeType":"YulAssignment","src":"3987:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"3994:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3987:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3846:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3851:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3859:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3870:3:19","type":""}],"src":"3731:271:19"},{"body":{"nodeType":"YulBlock","src":"4181:228:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4198:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4209:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4191:6:19"},"nodeType":"YulFunctionCall","src":"4191:21:19"},"nodeType":"YulExpressionStatement","src":"4191:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4232:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4243:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4228:3:19"},"nodeType":"YulFunctionCall","src":"4228:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4248:2:19","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4221:6:19"},"nodeType":"YulFunctionCall","src":"4221:30:19"},"nodeType":"YulExpressionStatement","src":"4221:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4271:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4282:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4267:3:19"},"nodeType":"YulFunctionCall","src":"4267:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"4287:34:19","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:19"},"nodeType":"YulFunctionCall","src":"4260:62:19"},"nodeType":"YulExpressionStatement","src":"4260:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4342:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4353:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4338:3:19"},"nodeType":"YulFunctionCall","src":"4338:18:19"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"4358:8:19","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:19"},"nodeType":"YulFunctionCall","src":"4331:36:19"},"nodeType":"YulExpressionStatement","src":"4331:36:19"},{"nodeType":"YulAssignment","src":"4376:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4388:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4399:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4384:3:19"},"nodeType":"YulFunctionCall","src":"4384:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4376:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4158:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4172:4:19","type":""}],"src":"4007:402:19"},{"body":{"nodeType":"YulBlock","src":"4588:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4605:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4616:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4598:6:19"},"nodeType":"YulFunctionCall","src":"4598:21:19"},"nodeType":"YulExpressionStatement","src":"4598:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4639:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4650:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4635:3:19"},"nodeType":"YulFunctionCall","src":"4635:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4655:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4628:6:19"},"nodeType":"YulFunctionCall","src":"4628:30:19"},"nodeType":"YulExpressionStatement","src":"4628:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4678:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4689:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:19"},"nodeType":"YulFunctionCall","src":"4674:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4694:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:19"},"nodeType":"YulFunctionCall","src":"4667:62:19"},"nodeType":"YulExpressionStatement","src":"4667:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4749:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4760:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:19"},"nodeType":"YulFunctionCall","src":"4745:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4765:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4738:6:19"},"nodeType":"YulFunctionCall","src":"4738:34:19"},"nodeType":"YulExpressionStatement","src":"4738:34:19"},{"nodeType":"YulAssignment","src":"4781:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4793:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4804:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4789:3:19"},"nodeType":"YulFunctionCall","src":"4789:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4781:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4565:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4579:4:19","type":""}],"src":"4414:400:19"},{"body":{"nodeType":"YulBlock","src":"4993:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5010:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5021:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5003:6:19"},"nodeType":"YulFunctionCall","src":"5003:21:19"},"nodeType":"YulExpressionStatement","src":"5003:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5044:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5055:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5040:3:19"},"nodeType":"YulFunctionCall","src":"5040:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5060:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5033:6:19"},"nodeType":"YulFunctionCall","src":"5033:30:19"},"nodeType":"YulExpressionStatement","src":"5033:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5083:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5094:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5079:3:19"},"nodeType":"YulFunctionCall","src":"5079:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5099:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:19"},"nodeType":"YulFunctionCall","src":"5072:60:19"},"nodeType":"YulExpressionStatement","src":"5072:60:19"},{"nodeType":"YulAssignment","src":"5141:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5153:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5164:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5149:3:19"},"nodeType":"YulFunctionCall","src":"5149:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5141:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4970:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4984:4:19","type":""}],"src":"4819:354:19"},{"body":{"nodeType":"YulBlock","src":"5352:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5369:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5380:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5362:6:19"},"nodeType":"YulFunctionCall","src":"5362:21:19"},"nodeType":"YulExpressionStatement","src":"5362:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5403:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5414:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5399:3:19"},"nodeType":"YulFunctionCall","src":"5399:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5419:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5392:6:19"},"nodeType":"YulFunctionCall","src":"5392:30:19"},"nodeType":"YulExpressionStatement","src":"5392:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5442:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5453:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5438:3:19"},"nodeType":"YulFunctionCall","src":"5438:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5458:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5431:6:19"},"nodeType":"YulFunctionCall","src":"5431:61:19"},"nodeType":"YulExpressionStatement","src":"5431:61:19"},{"nodeType":"YulAssignment","src":"5501:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5524:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5509:3:19"},"nodeType":"YulFunctionCall","src":"5509:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5501:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5329:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5343:4:19","type":""}],"src":"5178:355:19"},{"body":{"nodeType":"YulBlock","src":"5637:149:19","statements":[{"nodeType":"YulAssignment","src":"5647:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5670:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5655:3:19"},"nodeType":"YulFunctionCall","src":"5655:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5647:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5689:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5704:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5712:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5700:3:19"},"nodeType":"YulFunctionCall","src":"5700:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5682:6:19"},"nodeType":"YulFunctionCall","src":"5682:98:19"},"nodeType":"YulExpressionStatement","src":"5682:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5606:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5617:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5628:4:19","type":""}],"src":"5538:248:19"},{"body":{"nodeType":"YulBlock","src":"5857:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"5867:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"5876:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5871:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5936:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5961:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5966:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5957:3:19"},"nodeType":"YulFunctionCall","src":"5957:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5980:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5985:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5976:3:19"},"nodeType":"YulFunctionCall","src":"5976:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5970:5:19"},"nodeType":"YulFunctionCall","src":"5970:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:19"},"nodeType":"YulFunctionCall","src":"5950:39:19"},"nodeType":"YulExpressionStatement","src":"5950:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5897:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"5900:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5894:2:19"},"nodeType":"YulFunctionCall","src":"5894:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5908:19:19","statements":[{"nodeType":"YulAssignment","src":"5910:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5919:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"5922:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5915:3:19"},"nodeType":"YulFunctionCall","src":"5915:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5910:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"5890:3:19","statements":[]},"src":"5886:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6019:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6024:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6015:3:19"},"nodeType":"YulFunctionCall","src":"6015:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"6033:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6008:6:19"},"nodeType":"YulFunctionCall","src":"6008:27:19"},"nodeType":"YulExpressionStatement","src":"6008:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5835:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5840:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"5845:6:19","type":""}],"src":"5791:250:19"},{"body":{"nodeType":"YulBlock","src":"6183:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"6193:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6213:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6207:5:19"},"nodeType":"YulFunctionCall","src":"6207:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6197:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6268:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6276:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:19"},"nodeType":"YulFunctionCall","src":"6264:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"6283:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6288:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6229:34:19"},"nodeType":"YulFunctionCall","src":"6229:66:19"},"nodeType":"YulExpressionStatement","src":"6229:66:19"},{"nodeType":"YulAssignment","src":"6304:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6315:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6320:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6311:3:19"},"nodeType":"YulFunctionCall","src":"6311:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6304:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6159:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6164:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6175:3:19","type":""}],"src":"6046:287:19"},{"body":{"nodeType":"YulBlock","src":"6512:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6529:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6540:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6522:6:19"},"nodeType":"YulFunctionCall","src":"6522:21:19"},"nodeType":"YulExpressionStatement","src":"6522:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6563:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6574:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6559:3:19"},"nodeType":"YulFunctionCall","src":"6559:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6579:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6552:6:19"},"nodeType":"YulFunctionCall","src":"6552:30:19"},"nodeType":"YulExpressionStatement","src":"6552:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6602:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6613:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6598:3:19"},"nodeType":"YulFunctionCall","src":"6598:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6618:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6591:6:19"},"nodeType":"YulFunctionCall","src":"6591:59:19"},"nodeType":"YulExpressionStatement","src":"6591:59:19"},{"nodeType":"YulAssignment","src":"6659:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6671:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6682:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6667:3:19"},"nodeType":"YulFunctionCall","src":"6667:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6659:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6489:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6503:4:19","type":""}],"src":"6338:353:19"},{"body":{"nodeType":"YulBlock","src":"6817:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6834:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6845:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6827:6:19"},"nodeType":"YulFunctionCall","src":"6827:21:19"},"nodeType":"YulExpressionStatement","src":"6827:21:19"},{"nodeType":"YulVariableDeclaration","src":"6857:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6877:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6871:5:19"},"nodeType":"YulFunctionCall","src":"6871:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6861:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:19"},"nodeType":"YulFunctionCall","src":"6900:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"6920:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6893:6:19"},"nodeType":"YulFunctionCall","src":"6893:34:19"},"nodeType":"YulExpressionStatement","src":"6893:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6975:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:19"},"nodeType":"YulFunctionCall","src":"6971:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6992:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7003:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6988:3:19"},"nodeType":"YulFunctionCall","src":"6988:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"7008:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6936:34:19"},"nodeType":"YulFunctionCall","src":"6936:79:19"},"nodeType":"YulExpressionStatement","src":"6936:79:19"},{"nodeType":"YulAssignment","src":"7024:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7040:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7059:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7067:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:19"},"nodeType":"YulFunctionCall","src":"7055:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"7072:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7051:3:19"},"nodeType":"YulFunctionCall","src":"7051:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:19"},"nodeType":"YulFunctionCall","src":"7036:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"7142:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7032:3:19"},"nodeType":"YulFunctionCall","src":"7032:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7024:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6797:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6808:4:19","type":""}],"src":"6696:455:19"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved V\")\n        mstore(add(headStart, 96), \"enn policy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough ETH\")\n        mstore(add(headStart, 96), \" for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220acb75ca671d27bff56ab0f5c1d5da7807b4f4bd7fce06e367d368fcecc903a2f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220ACB75C 0xA6 PUSH18 0xD27BFF56AB0F5C1D5DA7807B4F4BD7FCE06E CALLDATASIZE PUSH30 0x368FCECC903A2F64736F6C63430008130033000000000000000000000000 ","sourceMap":"892:13616:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:843;;;;;;:::i;:::-;;:::i;:::-;;11651:241;;;;;;;;;;-1:-1:-1;11651:241:7;;;;;:::i;:::-;;:::i;11961:280::-;;;;;;;;;;;;;:::i;11309:176::-;;;;;;;;;;-1:-1:-1;11309:176:7;;;;;:::i;:::-;;:::i;10809:142::-;;;;;;;;;;-1:-1:-1;10809:142:7;;;;;:::i;:::-;;:::i;10556:247::-;;;;;;;;;;-1:-1:-1;10556:247:7;;;;;:::i;:::-;;:::i;11022:127::-;;;;;;;;;;;;;:::i;:::-;;;2267:42:19;2255:55;;;2237:74;;2225:2;2210:18;11022:127:7;;;;;;;9358:843;9529:10;7759:13;1709:54;1762:1;1717:41;1709:54;:::i;:::-;7785:49;;;;;;2783:25:19;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;7785:49:7;;;;;;;;;;;;7775:60;;;;;;7759:76;;7845:25;7907:1;7899:10;;7873:22;7889:5;14478:12;;14356:150;7873:22;:36;;7845:64;;7927:20;7919:75;;;;;;;3113:2:19;7919:75:7;;;3095:21:19;3152:2;3132:18;;;3125:30;3191:34;3171:18;;;3164:62;3262:12;3242:18;;;3235:40;3292:19;;7919:75:7;;;;;;;;;8012:103;8059:10;1584:18;8012:46;:103::i;:::-;8004:112;;;;;;9551:11:::1;9573:46;1835:58;1892:1;1843:45;1835:58;:::i;:::-;14478:12:::0;;14356:150;9573:46:::1;9565:55:::0;-1:-1:-1;9638:9:7::1;:16:::0;-1:-1:-1;9638:16:7::1;9630:69;;;::::0;::::1;::::0;;3524:2:19;9630:69:7::1;::::0;::::1;3506:21:19::0;3563:2;3543:18;;;3536:30;3602:34;3582:18;;;3575:62;3673:10;3653:18;;;3646:38;3701:19;;9630:69:7::1;3322:404:19::0;9630:69:7::1;9709:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;9754:10;13673:23:::0;;13571:141;9709:56:::1;9775:48;2086:57;2142:1;2094:44;2086:57;:::i;:::-;9821:1;13673:23:::0;;13571:141;9775:48:::1;9834:12;9852:10;:15;;9875:3;9880:17;;9852:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:65;;;9916:7;9908:16;;;::::0;::::1;;10021:49;10058:4;10065;;10021:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10021:28:7::1;::::0;-1:-1:-1;;;10021:49:7:i:1;:::-;-1:-1:-1::0;10080:56:7::1;1961:54;2014:1;1969:41;1961:54;:::i;:::-;10133:1;13673:23:::0;;13571:141;10080:56:::1;10146:48;2086:57;2142:1;2094:44;2086:57;:::i;10146:48::-;9541:660;;7479:655:::0;;9358:843;;;;;;:::o;11651:241::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11746:28:::1;::::0;::::1;11738:71;;;::::0;::::1;::::0;;5021:2:19;11738:71:7::1;::::0;::::1;5003:21:19::0;5060:2;5040:18;;;5033:30;5099:32;5079:18;;;5072:60;5149:18;;11738:71:7::1;4819:354:19::0;11738:71:7::1;11819:66;1455:52;1506:1;1463:39;1455:52;:::i;:::-;11870:14:::0;13673:23;;13571:141;11819:66:::1;11651:241:::0;:::o;11961:280::-;12033:50;1455:52;1506:1;1463:39;1455:52;:::i;12033:50::-;12019:64;;:10;:64;;;12011:108;;;;;;;5380:2:19;12011:108:7;;;5362:21:19;5419:2;5399:18;;;5392:30;5458:33;5438:18;;;5431:61;5509:18;;12011:108:7;5178:355:19;12011:108:7;12129:58;1245:48;1292:1;1253:35;1245:48;:::i;12129:58::-;12202:32;;12223:10;2237:74:19;;12202:32:7;;2225:2:19;2210:18;12202:32:7;;;;;;;11961:280::o;11309:176::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11386:51:::1;1071:42;1112:1;1079:29;1071:42;:::i;11386:51::-;11452:26;::::0;2267:42:19;2255:55;;2237:74;;11452:26:7::1;::::0;2225:2:19;2210:18;11452:26:7::1;;;;;;;11309:176:::0;:::o;10809:142::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10893:51:::1;1835:58;1892:1;1843:45;1835:58;:::i;10556:247::-:0;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10657:13:::1;1709:54;1762:1;1717:41;1709:54;:::i;:::-;10683:49;::::0;;::::1;::::0;::::1;2783:25:19::0;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;10683:49:7::1;;;;;;;;;;;;10673:60;;;;;;10657:76;;10780:6;10773:5;10766:21;10752:45;10556:247:::0;;:::o;11022:127::-;11070:7;11096:46;1245:48;1292:1;1253:35;1245:48;:::i;11096:46::-;11089:53;;11022:127;:::o;4421:647:4:-;4592:71;;;5712:66:19;5700:79;;4592:71:4;;;;5682:98:19;;;;4592:71:4;;;;;;;;;;5655:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;7058:325::-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;6540:2:19;8113:60:2;;;6522:21:19;6579:2;6559:18;;;6552:30;6618:31;6598:18;;;6591:59;6667:18;;8113:60:2;6338:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:196:19:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:19;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:19;-1:-1:-1;1154:2:19;1139:18;;1126:32;;-1:-1:-1;1170:16:19;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:19;;-1:-1:-1;1317:8:19;;1212:86;567:791;-1:-1:-1;;;567:791:19:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:180::-;1613:6;1666:2;1654:9;1645:7;1641:23;1637:32;1634:52;;;1682:1;1679;1672:12;1634:52;-1:-1:-1;1705:23:19;;1554:180;-1:-1:-1;1554:180:19:o;1739:347::-;1804:6;1812;1865:2;1853:9;1844:7;1840:23;1836:32;1833:52;;;1881:1;1878;1871:12;1833:52;1904:29;1923:9;1904:29;:::i;:::-;1894:39;;1983:2;1972:9;1968:18;1955:32;2030:5;2023:13;2016:21;2009:5;2006:32;1996:60;;2052:1;2049;2042:12;1996:60;2075:5;2065:15;;;1739:347;;;;;:::o;2322:282::-;2389:9;;;2410:11;;;2407:191;;;2454:77;2451:1;2444:88;2555:4;2552:1;2545:15;2583:4;2580:1;2573:15;3731:271;3914:6;3906;3901:3;3888:33;3870:3;3940:16;;3965:13;;;3940:16;3731:271;-1:-1:-1;3731:271:19:o;5791:250::-;5876:1;5886:113;5900:6;5897:1;5894:13;5886:113;;;5976:11;;;5970:18;5957:11;;;5950:39;5922:2;5915:10;5886:113;;;-1:-1:-1;;6033:1:19;6015:16;;6008:27;5791:250::o;6046:287::-;6175:3;6213:6;6207:13;6229:66;6288:6;6283:3;6276:4;6268:6;6264:17;6229:66;:::i;:::-;6311:16;;;;;6046:287;-1:-1:-1;;6046:287:19:o;6696:455::-;6845:2;6834:9;6827:21;6808:4;6877:6;6871:13;6920:6;6915:2;6904:9;6900:18;6893:34;6936:79;7008:6;7003:2;6992:9;6988:18;6983:2;6975:6;6971:15;6936:79;:::i;:::-;7067:2;7055:15;7072:66;7051:88;7036:104;;;;7142:2;7032:113;;6696:455;-1:-1:-1;;6696:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedVennPolicy(address,bool)":"efc2e703","setApprovedVennPolicyFee(uint256)":"acef6106","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setApprovedVennPolicyFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract must define a firewall contract which will manage the policies that are applied to the contract. It also must define a firewall admin which will be able to add and remove policies.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"constructor\":{\"details\":\"Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicy\":\"address of the Venn policy\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}},\"setApprovedVennPolicy(address,bool)\":{\"details\":\"Allows firewall admin to set approved Venn policies. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"status\":\"status of the Venn policy\",\"vennPolicy\":\"address of the Venn policy\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer Base Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FirewallConsumerBase.sol\":\"FirewallConsumerBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0xeea5ac84823e36dddb5e629ae033650f8debcbacde6a2b8f54d57b93cd5017ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec4dbce3d0356a23e65a4a89be4f771e1d3fb1747e7efa4ce3453337b7dd749b\",\"dweb:/ipfs/QmZtxxDQvoWaLp5hx7Dzxur3YkxGQ6G9KAQDvF7PwwLqhy\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/consumers/FirewallConsumerStorage.sol":{"FirewallConsumerStorage":{"abi":[{"inputs":[{"internalType":"address","name":"_firewall","type":"address"},{"internalType":"address","name":"_firewallAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getApprovedVennPolicy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewall","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserNativeFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setUserNativeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"}],"name":"setVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1958":{"entryPoint":null,"id":1958,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2107":{"entryPoint":null,"id":2107,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":156,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":184,"id":null,"parameterSlots":2,"returnSlots":2},"checked_sub_t_uint256":{"entryPoint":235,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:721:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:19","statements":[{"nodeType":"YulAssignment","src":"84:22:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:19"},"nodeType":"YulFunctionCall","src":"93:13:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:19"}]},{"body":{"nodeType":"YulBlock","src":"169:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:19"},"nodeType":"YulFunctionCall","src":"171:12:19"},"nodeType":"YulExpressionStatement","src":"171:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:19"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:19","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:19","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:19"},"nodeType":"YulFunctionCall","src":"150:11:19"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:19","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:19:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:19"},"nodeType":"YulFunctionCall","src":"135:31:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:19"},"nodeType":"YulFunctionCall","src":"125:42:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:19"},"nodeType":"YulFunctionCall","src":"118:50:19"},"nodeType":"YulIf","src":"115:70:19"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:19","type":""}],"src":"14:177:19"},{"body":{"nodeType":"YulBlock","src":"294:195:19","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:19"},"nodeType":"YulFunctionCall","src":"342:12:19"},"nodeType":"YulExpressionStatement","src":"342:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:32:19"},"nodeType":"YulIf","src":"304:52:19"},{"nodeType":"YulAssignment","src":"365:50:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:19"},"nodeType":"YulFunctionCall","src":"375:40:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:19"}]},{"nodeType":"YulAssignment","src":"424:59:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:19"},"nodeType":"YulFunctionCall","src":"464:18:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:19"},"nodeType":"YulFunctionCall","src":"434:49:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:19","type":""}],"src":"196:293:19"},{"body":{"nodeType":"YulBlock","src":"543:176:19","statements":[{"nodeType":"YulAssignment","src":"553:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"565:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"568:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"561:3:19"},"nodeType":"YulFunctionCall","src":"561:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"553:4:19"}]},{"body":{"nodeType":"YulBlock","src":"602:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"623:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"630:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"635:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"626:3:19"},"nodeType":"YulFunctionCall","src":"626:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"616:6:19"},"nodeType":"YulFunctionCall","src":"616:31:19"},"nodeType":"YulExpressionStatement","src":"616:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"667:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"670:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"660:6:19"},"nodeType":"YulFunctionCall","src":"660:15:19"},"nodeType":"YulExpressionStatement","src":"660:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:19"},"nodeType":"YulFunctionCall","src":"688:15:19"},"nodeType":"YulExpressionStatement","src":"688:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"585:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"591:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"582:2:19"},"nodeType":"YulFunctionCall","src":"582:11:19"},"nodeType":"YulIf","src":"579:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"525:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"528:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"534:4:19","type":""}],"src":"494:225:19"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b50604051610a65380380610a6583398101604081905261002f916100b8565b61006261005d60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626100eb565b839055565b61009561009060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366100eb565b829055565b5050610112565b80516001600160a01b03811681146100b357600080fd5b919050565b600080604083850312156100cb57600080fd5b6100d48361009c565b91506100e26020840161009c565b90509250929050565b8181038181111561010c57634e487b7160e01b600052601160045260246000fd5b92915050565b610944806101216000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c8063734b7198116100765780638c36d02d1161005b5780638c36d02d14610128578063af7f27f41461013b578063b73bccf51461014357600080fd5b8063734b71981461010d5780637c65c38b1461012057600080fd5b80631498be2f146100a8578063369c87ca146100c357806351cfdd39146100d85780636064a01314610105575b600080fd5b6100b0610156565b6040519081526020015b60405180910390f35b6100d66100d1366004610878565b61018f565b005b6100e06102b1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ba565b6100e06102e6565b6100d661011b366004610891565b610316565b6100d66104a8565b6100d6610136366004610891565b6105d2565b6100e0610733565b6100d6610151366004610891565b610763565b600061018a61018660017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b5490565b919050565b6101bd61018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461027b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ae6102a960017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b829055565b50565b60006102e161018660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b905090565b60006102e161018660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab6108ce565b61034461018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b73ffffffffffffffffffffffffffffffffffffffff811661047a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610272565b6102ae6102a960017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b6104d661018660017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610272565b61059d61059860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61060061018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6106e76102a960017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b60006102e161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b61079161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6102ae6102a960017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab6108ce565b60006020828403121561088a57600080fd5b5035919050565b6000602082840312156108a357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108c757600080fd5b9392505050565b81810381811115610908577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220ddbd75b1361ed0de3fecb2c2dfbe192c887d0da38a90ce81e8b7ef2edea7410164736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xA65 CODESIZE SUB DUP1 PUSH2 0xA65 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH2 0x2F SWAP2 PUSH2 0xB8 JUMP JUMPDEST PUSH2 0x62 PUSH2 0x5D PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xEB JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x95 PUSH2 0x90 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xEB JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP POP PUSH2 0x112 JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH2 0xB3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD4 DUP4 PUSH2 0x9C JUMP JUMPDEST SWAP2 POP PUSH2 0xE2 PUSH1 0x20 DUP5 ADD PUSH2 0x9C JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x10C JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x944 DUP1 PUSH2 0x121 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x734B7198 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8C36D02D GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xAF7F27F4 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0xB73BCCF5 EQ PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x734B7198 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1498BE2F EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x369C87CA EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x51CFDD39 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x6064A013 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x878 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE0 PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x316 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x733 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x763 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH2 0x186 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x27B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x344 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x47A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x4D6 PUSH2 0x186 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x59D PUSH2 0x598 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x600 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x791 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x908 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0xBD PUSH22 0xB1361ED0DE3FECB2C2DFBE192C887D0DA38A90CE81E8 0xB7 0xEF 0x2E 0xDE 0xA7 COINBASE ADD PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"751:5086:8:-:0;;;2171:217;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2258:51;931:42;972:1;939:29;931:42;:::i;:::-;2299:9;5002:23;;4900:141;2258:51;2319:62;1105:48;1152:1;1113:35;1105:48;:::i;:::-;2366:14;5002:23;;4900:141;2319:62;2171:217;;751:5086;;14:177:19;93:13;;-1:-1:-1;;;;;135:31:19;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:225::-;561:9;;;582:11;;;579:134;;;635:10;630:3;626:20;623:1;616:31;670:4;667:1;660:15;698:4;695:1;688:15;579:134;494:225;;;;:::o;:::-;751:5086:8;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_2117":{"entryPoint":null,"id":2117,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_2136":{"entryPoint":null,"id":2136,"parameterSlots":1,"returnSlots":1},"@_setAddressBySlot_2107":{"entryPoint":null,"id":2107,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_2126":{"entryPoint":null,"id":2126,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_2097":{"entryPoint":1192,"id":2097,"parameterSlots":0,"returnSlots":0},"@getApprovedVennPolicy_1968":{"entryPoint":742,"id":1968,"parameterSlots":0,"returnSlots":1},"@getFirewallAdmin_2001":{"entryPoint":1843,"id":2001,"parameterSlots":0,"returnSlots":1},"@getFirewall_1991":{"entryPoint":689,"id":1991,"parameterSlots":0,"returnSlots":1},"@getUserNativeFee_1981":{"entryPoint":342,"id":1981,"parameterSlots":0,"returnSlots":1},"@setFirewallAdmin_2071":{"entryPoint":790,"id":2071,"parameterSlots":1,"returnSlots":0},"@setFirewall_2047":{"entryPoint":1490,"id":2047,"parameterSlots":1,"returnSlots":0},"@setUserNativeFee_2029":{"entryPoint":399,"id":2029,"parameterSlots":1,"returnSlots":0},"@setVennPolicy_2015":{"entryPoint":1891,"id":2015,"parameterSlots":1,"returnSlots":0},"abi_decode_tuple_t_address":{"entryPoint":2193,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256":{"entryPoint":2168,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2254,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:2334:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"115:76:19","statements":[{"nodeType":"YulAssignment","src":"125:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"137:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"148:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"133:3:19"},"nodeType":"YulFunctionCall","src":"133:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"125:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"167:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"178:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"160:6:19"},"nodeType":"YulFunctionCall","src":"160:25:19"},"nodeType":"YulExpressionStatement","src":"160:25:19"}]},"name":"abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"84:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"95:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"106:4:19","type":""}],"src":"14:177:19"},{"body":{"nodeType":"YulBlock","src":"266:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"312:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"321:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"324:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"314:6:19"},"nodeType":"YulFunctionCall","src":"314:12:19"},"nodeType":"YulExpressionStatement","src":"314:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"287:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"296:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"283:3:19"},"nodeType":"YulFunctionCall","src":"283:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"308:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"279:3:19"},"nodeType":"YulFunctionCall","src":"279:32:19"},"nodeType":"YulIf","src":"276:52:19"},{"nodeType":"YulAssignment","src":"337:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"360:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"347:12:19"},"nodeType":"YulFunctionCall","src":"347:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"337:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"232:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"243:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"255:6:19","type":""}],"src":"196:180:19"},{"body":{"nodeType":"YulBlock","src":"482:125:19","statements":[{"nodeType":"YulAssignment","src":"492:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"504:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"515:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"500:3:19"},"nodeType":"YulFunctionCall","src":"500:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"492:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"534:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"549:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"557:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"545:3:19"},"nodeType":"YulFunctionCall","src":"545:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"527:6:19"},"nodeType":"YulFunctionCall","src":"527:74:19"},"nodeType":"YulExpressionStatement","src":"527:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"451:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"462:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"473:4:19","type":""}],"src":"381:226:19"},{"body":{"nodeType":"YulBlock","src":"682:239:19","statements":[{"body":{"nodeType":"YulBlock","src":"728:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"737:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"740:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"730:6:19"},"nodeType":"YulFunctionCall","src":"730:12:19"},"nodeType":"YulExpressionStatement","src":"730:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"703:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"712:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"699:3:19"},"nodeType":"YulFunctionCall","src":"699:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"724:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"695:3:19"},"nodeType":"YulFunctionCall","src":"695:32:19"},"nodeType":"YulIf","src":"692:52:19"},{"nodeType":"YulVariableDeclaration","src":"753:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"779:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"766:12:19"},"nodeType":"YulFunctionCall","src":"766:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"757:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"875:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"884:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"887:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"877:6:19"},"nodeType":"YulFunctionCall","src":"877:12:19"},"nodeType":"YulExpressionStatement","src":"877:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"811:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"822:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"829:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"818:3:19"},"nodeType":"YulFunctionCall","src":"818:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"808:2:19"},"nodeType":"YulFunctionCall","src":"808:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"801:6:19"},"nodeType":"YulFunctionCall","src":"801:73:19"},"nodeType":"YulIf","src":"798:93:19"},{"nodeType":"YulAssignment","src":"900:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"910:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"900:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"648:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"659:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"671:6:19","type":""}],"src":"612:309:19"},{"body":{"nodeType":"YulBlock","src":"975:233:19","statements":[{"nodeType":"YulAssignment","src":"985:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"997:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"1000:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"993:3:19"},"nodeType":"YulFunctionCall","src":"993:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"985:4:19"}]},{"body":{"nodeType":"YulBlock","src":"1034:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1055:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1058:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1048:6:19"},"nodeType":"YulFunctionCall","src":"1048:88:19"},"nodeType":"YulExpressionStatement","src":"1048:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1156:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1159:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1149:6:19"},"nodeType":"YulFunctionCall","src":"1149:15:19"},"nodeType":"YulExpressionStatement","src":"1149:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1184:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1187:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1177:6:19"},"nodeType":"YulFunctionCall","src":"1177:15:19"},"nodeType":"YulExpressionStatement","src":"1177:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"1017:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"1023:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1014:2:19"},"nodeType":"YulFunctionCall","src":"1014:11:19"},"nodeType":"YulIf","src":"1011:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"957:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"960:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"966:4:19","type":""}],"src":"926:282:19"},{"body":{"nodeType":"YulBlock","src":"1387:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1404:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1415:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1397:6:19"},"nodeType":"YulFunctionCall","src":"1397:21:19"},"nodeType":"YulExpressionStatement","src":"1397:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1438:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1449:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1434:3:19"},"nodeType":"YulFunctionCall","src":"1434:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"1454:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1427:6:19"},"nodeType":"YulFunctionCall","src":"1427:30:19"},"nodeType":"YulExpressionStatement","src":"1427:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1477:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1488:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1473:3:19"},"nodeType":"YulFunctionCall","src":"1473:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"1493:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1466:6:19"},"nodeType":"YulFunctionCall","src":"1466:62:19"},"nodeType":"YulExpressionStatement","src":"1466:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1548:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1559:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1544:3:19"},"nodeType":"YulFunctionCall","src":"1544:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"1564:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1537:6:19"},"nodeType":"YulFunctionCall","src":"1537:34:19"},"nodeType":"YulExpressionStatement","src":"1537:34:19"},{"nodeType":"YulAssignment","src":"1580:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1592:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1603:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1588:3:19"},"nodeType":"YulFunctionCall","src":"1588:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1580:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1364:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1378:4:19","type":""}],"src":"1213:400:19"},{"body":{"nodeType":"YulBlock","src":"1792:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1809:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1820:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1802:6:19"},"nodeType":"YulFunctionCall","src":"1802:21:19"},"nodeType":"YulExpressionStatement","src":"1802:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1843:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1854:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1839:3:19"},"nodeType":"YulFunctionCall","src":"1839:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"1859:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1832:6:19"},"nodeType":"YulFunctionCall","src":"1832:30:19"},"nodeType":"YulExpressionStatement","src":"1832:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1882:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1893:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1878:3:19"},"nodeType":"YulFunctionCall","src":"1878:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"1898:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1871:6:19"},"nodeType":"YulFunctionCall","src":"1871:60:19"},"nodeType":"YulExpressionStatement","src":"1871:60:19"},{"nodeType":"YulAssignment","src":"1940:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1952:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1963:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1948:3:19"},"nodeType":"YulFunctionCall","src":"1948:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1940:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1769:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1783:4:19","type":""}],"src":"1618:354:19"},{"body":{"nodeType":"YulBlock","src":"2151:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2168:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2179:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2161:6:19"},"nodeType":"YulFunctionCall","src":"2161:21:19"},"nodeType":"YulExpressionStatement","src":"2161:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2202:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2213:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2198:3:19"},"nodeType":"YulFunctionCall","src":"2198:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2218:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2191:6:19"},"nodeType":"YulFunctionCall","src":"2191:30:19"},"nodeType":"YulExpressionStatement","src":"2191:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2241:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2252:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2237:3:19"},"nodeType":"YulFunctionCall","src":"2237:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"2257:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2230:6:19"},"nodeType":"YulFunctionCall","src":"2230:61:19"},"nodeType":"YulExpressionStatement","src":"2230:61:19"},{"nodeType":"YulAssignment","src":"2300:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2312:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2323:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2308:3:19"},"nodeType":"YulFunctionCall","src":"2308:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2300:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2128:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2142:4:19","type":""}],"src":"1977:355:19"}]},"contents":"{\n    { }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"608060405234801561001057600080fd5b50600436106100a35760003560e01c8063734b7198116100765780638c36d02d1161005b5780638c36d02d14610128578063af7f27f41461013b578063b73bccf51461014357600080fd5b8063734b71981461010d5780637c65c38b1461012057600080fd5b80631498be2f146100a8578063369c87ca146100c357806351cfdd39146100d85780636064a01314610105575b600080fd5b6100b0610156565b6040519081526020015b60405180910390f35b6100d66100d1366004610878565b61018f565b005b6100e06102b1565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016100ba565b6100e06102e6565b6100d661011b366004610891565b610316565b6100d66104a8565b6100d6610136366004610891565b6105d2565b6100e0610733565b6100d6610151366004610891565b610763565b600061018a61018660017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b5490565b919050565b6101bd61018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461027b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ae6102a960017ffa772cc97e705cdeca11bb64152cb56987b045e50611cde5b293130495205bea6108ce565b829055565b50565b60006102e161018660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b905090565b60006102e161018660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab6108ce565b61034461018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103fd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b73ffffffffffffffffffffffffffffffffffffffff811661047a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610272565b6102ae6102a960017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b6104d661018660017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd36108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461056a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610272565b61059d61059860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61060061018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6106e76102a960017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626108ce565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b60006102e161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b61079161018660017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366108ce565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610272565b6102ae6102a960017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab6108ce565b60006020828403121561088a57600080fd5b5035919050565b6000602082840312156108a357600080fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146108c757600080fd5b9392505050565b81810381811115610908577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b9291505056fea2646970667358221220ddbd75b1361ed0de3fecb2c2dfbe192c887d0da38a90ce81e8b7ef2edea7410164736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xA3 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x734B7198 GT PUSH2 0x76 JUMPI DUP1 PUSH4 0x8C36D02D GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0x128 JUMPI DUP1 PUSH4 0xAF7F27F4 EQ PUSH2 0x13B JUMPI DUP1 PUSH4 0xB73BCCF5 EQ PUSH2 0x143 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x734B7198 EQ PUSH2 0x10D JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1498BE2F EQ PUSH2 0xA8 JUMPI DUP1 PUSH4 0x369C87CA EQ PUSH2 0xC3 JUMPI DUP1 PUSH4 0x51CFDD39 EQ PUSH2 0xD8 JUMPI DUP1 PUSH4 0x6064A013 EQ PUSH2 0x105 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB0 PUSH2 0x156 JUMP JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xD6 PUSH2 0xD1 CALLDATASIZE PUSH1 0x4 PUSH2 0x878 JUMP JUMPDEST PUSH2 0x18F JUMP JUMPDEST STOP JUMPDEST PUSH2 0xE0 PUSH2 0x2B1 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xBA JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x2E6 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x11B CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x316 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x4A8 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x136 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x5D2 JUMP JUMPDEST PUSH2 0xE0 PUSH2 0x733 JUMP JUMPDEST PUSH2 0xD6 PUSH2 0x151 CALLDATASIZE PUSH1 0x4 PUSH2 0x891 JUMP JUMPDEST PUSH2 0x763 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18A PUSH2 0x186 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1BD PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x27B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0xFA772CC97E705CDECA11BB64152CB56987B045E50611CDE5B293130495205BEA PUSH2 0x8CE JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x344 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3FD JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x47A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x4D6 PUSH2 0x186 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x56A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x59D PUSH2 0x598 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x600 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x6E7 PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2E1 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH2 0x791 PUSH2 0x186 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x8CE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x84A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x272 JUMP JUMPDEST PUSH2 0x2AE PUSH2 0x2A9 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x88A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x8A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x8C7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x908 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDD 0xBD PUSH22 0xB1361ED0DE3FECB2C2DFBE192C887D0DA38A90CE81E8 0xB7 0xEF 0x2E 0xDE 0xA7 COINBASE ADD PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"751:5086:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2533:130;;;:::i;:::-;;;160:25:19;;;148:2;133:18;2533:130:8;;;;;;;;3514:125;;;;;;:::i;:::-;;:::i;:::-;;2669:119;;;:::i;:::-;;;557:42:19;545:55;;;527:74;;515:2;500:18;2669:119:8;381:226:19;2394:133:8;;;:::i;4141:241::-;;;;;;:::i;:::-;;:::i;4451:280::-;;;:::i;3799:176::-;;;;;;:::i;:::-;;:::i;2794:130::-;;;:::i;3221:143::-;;;;;;:::i;:::-;;:::i;2533:130::-;2584:7;2618:37;1634:49;1682:1;1642:36;1634:49;:::i;:::-;5807:12;;5685:150;2618:37;2610:46;2533:130;-1:-1:-1;2533:130:8:o;3514:125::-;1938:46;1105:48;1152:1;1113:35;1105:48;:::i;1938:46::-;1924:60;;:10;:60;;;1916:109;;;;;;;1415:2:19;1916:109:8;;;1397:21:19;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1916:109:8;;;;;;;;;3590:42:::1;1634:49;1682:1;1642:36;1634:49;:::i;:::-;3628:3:::0;5477:21;;5379:135;3590:42:::1;3514:125:::0;:::o;2669:119::-;2715:7;2741:40;931:42;972:1;939:29;931:42;:::i;2741:40::-;2734:47;;2669:119;:::o;2394:133::-;2450:7;2476:44;1516:54;1569:1;1524:41;1516:54;:::i;4141:241::-;1938:46;1105:48;1152:1;1113:35;1105:48;:::i;1938:46::-;1924:60;;:10;:60;;;1916:109;;;;;;;1415:2:19;1916:109:8;;;1397:21:19;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1916:109:8;1213:400:19;1916:109:8;4236:28:::1;::::0;::::1;4228:71;;;::::0;::::1;::::0;;1820:2:19;4228:71:8::1;::::0;::::1;1802:21:19::0;1859:2;1839:18;;;1832:30;1898:32;1878:18;;;1871:60;1948:18;;4228:71:8::1;1618:354:19::0;4228:71:8::1;4309:66;1315:52;1366:1;1323:39;1315:52;:::i;4451:280::-:0;4523:50;1315:52;1366:1;1323:39;1315:52;:::i;4523:50::-;4509:64;;:10;:64;;;4501:108;;;;;;;2179:2:19;4501:108:8;;;2161:21:19;2218:2;2198:18;;;2191:30;2257:33;2237:18;;;2230:61;2308:18;;4501:108:8;1977:355:19;4501:108:8;4619:58;1105:48;1152:1;1113:35;1105:48;:::i;:::-;4666:10;5477:21;;5379:135;4619:58;4692:32;;4713:10;527:74:19;;4692:32:8;;515:2:19;500:18;4692:32:8;;;;;;;4451:280::o;3799:176::-;1938:46;1105:48;1152:1;1113:35;1105:48;:::i;1938:46::-;1924:60;;:10;:60;;;1916:109;;;;;;;1415:2:19;1916:109:8;;;1397:21:19;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1916:109:8;1213:400:19;1916:109:8;3876:51:::1;931:42;972:1;939:29;931:42;:::i;3876:51::-;3942:26;::::0;557:42:19;545:55;;527:74;;3942:26:8::1;::::0;515:2:19;500:18;3942:26:8::1;;;;;;;3799:176:::0;:::o;2794:130::-;2845:7;2871:46;1105:48;1152:1;1113:35;1105:48;:::i;3221:143::-;1938:46;1105:48;1152:1;1113:35;1105:48;:::i;1938:46::-;1924:60;;:10;:60;;;1916:109;;;;;;;1415:2:19;1916:109:8;;;1397:21:19;1454:2;1434:18;;;1427:30;1493:34;1473:18;;;1466:62;1564:6;1544:18;;;1537:34;1588:19;;1916:109:8;1213:400:19;1916:109:8;3301:56:::1;1516:54;1569:1;1524:41;1516:54;:::i;196:180:19:-:0;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:19;;196:180;-1:-1:-1;196:180:19:o;612:309::-;671:6;724:2;712:9;703:7;699:23;695:32;692:52;;;740:1;737;730:12;692:52;779:9;766:23;829:42;822:5;818:54;811:5;808:65;798:93;;887:1;884;877:12;798:93;910:5;612:309;-1:-1:-1;;;612:309:19:o;926:282::-;993:9;;;1014:11;;;1011:191;;;1058:77;1055:1;1048:88;1159:4;1156:1;1149:15;1187:4;1184:1;1177:15;1011:191;926:282;;;;:::o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","getApprovedVennPolicy()":"6064a013","getFirewall()":"51cfdd39","getFirewallAdmin()":"af7f27f4","getUserNativeFee()":"1498be2f","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198","setUserNativeFee(uint256)":"369c87ca","setVennPolicy(address)":"b73bccf5"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getApprovedVennPolicy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewall\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUserNativeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setUserNativeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"}],\"name\":\"setVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract must define a firewall contract which will manage the policies that are applied to the contract. It also must define a firewall admin which will be able to add and remove policies.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"constructor\":{\"details\":\"Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\"},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}},\"setUserNativeFee(uint256)\":{\"details\":\"Allows firewall admin to set user native fee for safeFunctionCall.\",\"params\":{\"fee\":\"native fee for the user\"}},\"setVennPolicy(address)\":{\"details\":\"Allows firewall admin to set Venn policy. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"vennPolicy\":\"address of the Venn policy\"}}},\"title\":\"Firewall Consumer Storage Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/FirewallConsumerStorage.sol\":\"FirewallConsumerStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"contracts/consumers/FirewallConsumerStorage.sol\":{\"keccak256\":\"0x0a0c07d4fd748202e9e75a238c1cfd65d0c63898c54334d4d7dba0dfff89153b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://32c531fcabbfc1c3f69e380eb37a5e1ef819bdb6dd56eef00320451c621a807d\",\"dweb:/ipfs/QmNzhvxYZfJURiaX6sd1MsJaaTPQtVTZZSYvURBGXr35oz\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0x1939d1f1b5574ce839b08dbaaa7c899aec16c19f03d182058326e1b3a8eb7269\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59dac1dab4984d5d8c1374f871ead9a887a2fcea7ce10eabb96fcd3bdd76ce0f\",\"dweb:/ipfs/QmQ6C3D1DUJT4Y5WWvTh2XQENHMqLBFvvwrNF1phZWbG9p\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol":{"SimpleUpgradeableFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint8","name":"version","type":"uint8"}],"name":"Initialized","type":"event"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallConsumerStorage","type":"address"}],"name":"setFirewallConsumerStorage","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"608060405234801561001057600080fd5b50610939806100206000396000f3fe6080604052600436106100345760003560e01c80638568b4d214610039578063af076af41461004e578063f05c85821461006e575b600080fd5b61004c610047366004610719565b6100ac565b005b34801561005a57600080fd5b5061004c6100693660046107a7565b6102f8565b34801561007a57600080fd5b50610083610423565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60006100b6610432565b905060008173ffffffffffffffffffffffffffffffffffffffff16636064a0136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012991906107cb565b905060008273ffffffffffffffffffffffffffffffffffffffff16631498be2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c91906107e8565b905080341015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f722066656500000000000000000000000000000060648201526084015b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682898960405161025d929190610801565b60006040518083038185875af1925050503d806000811461029a576040519150601f19603f3d011682016040523d82523d6000602084013e61029f565b606091505b50509050806102ad57600080fd5b6102ed3087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046692505050565b505050505050505050565b610300610494565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161022a565b6103ed6103e760017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610811565b60009055565b61042061041b60017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610811565b829055565b50565b600061042d610494565b905090565b600061042d61046260017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610811565b5490565b606061048b83836040518060600160405280602781526020016108dd6027913961055f565b90505b92915050565b60008061049f610432565b905073ffffffffffffffffffffffffffffffffffffffff81166104f0576104ea61046260017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610811565b91505090565b8073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561053b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea91906107cb565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610589919061086f565b600060405180830381855af49150503d80600081146105c4576040519150601f19603f3d011682016040523d82523d6000602084013e6105c9565b606091505b50915091506105da868383876105e4565b9695505050505050565b6060831561067a5782516000036106735773ffffffffffffffffffffffffffffffffffffffff85163b610673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b5081610684565b610684838361068c565b949350505050565b81511561069c5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a919061088b565b60008083601f8401126106e257600080fd5b50813567ffffffffffffffff8111156106fa57600080fd5b60208301915083602082850101111561071257600080fd5b9250929050565b6000806000806040858703121561072f57600080fd5b843567ffffffffffffffff8082111561074757600080fd5b610753888389016106d0565b9096509450602087013591508082111561076c57600080fd5b50610779878288016106d0565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461042057600080fd5b6000602082840312156107b957600080fd5b81356107c481610785565b9392505050565b6000602082840312156107dd57600080fd5b81516107c481610785565b6000602082840312156107fa57600080fd5b5051919050565b8183823760009101908152919050565b8181038181111561048e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60005b8381101561086657818101518382015260200161084e565b50506000910152565b6000825161088181846020870161084b565b9190910192915050565b60208152600082518060208401526108aa81604085016020870161084b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122004675e7c8b6ab60f84a78c32b938fe473d37e688b9a834af3ea5f09bdbaf81b264736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x939 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8568B4D2 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x423 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6064A013 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x105 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x7CB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1498BE2F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768206E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6976652076616C756520666F7220666565000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x25D SWAP3 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x29A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x29F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ED ADDRESS DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x466 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x300 PUSH2 0x494 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x22A JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E7 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x811 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x420 PUSH2 0x41B PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x811 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D PUSH2 0x494 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D PUSH2 0x462 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x811 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8DD PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x55F JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49F PUSH2 0x432 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4F0 JUMPI PUSH2 0x4EA PUSH2 0x462 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x811 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAF7F27F4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4EA SWAP2 SWAP1 PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x86F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x5DA DUP7 DUP4 DUP4 DUP8 PUSH2 0x5E4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x67A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x673 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x673 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x22A JUMP JUMPDEST POP DUP2 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x684 DUP4 DUP4 PUSH2 0x68C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x69C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x88B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x753 DUP9 DUP4 DUP10 ADD PUSH2 0x6D0 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 DUP8 DUP3 DUP9 ADD PUSH2 0x6D0 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7C4 DUP2 PUSH2 0x785 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7C4 DUP2 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x48E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x866 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x84E JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x881 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x84B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x8AA DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122004675E PUSH29 0x8B6AB60F84A78C32B938FE473D37E688B9A834AF3EA5F09BDBAF81B264 PUSH20 0x6F6C634300081300330000000000000000000000 ","sourceMap":"836:5664:9:-:0;;;;;;;;;;;;;;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_2469":{"entryPoint":null,"id":2469,"parameterSlots":1,"returnSlots":1},"@_getFirewallAdmin_2438":{"entryPoint":1172,"id":2438,"parameterSlots":0,"returnSlots":1},"@_getFirewallConsumerStorage_2449":{"entryPoint":1074,"id":2449,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":1676,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2459":{"entryPoint":null,"id":2459,"parameterSlots":2,"returnSlots":0},"@firewallAdmin_2329":{"entryPoint":1059,"id":2329,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":1126,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":1375,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_2319":{"entryPoint":172,"id":2319,"parameterSlots":4,"returnSlots":0},"@setFirewallConsumerStorage_2350":{"entryPoint":760,"id":2350,"parameterSlots":1,"returnSlots":0},"@verifyCallResultFromTarget_783":{"entryPoint":1508,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":1744,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":1959,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":1995,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":1817,"id":null,"parameterSlots":2,"returnSlots":4},"abi_decode_tuple_t_uint256_fromMemory":{"entryPoint":2024,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2049,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":2159,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":2187,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":2065,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":2123,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":1925,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:4923:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"86:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"135:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"144:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"147:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"137:6:19"},"nodeType":"YulFunctionCall","src":"137:12:19"},"nodeType":"YulExpressionStatement","src":"137:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"114:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"122:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"110:3:19"},"nodeType":"YulFunctionCall","src":"110:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"129:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"106:3:19"},"nodeType":"YulFunctionCall","src":"106:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"99:6:19"},"nodeType":"YulFunctionCall","src":"99:35:19"},"nodeType":"YulIf","src":"96:55:19"},{"nodeType":"YulAssignment","src":"160:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"183:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"170:12:19"},"nodeType":"YulFunctionCall","src":"170:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"160:6:19"}]},{"body":{"nodeType":"YulBlock","src":"233:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"242:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"245:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"235:6:19"},"nodeType":"YulFunctionCall","src":"235:12:19"},"nodeType":"YulExpressionStatement","src":"235:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"205:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"213:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"202:2:19"},"nodeType":"YulFunctionCall","src":"202:30:19"},"nodeType":"YulIf","src":"199:50:19"},{"nodeType":"YulAssignment","src":"258:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"274:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"282:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"270:3:19"},"nodeType":"YulFunctionCall","src":"270:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"258:8:19"}]},{"body":{"nodeType":"YulBlock","src":"339:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"348:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"351:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"341:6:19"},"nodeType":"YulFunctionCall","src":"341:12:19"},"nodeType":"YulExpressionStatement","src":"341:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"310:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"318:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"306:3:19"},"nodeType":"YulFunctionCall","src":"306:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"327:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"302:3:19"},"nodeType":"YulFunctionCall","src":"302:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"334:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"299:2:19"},"nodeType":"YulFunctionCall","src":"299:39:19"},"nodeType":"YulIf","src":"296:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"49:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"57:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"65:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"75:6:19","type":""}],"src":"14:347:19"},{"body":{"nodeType":"YulBlock","src":"491:592:19","statements":[{"body":{"nodeType":"YulBlock","src":"537:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"546:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"549:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"539:6:19"},"nodeType":"YulFunctionCall","src":"539:12:19"},"nodeType":"YulExpressionStatement","src":"539:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"512:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"521:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"508:3:19"},"nodeType":"YulFunctionCall","src":"508:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"533:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"504:3:19"},"nodeType":"YulFunctionCall","src":"504:32:19"},"nodeType":"YulIf","src":"501:52:19"},{"nodeType":"YulVariableDeclaration","src":"562:37:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"589:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"576:12:19"},"nodeType":"YulFunctionCall","src":"576:23:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"566:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"608:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"618:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"612:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"663:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"672:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"675:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"665:6:19"},"nodeType":"YulFunctionCall","src":"665:12:19"},"nodeType":"YulExpressionStatement","src":"665:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"651:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"659:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"648:2:19"},"nodeType":"YulFunctionCall","src":"648:14:19"},"nodeType":"YulIf","src":"645:34:19"},{"nodeType":"YulVariableDeclaration","src":"688:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"744:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"755:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"740:3:19"},"nodeType":"YulFunctionCall","src":"740:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"764:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"714:25:19"},"nodeType":"YulFunctionCall","src":"714:58:19"},"variables":[{"name":"value0_1","nodeType":"YulTypedName","src":"692:8:19","type":""},{"name":"value1_1","nodeType":"YulTypedName","src":"702:8:19","type":""}]},{"nodeType":"YulAssignment","src":"781:18:19","value":{"name":"value0_1","nodeType":"YulIdentifier","src":"791:8:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"781:6:19"}]},{"nodeType":"YulAssignment","src":"808:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"818:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"808:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"835:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"868:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"879:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"864:3:19"},"nodeType":"YulFunctionCall","src":"864:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"851:12:19"},"nodeType":"YulFunctionCall","src":"851:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"839:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"912:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"921:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"924:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"914:6:19"},"nodeType":"YulFunctionCall","src":"914:12:19"},"nodeType":"YulExpressionStatement","src":"914:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"898:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"908:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"895:2:19"},"nodeType":"YulFunctionCall","src":"895:16:19"},"nodeType":"YulIf","src":"892:36:19"},{"nodeType":"YulVariableDeclaration","src":"937:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"993:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1004:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"989:3:19"},"nodeType":"YulFunctionCall","src":"989:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1015:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"963:25:19"},"nodeType":"YulFunctionCall","src":"963:60:19"},"variables":[{"name":"value2_1","nodeType":"YulTypedName","src":"941:8:19","type":""},{"name":"value3_1","nodeType":"YulTypedName","src":"951:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1032:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1042:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1032:6:19"}]},{"nodeType":"YulAssignment","src":"1059:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1069:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1059:6:19"}]}]},"name":"abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"433:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"444:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"456:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"464:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"472:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"480:6:19","type":""}],"src":"366:717:19"},{"body":{"nodeType":"YulBlock","src":"1133:109:19","statements":[{"body":{"nodeType":"YulBlock","src":"1220:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1229:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1232:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1222:6:19"},"nodeType":"YulFunctionCall","src":"1222:12:19"},"nodeType":"YulExpressionStatement","src":"1222:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1156:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1167:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"1174:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1163:3:19"},"nodeType":"YulFunctionCall","src":"1163:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"1153:2:19"},"nodeType":"YulFunctionCall","src":"1153:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1146:6:19"},"nodeType":"YulFunctionCall","src":"1146:73:19"},"nodeType":"YulIf","src":"1143:93:19"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"1122:5:19","type":""}],"src":"1088:154:19"},{"body":{"nodeType":"YulBlock","src":"1317:177:19","statements":[{"body":{"nodeType":"YulBlock","src":"1363:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1372:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1375:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1365:6:19"},"nodeType":"YulFunctionCall","src":"1365:12:19"},"nodeType":"YulExpressionStatement","src":"1365:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1338:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1347:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1334:3:19"},"nodeType":"YulFunctionCall","src":"1334:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1359:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1330:3:19"},"nodeType":"YulFunctionCall","src":"1330:32:19"},"nodeType":"YulIf","src":"1327:52:19"},{"nodeType":"YulVariableDeclaration","src":"1388:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1414:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1401:12:19"},"nodeType":"YulFunctionCall","src":"1401:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1392:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1458:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1433:24:19"},"nodeType":"YulFunctionCall","src":"1433:31:19"},"nodeType":"YulExpressionStatement","src":"1433:31:19"},{"nodeType":"YulAssignment","src":"1473:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"1483:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1473:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1283:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1294:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1306:6:19","type":""}],"src":"1247:247:19"},{"body":{"nodeType":"YulBlock","src":"1600:125:19","statements":[{"nodeType":"YulAssignment","src":"1610:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1622:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1633:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1618:3:19"},"nodeType":"YulFunctionCall","src":"1618:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1610:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1652:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1667:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"1675:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1663:3:19"},"nodeType":"YulFunctionCall","src":"1663:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1645:6:19"},"nodeType":"YulFunctionCall","src":"1645:74:19"},"nodeType":"YulExpressionStatement","src":"1645:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1569:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1580:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1591:4:19","type":""}],"src":"1499:226:19"},{"body":{"nodeType":"YulBlock","src":"1811:170:19","statements":[{"body":{"nodeType":"YulBlock","src":"1857:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1866:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1869:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1859:6:19"},"nodeType":"YulFunctionCall","src":"1859:12:19"},"nodeType":"YulExpressionStatement","src":"1859:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1832:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1841:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1828:3:19"},"nodeType":"YulFunctionCall","src":"1828:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1853:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1824:3:19"},"nodeType":"YulFunctionCall","src":"1824:32:19"},"nodeType":"YulIf","src":"1821:52:19"},{"nodeType":"YulVariableDeclaration","src":"1882:29:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1901:9:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"1895:5:19"},"nodeType":"YulFunctionCall","src":"1895:16:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1886:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1945:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1920:24:19"},"nodeType":"YulFunctionCall","src":"1920:31:19"},"nodeType":"YulExpressionStatement","src":"1920:31:19"},{"nodeType":"YulAssignment","src":"1960:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"1970:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1960:6:19"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1777:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1788:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1800:6:19","type":""}],"src":"1730:251:19"},{"body":{"nodeType":"YulBlock","src":"2067:103:19","statements":[{"body":{"nodeType":"YulBlock","src":"2113:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2122:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2125:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2115:6:19"},"nodeType":"YulFunctionCall","src":"2115:12:19"},"nodeType":"YulExpressionStatement","src":"2115:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"2088:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"2097:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2084:3:19"},"nodeType":"YulFunctionCall","src":"2084:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"2109:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"2080:3:19"},"nodeType":"YulFunctionCall","src":"2080:32:19"},"nodeType":"YulIf","src":"2077:52:19"},{"nodeType":"YulAssignment","src":"2138:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2154:9:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"2148:5:19"},"nodeType":"YulFunctionCall","src":"2148:16:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2138:6:19"}]}]},"name":"abi_decode_tuple_t_uint256_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2033:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"2044:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"2056:6:19","type":""}],"src":"1986:184:19"},{"body":{"nodeType":"YulBlock","src":"2349:239:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2366:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2377:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2359:6:19"},"nodeType":"YulFunctionCall","src":"2359:21:19"},"nodeType":"YulExpressionStatement","src":"2359:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2400:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2411:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2396:3:19"},"nodeType":"YulFunctionCall","src":"2396:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2416:2:19","type":"","value":"49"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2389:6:19"},"nodeType":"YulFunctionCall","src":"2389:30:19"},"nodeType":"YulExpressionStatement","src":"2389:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2439:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2450:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2435:3:19"},"nodeType":"YulFunctionCall","src":"2435:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e6174","kind":"string","nodeType":"YulLiteral","src":"2455:34:19","type":"","value":"FirewallConsumer: Not enough nat"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2428:6:19"},"nodeType":"YulFunctionCall","src":"2428:62:19"},"nodeType":"YulExpressionStatement","src":"2428:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2510:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2521:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2506:3:19"},"nodeType":"YulFunctionCall","src":"2506:18:19"},{"hexValue":"6976652076616c756520666f7220666565","kind":"string","nodeType":"YulLiteral","src":"2526:19:19","type":"","value":"ive value for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2499:6:19"},"nodeType":"YulFunctionCall","src":"2499:47:19"},"nodeType":"YulExpressionStatement","src":"2499:47:19"},{"nodeType":"YulAssignment","src":"2555:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2567:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2578:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2563:3:19"},"nodeType":"YulFunctionCall","src":"2563:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2555:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2326:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2340:4:19","type":""}],"src":"2175:413:19"},{"body":{"nodeType":"YulBlock","src":"2740:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2763:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2768:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"2776:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"2750:12:19"},"nodeType":"YulFunctionCall","src":"2750:33:19"},"nodeType":"YulExpressionStatement","src":"2750:33:19"},{"nodeType":"YulVariableDeclaration","src":"2792:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"2806:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"2811:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2802:3:19"},"nodeType":"YulFunctionCall","src":"2802:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"2796:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"2834:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"2838:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2827:6:19"},"nodeType":"YulFunctionCall","src":"2827:13:19"},"nodeType":"YulExpressionStatement","src":"2827:13:19"},{"nodeType":"YulAssignment","src":"2849:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"2856:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"2849:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"2708:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2713:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2721:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"2732:3:19","type":""}],"src":"2593:271:19"},{"body":{"nodeType":"YulBlock","src":"3043:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3060:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3071:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3053:6:19"},"nodeType":"YulFunctionCall","src":"3053:21:19"},"nodeType":"YulExpressionStatement","src":"3053:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3094:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3105:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3090:3:19"},"nodeType":"YulFunctionCall","src":"3090:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3110:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3083:6:19"},"nodeType":"YulFunctionCall","src":"3083:30:19"},"nodeType":"YulExpressionStatement","src":"3083:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3133:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3144:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3129:3:19"},"nodeType":"YulFunctionCall","src":"3129:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"3149:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3122:6:19"},"nodeType":"YulFunctionCall","src":"3122:62:19"},"nodeType":"YulExpressionStatement","src":"3122:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3204:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3215:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3200:3:19"},"nodeType":"YulFunctionCall","src":"3200:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"3220:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3193:6:19"},"nodeType":"YulFunctionCall","src":"3193:34:19"},"nodeType":"YulExpressionStatement","src":"3193:34:19"},{"nodeType":"YulAssignment","src":"3236:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3248:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3259:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3244:3:19"},"nodeType":"YulFunctionCall","src":"3244:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3236:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3020:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3034:4:19","type":""}],"src":"2869:400:19"},{"body":{"nodeType":"YulBlock","src":"3323:233:19","statements":[{"nodeType":"YulAssignment","src":"3333:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"3345:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"3348:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"3341:3:19"},"nodeType":"YulFunctionCall","src":"3341:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"3333:4:19"}]},{"body":{"nodeType":"YulBlock","src":"3382:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3403:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3406:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3396:6:19"},"nodeType":"YulFunctionCall","src":"3396:88:19"},"nodeType":"YulExpressionStatement","src":"3396:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3504:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"3507:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3497:6:19"},"nodeType":"YulFunctionCall","src":"3497:15:19"},"nodeType":"YulExpressionStatement","src":"3497:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"3532:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"3535:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"3525:6:19"},"nodeType":"YulFunctionCall","src":"3525:15:19"},"nodeType":"YulExpressionStatement","src":"3525:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"3365:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"3371:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"3362:2:19"},"nodeType":"YulFunctionCall","src":"3362:11:19"},"nodeType":"YulIf","src":"3359:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"3305:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"3308:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"3314:4:19","type":""}],"src":"3274:282:19"},{"body":{"nodeType":"YulBlock","src":"3627:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"3637:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"3646:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"3641:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"3706:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3731:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"3736:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3727:3:19"},"nodeType":"YulFunctionCall","src":"3727:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"3750:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"3755:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3746:3:19"},"nodeType":"YulFunctionCall","src":"3746:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3740:5:19"},"nodeType":"YulFunctionCall","src":"3740:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3720:6:19"},"nodeType":"YulFunctionCall","src":"3720:39:19"},"nodeType":"YulExpressionStatement","src":"3720:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3667:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"3670:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"3664:2:19"},"nodeType":"YulFunctionCall","src":"3664:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"3678:19:19","statements":[{"nodeType":"YulAssignment","src":"3680:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"3689:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"3692:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3685:3:19"},"nodeType":"YulFunctionCall","src":"3685:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"3680:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"3660:3:19","statements":[]},"src":"3656:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"3789:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"3794:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3785:3:19"},"nodeType":"YulFunctionCall","src":"3785:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"3803:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3778:6:19"},"nodeType":"YulFunctionCall","src":"3778:27:19"},"nodeType":"YulExpressionStatement","src":"3778:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"3605:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"3610:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"3615:6:19","type":""}],"src":"3561:250:19"},{"body":{"nodeType":"YulBlock","src":"3953:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"3963:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"3983:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"3977:5:19"},"nodeType":"YulFunctionCall","src":"3977:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"3967:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4038:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4046:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4034:3:19"},"nodeType":"YulFunctionCall","src":"4034:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"4053:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4058:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"3999:34:19"},"nodeType":"YulFunctionCall","src":"3999:66:19"},"nodeType":"YulExpressionStatement","src":"3999:66:19"},{"nodeType":"YulAssignment","src":"4074:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4085:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4090:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4081:3:19"},"nodeType":"YulFunctionCall","src":"4081:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4074:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3929:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3934:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3945:3:19","type":""}],"src":"3816:287:19"},{"body":{"nodeType":"YulBlock","src":"4282:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4299:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4310:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4292:6:19"},"nodeType":"YulFunctionCall","src":"4292:21:19"},"nodeType":"YulExpressionStatement","src":"4292:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4333:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4344:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4329:3:19"},"nodeType":"YulFunctionCall","src":"4329:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4349:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4322:6:19"},"nodeType":"YulFunctionCall","src":"4322:30:19"},"nodeType":"YulExpressionStatement","src":"4322:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4372:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4383:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4368:3:19"},"nodeType":"YulFunctionCall","src":"4368:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"4388:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4361:6:19"},"nodeType":"YulFunctionCall","src":"4361:59:19"},"nodeType":"YulExpressionStatement","src":"4361:59:19"},{"nodeType":"YulAssignment","src":"4429:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4441:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4452:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4437:3:19"},"nodeType":"YulFunctionCall","src":"4437:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4429:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4259:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4273:4:19","type":""}],"src":"4108:353:19"},{"body":{"nodeType":"YulBlock","src":"4587:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4604:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4615:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4597:6:19"},"nodeType":"YulFunctionCall","src":"4597:21:19"},"nodeType":"YulExpressionStatement","src":"4597:21:19"},{"nodeType":"YulVariableDeclaration","src":"4627:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4647:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4641:5:19"},"nodeType":"YulFunctionCall","src":"4641:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4631:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4674:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4685:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4670:3:19"},"nodeType":"YulFunctionCall","src":"4670:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"4690:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4663:6:19"},"nodeType":"YulFunctionCall","src":"4663:34:19"},"nodeType":"YulExpressionStatement","src":"4663:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4745:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4753:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4741:3:19"},"nodeType":"YulFunctionCall","src":"4741:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4762:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4773:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4758:3:19"},"nodeType":"YulFunctionCall","src":"4758:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"4778:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4706:34:19"},"nodeType":"YulFunctionCall","src":"4706:79:19"},"nodeType":"YulExpressionStatement","src":"4706:79:19"},{"nodeType":"YulAssignment","src":"4794:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4810:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"4829:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4837:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4825:3:19"},"nodeType":"YulFunctionCall","src":"4825:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"4842:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4821:3:19"},"nodeType":"YulFunctionCall","src":"4821:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4806:3:19"},"nodeType":"YulFunctionCall","src":"4806:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"4912:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4802:3:19"},"nodeType":"YulFunctionCall","src":"4802:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4794:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4556:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4567:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4578:4:19","type":""}],"src":"4466:455:19"}]},"contents":"{\n    { }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value0_1, value1_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value0 := value0_1\n        value1 := value1_1\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value2_1, value3_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value2 := value2_1\n        value3 := value3_1\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := mload(headStart)\n    }\n    function abi_encode_tuple_t_stringliteral_07febfd97e0fd373aad0774c26ec4d8253768884ed8a5ab3a228f46a0ba43d3c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 49)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough nat\")\n        mstore(add(headStart, 96), \"ive value for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100345760003560e01c80638568b4d214610039578063af076af41461004e578063f05c85821461006e575b600080fd5b61004c610047366004610719565b6100ac565b005b34801561005a57600080fd5b5061004c6100693660046107a7565b6102f8565b34801561007a57600080fd5b50610083610423565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b60006100b6610432565b905060008173ffffffffffffffffffffffffffffffffffffffff16636064a0136040518163ffffffff1660e01b8152600401602060405180830381865afa158015610105573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061012991906107cb565b905060008273ffffffffffffffffffffffffffffffffffffffff16631498be2f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610178573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061019c91906107e8565b905080341015610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603160248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768206e617460448201527f6976652076616c756520666f722066656500000000000000000000000000000060648201526084015b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682898960405161025d929190610801565b60006040518083038185875af1925050503d806000811461029a576040519150601f19603f3d011682016040523d82523d6000602084013e61029f565b606091505b50509050806102ad57600080fd5b6102ed3087878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061046692505050565b505050505050505050565b610300610494565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e00000000000000000000000000000000000000000000000000000000606482015260840161022a565b6103ed6103e760017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610811565b60009055565b61042061041b60017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610811565b829055565b50565b600061042d610494565b905090565b600061042d61046260017f7ffa9b40ff30ebf8641c7bc9a690e086033cb7145678974a167b48d9033ba95d610811565b5490565b606061048b83836040518060600160405280602781526020016108dd6027913961055f565b90505b92915050565b60008061049f610432565b905073ffffffffffffffffffffffffffffffffffffffff81166104f0576104ea61046260017f8e3c00479826132de4d9fbea35ecc012d08897d0189005139e3f3edc7ccc966d610811565b91505090565b8073ffffffffffffffffffffffffffffffffffffffff1663af7f27f46040518163ffffffff1660e01b8152600401602060405180830381865afa15801561053b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ea91906107cb565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610589919061086f565b600060405180830381855af49150503d80600081146105c4576040519150601f19603f3d011682016040523d82523d6000602084013e6105c9565b606091505b50915091506105da868383876105e4565b9695505050505050565b6060831561067a5782516000036106735773ffffffffffffffffffffffffffffffffffffffff85163b610673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161022a565b5081610684565b610684838361068c565b949350505050565b81511561069c5781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161022a919061088b565b60008083601f8401126106e257600080fd5b50813567ffffffffffffffff8111156106fa57600080fd5b60208301915083602082850101111561071257600080fd5b9250929050565b6000806000806040858703121561072f57600080fd5b843567ffffffffffffffff8082111561074757600080fd5b610753888389016106d0565b9096509450602087013591508082111561076c57600080fd5b50610779878288016106d0565b95989497509550505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461042057600080fd5b6000602082840312156107b957600080fd5b81356107c481610785565b9392505050565b6000602082840312156107dd57600080fd5b81516107c481610785565b6000602082840312156107fa57600080fd5b5051919050565b8183823760009101908152919050565b8181038181111561048e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60005b8381101561086657818101518382015260200161084e565b50506000910152565b6000825161088181846020870161084b565b9190910192915050565b60208152600082518060208401526108aa81604085016020870161084b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122004675e7c8b6ab60f84a78c32b938fe473d37e688b9a834af3ea5f09bdbaf81b264736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x34 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8568B4D2 EQ PUSH2 0x39 JUMPI DUP1 PUSH4 0xAF076AF4 EQ PUSH2 0x4E JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x6E JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x4C PUSH2 0x47 CALLDATASIZE PUSH1 0x4 PUSH2 0x719 JUMP JUMPDEST PUSH2 0xAC JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C PUSH2 0x69 CALLDATASIZE PUSH1 0x4 PUSH2 0x7A7 JUMP JUMPDEST PUSH2 0x2F8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x83 PUSH2 0x423 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 PUSH2 0xB6 PUSH2 0x432 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6064A013 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x105 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x129 SWAP2 SWAP1 PUSH2 0x7CB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x1498BE2F PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x178 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x19C SWAP2 SWAP1 PUSH2 0x7E8 JUMP JUMPDEST SWAP1 POP DUP1 CALLVALUE LT ISZERO PUSH2 0x233 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x31 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768206E6174 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6976652076616C756520666F7220666565000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH2 0x25D SWAP3 SWAP2 SWAP1 PUSH2 0x801 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x29A JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x29F JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2ED ADDRESS DUP8 DUP8 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x466 SWAP3 POP POP POP JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x300 PUSH2 0x494 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x3B9 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x22A JUMP JUMPDEST PUSH2 0x3ED PUSH2 0x3E7 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x811 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x420 PUSH2 0x41B PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x811 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D PUSH2 0x494 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x42D PUSH2 0x462 PUSH1 0x1 PUSH32 0x7FFA9B40FF30EBF8641C7BC9A690E086033CB7145678974A167B48D9033BA95D PUSH2 0x811 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x48B DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x8DD PUSH1 0x27 SWAP2 CODECOPY PUSH2 0x55F JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x49F PUSH2 0x432 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x4F0 JUMPI PUSH2 0x4EA PUSH2 0x462 PUSH1 0x1 PUSH32 0x8E3C00479826132DE4D9FBEA35ECC012D08897D0189005139E3F3EDC7CCC966D PUSH2 0x811 JUMP JUMPDEST SWAP2 POP POP SWAP1 JUMP JUMPDEST DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAF7F27F4 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x53B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4EA SWAP2 SWAP1 PUSH2 0x7CB JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0x589 SWAP2 SWAP1 PUSH2 0x86F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x5C4 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x5C9 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x5DA DUP7 DUP4 DUP4 DUP8 PUSH2 0x5E4 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x67A JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0x673 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0x673 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x22A JUMP JUMPDEST POP DUP2 PUSH2 0x684 JUMP JUMPDEST PUSH2 0x684 DUP4 DUP4 PUSH2 0x68C JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0x69C JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x22A SWAP2 SWAP1 PUSH2 0x88B JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x712 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x40 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x72F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP5 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x747 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x753 DUP9 DUP4 DUP10 ADD PUSH2 0x6D0 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x76C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x779 DUP8 DUP3 DUP9 ADD PUSH2 0x6D0 JUMP JUMPDEST SWAP6 SWAP9 SWAP5 SWAP8 POP SWAP6 POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x7C4 DUP2 PUSH2 0x785 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x7C4 DUP2 PUSH2 0x785 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x7FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x48E JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x866 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x84E JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x881 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x84B JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x8AA DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x84B JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122004675E PUSH29 0x8B6AB60F84A78C32B938FE473D37E688B9A834AF3EA5F09BDBAF81B264 PUSH20 0x6F6C634300081300330000000000000000000000 ","sourceMap":"836:5664:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3336:673;;;;;;:::i;:::-;;:::i;:::-;;4186:279;;;;;;;;;;-1:-1:-1;4186:279:9;;;;;:::i;:::-;;:::i;4080:100::-;;;;;;;;;;;;;:::i;:::-;;;1675:42:19;1663:55;;;1645:74;;1633:2;1618:18;4080:100:9;;;;;;;3336:673;3466:31;3500:29;:27;:29::i;:::-;3466:63;;3539:18;3585:23;3560:71;;;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3539:94;;3643:21;3692:23;3667:66;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3643:92;;3766:13;3753:9;:26;;3745:88;;;;;;;2377:2:19;3745:88:9;;;2359:21:19;2416:2;2396:18;;;2389:30;2455:34;2435:18;;;2428:62;2526:19;2506:18;;;2499:47;2563:19;;3745:88:9;;;;;;;;;3844:12;3861:10;:15;;3884:13;3899:17;;3861:56;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3843:74;;;3935:7;3927:16;;;;;;3953:49;3990:4;3997;;3953:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3953:28:9;;-1:-1:-1;;;3953:49:9:i;:::-;;3456:553;;;;3336:673;;;;:::o;4186:279::-;2636:19;:17;:19::i;:::-;2622:33;;:10;:33;;;2614:82;;;;;;;3071:2:19;2614:82:9;;;3053:21:19;3110:2;3090:18;;;3083:30;3149:34;3129:18;;;3122:62;3220:6;3200:18;;;3193:34;3244:19;;2614:82:9;2869:400:19;2614:82:9;4293:80:::1;1202:78;1279:1;1210:65;1202:78;:::i;:::-;1194:87;6126:23:::0;;6024:141;4293:80:::1;4383:75;1051:59;1109:1;1059:46;1051:59;:::i;:::-;4433:24:::0;6126:23;;6024:141;4383:75:::1;4186:279:::0;:::o;4080:100::-;4128:7;4154:19;:17;:19::i;:::-;4147:26;;4080:100;:::o;5710:144::-;5772:7;5798:49;1051:59;1109:1;1059:46;1051:59;:::i;:::-;6469:12;;6341:156;6674:198:2;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;;6674:198;;;;;:::o;5250:378:9:-;5302:7;5321:31;5355:29;:27;:29::i;:::-;5321:63;-1:-1:-1;5398:37:9;;;5394:143;;5458:68;1202:78;1279:1;1210:65;1202:78;:::i;5458:68::-;5451:75;;;5250:378;:::o;5394:143::-;5578:23;5553:66;;;:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7058:325:2:-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;4310:2:19;8113:60:2;;;4292:21:19;4349:2;4329:18;;;4322:30;4388:31;4368:18;;;4361:59;4437:18;;8113:60:2;4108:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:347:19:-;65:8;75:6;129:3;122:4;114:6;110:17;106:27;96:55;;147:1;144;137:12;96:55;-1:-1:-1;170:20:19;;213:18;202:30;;199:50;;;245:1;242;235:12;199:50;282:4;274:6;270:17;258:29;;334:3;327:4;318:6;310;306:19;302:30;299:39;296:59;;;351:1;348;341:12;296:59;14:347;;;;;:::o;366:717::-;456:6;464;472;480;533:2;521:9;512:7;508:23;504:32;501:52;;;549:1;546;539:12;501:52;589:9;576:23;618:18;659:2;651:6;648:14;645:34;;;675:1;672;665:12;645:34;714:58;764:7;755:6;744:9;740:22;714:58;:::i;:::-;791:8;;-1:-1:-1;688:84:19;-1:-1:-1;879:2:19;864:18;;851:32;;-1:-1:-1;895:16:19;;;892:36;;;924:1;921;914:12;892:36;;963:60;1015:7;1004:8;993:9;989:24;963:60;:::i;:::-;366:717;;;;-1:-1:-1;1042:8:19;-1:-1:-1;;;;366:717:19:o;1088:154::-;1174:42;1167:5;1163:54;1156:5;1153:65;1143:93;;1232:1;1229;1222:12;1247:247;1306:6;1359:2;1347:9;1338:7;1334:23;1330:32;1327:52;;;1375:1;1372;1365:12;1327:52;1414:9;1401:23;1433:31;1458:5;1433:31;:::i;:::-;1483:5;1247:247;-1:-1:-1;;;1247:247:19:o;1730:251::-;1800:6;1853:2;1841:9;1832:7;1828:23;1824:32;1821:52;;;1869:1;1866;1859:12;1821:52;1901:9;1895:16;1920:31;1945:5;1920:31;:::i;1986:184::-;2056:6;2109:2;2097:9;2088:7;2084:23;2080:32;2077:52;;;2125:1;2122;2115:12;2077:52;-1:-1:-1;2148:16:19;;1986:184;-1:-1:-1;1986:184:19:o;2593:271::-;2776:6;2768;2763:3;2750:33;2732:3;2802:16;;2827:13;;;2802:16;2593:271;-1:-1:-1;2593:271:19:o;3274:282::-;3341:9;;;3362:11;;;3359:191;;;3406:77;3403:1;3396:88;3507:4;3504:1;3497:15;3535:4;3532:1;3525:15;3561:250;3646:1;3656:113;3670:6;3667:1;3664:13;3656:113;;;3746:11;;;3740:18;3727:11;;;3720:39;3692:2;3685:10;3656:113;;;-1:-1:-1;;3803:1:19;3785:16;;3778:27;3561:250::o;3816:287::-;3945:3;3983:6;3977:13;3999:66;4058:6;4053:3;4046:4;4038:6;4034:17;3999:66;:::i;:::-;4081:16;;;;;3816:287;-1:-1:-1;;3816:287:19:o;4466:455::-;4615:2;4604:9;4597:21;4578:4;4647:6;4641:13;4690:6;4685:2;4674:9;4670:18;4663:34;4706:79;4778:6;4773:2;4762:9;4758:18;4753:2;4745:6;4741:15;4706:79;:::i;:::-;4837:2;4825:15;4842:66;4821:88;4806:104;;;;4912:2;4802:113;;4466:455;-1:-1:-1;;4466:455:19:o"},"methodIdentifiers":{"firewallAdmin()":"f05c8582","safeFunctionCall(bytes,bytes)":"8568b4d2","setFirewallConsumerStorage(address)":"af076af4"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallConsumerStorage\",\"type\":\"address\"}],\"name\":\"setFirewallConsumerStorage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract is the most minimal upgradeable contract that implements the FirewallConsumer interface.\",\"events\":{\"Initialized(uint8)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals. NOTE: If userNativeFee is non zero, functions using this must take into account that the value received will be slightly less than msg.value due to the fee.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}}},\"title\":\"Firewall Minimal Upgradeable Consumer Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol\":\"SimpleUpgradeableFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol\":{\"keccak256\":\"0x4b74915ee8672b0392f67c48eecfc54852fc36e5fb4e75b59262db828aacfed0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://312af1ff0ab164fb4c5dc39a6bffde4737a3a5a8cf40eb368c9ec4dee154e999\",\"dweb:/ipfs/QmNefXdCcuAaxhSsamwCSN5PPh6jzwREMEf7nGmSvGqw3y\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]},\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0x1939d1f1b5574ce839b08dbaaa7c899aec16c19f03d182058326e1b3a8eb7269\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59dac1dab4984d5d8c1374f871ead9a887a2fcea7ce10eabb96fcd3bdd76ce0f\",\"dweb:/ipfs/QmQ6C3D1DUJT4Y5WWvTh2XQENHMqLBFvvwrNF1phZWbG9p\"]}},\"version\":1}","storageLayout":{"storage":[{"astId":6,"contract":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol:SimpleUpgradeableFirewallConsumer","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":9,"contract":"contracts/consumers/SimpleUpgradeableFirewallConsumer.sol:SimpleUpgradeableFirewallConsumer","label":"_initializing","offset":1,"slot":"0","type":"t_bool"}],"types":{"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}}}},"contracts/consumers/VennFirewallConsumer.sol":{"VennFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"userNativeFee","type":"uint256"},{"internalType":"bytes","name":"proxyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"attestationCenterProxy","type":"address"}],"name":"setAttestationCenterProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_2701":{"entryPoint":null,"id":2701,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2959":{"entryPoint":null,"id":2959,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_2978":{"entryPoint":null,"id":2978,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":227,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:19","statements":[{"nodeType":"YulAssignment","src":"73:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:19"},"nodeType":"YulFunctionCall","src":"81:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:19"}]},{"body":{"nodeType":"YulBlock","src":"122:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:19"},"nodeType":"YulFunctionCall","src":"136:31:19"},"nodeType":"YulExpressionStatement","src":"136:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:19"},"nodeType":"YulFunctionCall","src":"180:15:19"},"nodeType":"YulExpressionStatement","src":"180:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:19"},"nodeType":"YulFunctionCall","src":"208:15:19"},"nodeType":"YulExpressionStatement","src":"208:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:19"},"nodeType":"YulFunctionCall","src":"102:11:19"},"nodeType":"YulIf","src":"99:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:19","type":""}],"src":"14:225:19"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"608060405234801561001057600080fd5b5060003361004761004260017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f6626100e3565b839055565b61007a61007560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c9741366100e3565b829055565b6100ae6100a860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a36100e3565b60019055565b6100dc6100a860017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e20406100e3565b505061010a565b8181038181111561010457634e487b7160e01b600052601160045260246000fd5b92915050565b610eda806101196000396000f3fe6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100c1578063cb09f61f146100e1578063f05c8582146100f457600080fd5b806354222e6c1461006a578063734b71981461008c5780637c65c38b146100ac575b600080fd5b34801561007657600080fd5b5061008a610085366004610ca9565b610132565b005b34801561009857600080fd5b5061008a6100a7366004610ca9565b6102a7565b3480156100b857600080fd5b5061008a610439565b3480156100cd57600080fd5b5061008a6100dc366004610ca9565b610563565b61008a6100ef366004610d28565b6106c4565b34801561010057600080fd5b506101096108de565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61016461016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161561027157610268817f0c908cff00000000000000000000000000000000000000000000000000000000610913565b61027157600080fd5b6102a461029f60017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b829055565b50565b6102d561016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b73ffffffffffffffffffffffffffffffffffffffff811661040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610219565b6102a461029f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b61046761016060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610219565b61052e61052960017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61059161016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b61067861029f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610da2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b84341015610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676860448201527f2045544820666f722066656500000000000000000000000000000000000000006064820152608401610219565b61075d856109e4565b600061078d61016060017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b905060008173ffffffffffffffffffffffffffffffffffffffff168787876040516107b9929190610ddc565b60006040518083038185875af1925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b505090508061088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c60448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610219565b6108cc3085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7492505050565b506108d5610aa0565b50505050505050565b600061090e61016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cb575060208210155b80156109d75750600081115b9450505050505b92915050565b610a1261052960017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b610a46610a4060017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b60029055565b6102a461029f60017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b6060610a998383604051806060016040528060278152602001610e7e60279139610b38565b9392505050565b610ad4610ace60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b60019055565b610b02610ace60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b610b36610b3060017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b60009055565b565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610b629190610e10565b600060405180830381855af49150503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b5091509150610bb386838387610bbd565b9695505050505050565b60608315610c53578251600003610c4c5773ffffffffffffffffffffffffffffffffffffffff85163b610c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610219565b5081610c5d565b610c5d8383610c65565b949350505050565b815115610c755781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102199190610e2c565b600060208284031215610cbb57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a9957600080fd5b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600060608688031215610d4057600080fd5b85359450602086013567ffffffffffffffff80821115610d5f57600080fd5b610d6b89838a01610cdf565b90965094506040880135915080821115610d8457600080fd5b50610d9188828901610cdf565b969995985093965092949392505050565b818103818111156109de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610e07578181015183820152602001610def565b50506000910152565b60008251610e22818460208701610dec565b9190910192915050565b6020815260008251806020840152610e4b816040850160208701610dec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cac4df4f2317a1c47dad25ebd6a1a410379523f40e9ddec826e76558da0276f564736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 CALLER PUSH2 0x47 PUSH2 0x42 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xE3 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x7A PUSH2 0x75 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xE3 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xAE PUSH2 0xA8 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xE3 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xDC PUSH2 0xA8 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xE3 JUMP JUMPDEST POP POP PUSH2 0x10A JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x104 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEDA DUP1 PUSH2 0x119 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x54222E6C EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x439 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xD28 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x271 JUMPI PUSH2 0x268 DUP2 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x160 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x529 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x678 PUSH2 0x29F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP5 CALLVALUE LT ISZERO PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2045544820666F72206665650000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x75D DUP6 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH2 0x160 PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7B9 SWAP3 SWAP2 SWAP1 PUSH2 0xDDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x88C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A2050726F78792063616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206661696C656400000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x8CC ADDRESS DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xA74 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x8D5 PUSH2 0xAA0 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90E PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9CB JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9D7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA12 PUSH2 0x529 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xA46 PUSH2 0xA40 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xB38 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0xACE PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB02 PUSH2 0xACE PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xB36 PUSH2 0xB30 PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xB62 SWAP2 SWAP1 PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xBB3 DUP7 DUP4 DUP4 DUP8 PUSH2 0xBBD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xC53 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xC4C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST POP DUP2 PUSH2 0xC5D JUMP JUMPDEST PUSH2 0xC5D DUP4 DUP4 PUSH2 0xC65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC75 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6B DUP10 DUP4 DUP11 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD91 DUP9 DUP3 DUP10 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE07 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE22 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xE4B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220CAC4DF 0x4F 0x23 OR LOG1 0xC4 PUSH30 0xAD25EBD6A1A410379523F40E9DDEC826E76558DA0276F564736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"514:85:10:-:0;;;;;;;;;;;;-1:-1:-1;580:1:10;584:10;3594:51:11;1211:42;1252:1;1219:29;1211:42;:::i;:::-;3635:9;7663:23;;7561:141;3594:51;3655:62;1385:48;1432:1;1393:35;1385:48;:::i;:::-;3702:14;7663:23;;7561:141;3655:62;3727:56;1954:54;2007:1;1962:41;1954:54;:::i;:::-;3780:1;7663:23;;7561:141;3727:56;3793:48;2079:57;2135:1;2087:44;2079:57;:::i;3793:48::-;3507:341;;514:85:10;;14:225:19;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;514:85:10;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_deInitSafeFunctionCallFlags_2800":{"entryPoint":2720,"id":2800,"parameterSlots":0,"returnSlots":0},"@_getAddressBySlot_2969":{"entryPoint":null,"id":2969,"parameterSlots":1,"returnSlots":1},"@_initSafeFunctionCallFlags_2778":{"entryPoint":2532,"id":2778,"parameterSlots":1,"returnSlots":0},"@_revert_827":{"entryPoint":3173,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2959":{"entryPoint":null,"id":2959,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_2978":{"entryPoint":null,"id":2978,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_2908":{"entryPoint":1081,"id":2908,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_2840":{"entryPoint":2270,"id":2840,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2676,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":2872,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_2756":{"entryPoint":1732,"id":2756,"parameterSlots":5,"returnSlots":0},"@setAttestationCenterProxy_2829":{"entryPoint":306,"id":2829,"parameterSlots":1,"returnSlots":0},"@setFirewallAdmin_2882":{"entryPoint":679,"id":2882,"parameterSlots":1,"returnSlots":0},"@setFirewall_2858":{"entryPoint":1379,"id":2858,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2323,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3005,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3295,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3368,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3548,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3600,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3628,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3490,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3564,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5824:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:239:19","statements":[{"body":{"nodeType":"YulBlock","src":"130:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"139:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"142:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:19"},"nodeType":"YulFunctionCall","src":"132:12:19"},"nodeType":"YulExpressionStatement","src":"132:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:19"},"nodeType":"YulFunctionCall","src":"101:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:19"},"nodeType":"YulFunctionCall","src":"97:32:19"},"nodeType":"YulIf","src":"94:52:19"},{"nodeType":"YulVariableDeclaration","src":"155:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"181:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"168:12:19"},"nodeType":"YulFunctionCall","src":"168:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"159:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"277:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"286:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"289:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"279:6:19"},"nodeType":"YulFunctionCall","src":"279:12:19"},"nodeType":"YulExpressionStatement","src":"279:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"213:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"224:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"231:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"220:3:19"},"nodeType":"YulFunctionCall","src":"220:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"210:2:19"},"nodeType":"YulFunctionCall","src":"210:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"203:6:19"},"nodeType":"YulFunctionCall","src":"203:73:19"},"nodeType":"YulIf","src":"200:93:19"},{"nodeType":"YulAssignment","src":"302:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"312:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"302:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:19","type":""}],"src":"14:309:19"},{"body":{"nodeType":"YulBlock","src":"400:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"449:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"458:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"461:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"451:6:19"},"nodeType":"YulFunctionCall","src":"451:12:19"},"nodeType":"YulExpressionStatement","src":"451:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"428:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"436:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"424:3:19"},"nodeType":"YulFunctionCall","src":"424:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"443:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:19"},"nodeType":"YulFunctionCall","src":"420:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"413:6:19"},"nodeType":"YulFunctionCall","src":"413:35:19"},"nodeType":"YulIf","src":"410:55:19"},{"nodeType":"YulAssignment","src":"474:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"497:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"484:12:19"},"nodeType":"YulFunctionCall","src":"484:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"474:6:19"}]},{"body":{"nodeType":"YulBlock","src":"547:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"556:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"559:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"549:6:19"},"nodeType":"YulFunctionCall","src":"549:12:19"},"nodeType":"YulExpressionStatement","src":"549:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"519:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"527:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"516:2:19"},"nodeType":"YulFunctionCall","src":"516:30:19"},"nodeType":"YulIf","src":"513:50:19"},{"nodeType":"YulAssignment","src":"572:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"588:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"596:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"584:3:19"},"nodeType":"YulFunctionCall","src":"584:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"572:8:19"}]},{"body":{"nodeType":"YulBlock","src":"653:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"662:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"655:6:19"},"nodeType":"YulFunctionCall","src":"655:12:19"},"nodeType":"YulExpressionStatement","src":"655:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"624:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"632:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"620:3:19"},"nodeType":"YulFunctionCall","src":"620:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"641:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"616:3:19"},"nodeType":"YulFunctionCall","src":"616:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"648:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"613:2:19"},"nodeType":"YulFunctionCall","src":"613:39:19"},"nodeType":"YulIf","src":"610:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"363:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"371:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"379:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"389:6:19","type":""}],"src":"328:347:19"},{"body":{"nodeType":"YulBlock","src":"822:643:19","statements":[{"body":{"nodeType":"YulBlock","src":"868:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"877:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"880:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"870:6:19"},"nodeType":"YulFunctionCall","src":"870:12:19"},"nodeType":"YulExpressionStatement","src":"870:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"843:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"852:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"839:3:19"},"nodeType":"YulFunctionCall","src":"839:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"864:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"835:3:19"},"nodeType":"YulFunctionCall","src":"835:32:19"},"nodeType":"YulIf","src":"832:52:19"},{"nodeType":"YulAssignment","src":"893:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"916:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"903:12:19"},"nodeType":"YulFunctionCall","src":"903:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"893:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"935:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"966:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"977:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"962:3:19"},"nodeType":"YulFunctionCall","src":"962:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"949:12:19"},"nodeType":"YulFunctionCall","src":"949:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"939:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"990:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"1000:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"994:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1045:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1054:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1057:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1047:6:19"},"nodeType":"YulFunctionCall","src":"1047:12:19"},"nodeType":"YulExpressionStatement","src":"1047:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1033:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1041:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1030:2:19"},"nodeType":"YulFunctionCall","src":"1030:14:19"},"nodeType":"YulIf","src":"1027:34:19"},{"nodeType":"YulVariableDeclaration","src":"1070:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1137:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:19"},"nodeType":"YulFunctionCall","src":"1122:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1146:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1096:25:19"},"nodeType":"YulFunctionCall","src":"1096:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"1074:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"1084:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1163:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1173:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1163:6:19"}]},{"nodeType":"YulAssignment","src":"1190:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1200:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1190:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1217:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1250:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1261:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1246:3:19"},"nodeType":"YulFunctionCall","src":"1246:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1233:12:19"},"nodeType":"YulFunctionCall","src":"1233:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1221:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1294:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1303:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1306:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1296:6:19"},"nodeType":"YulFunctionCall","src":"1296:12:19"},"nodeType":"YulExpressionStatement","src":"1296:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1280:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1290:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1277:2:19"},"nodeType":"YulFunctionCall","src":"1277:16:19"},"nodeType":"YulIf","src":"1274:36:19"},{"nodeType":"YulVariableDeclaration","src":"1319:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1375:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1386:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1371:3:19"},"nodeType":"YulFunctionCall","src":"1371:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1397:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1345:25:19"},"nodeType":"YulFunctionCall","src":"1345:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1323:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1333:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1414:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1424:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1414:6:19"}]},{"nodeType":"YulAssignment","src":"1441:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1451:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1441:6:19"}]}]},"name":"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"756:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"767:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"779:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"787:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"795:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"803:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"811:6:19","type":""}],"src":"680:785:19"},{"body":{"nodeType":"YulBlock","src":"1571:125:19","statements":[{"nodeType":"YulAssignment","src":"1581:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1604:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:19"},"nodeType":"YulFunctionCall","src":"1589:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1581:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1623:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1638:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"1646:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1634:3:19"},"nodeType":"YulFunctionCall","src":"1634:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1616:6:19"},"nodeType":"YulFunctionCall","src":"1616:74:19"},"nodeType":"YulExpressionStatement","src":"1616:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1540:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1551:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1562:4:19","type":""}],"src":"1470:226:19"},{"body":{"nodeType":"YulBlock","src":"1750:233:19","statements":[{"nodeType":"YulAssignment","src":"1760:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1772:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"1775:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1768:3:19"},"nodeType":"YulFunctionCall","src":"1768:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"1760:4:19"}]},{"body":{"nodeType":"YulBlock","src":"1809:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1830:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1833:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1823:6:19"},"nodeType":"YulFunctionCall","src":"1823:88:19"},"nodeType":"YulExpressionStatement","src":"1823:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:19"},"nodeType":"YulFunctionCall","src":"1924:15:19"},"nodeType":"YulExpressionStatement","src":"1924:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:19"},"nodeType":"YulFunctionCall","src":"1952:15:19"},"nodeType":"YulExpressionStatement","src":"1952:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"1792:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"1798:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1789:2:19"},"nodeType":"YulFunctionCall","src":"1789:11:19"},"nodeType":"YulIf","src":"1786:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1732:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"1735:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"1741:4:19","type":""}],"src":"1701:282:19"},{"body":{"nodeType":"YulBlock","src":"2162:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2179:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2190:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2172:6:19"},"nodeType":"YulFunctionCall","src":"2172:21:19"},"nodeType":"YulExpressionStatement","src":"2172:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2213:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2224:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2209:3:19"},"nodeType":"YulFunctionCall","src":"2209:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2229:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2202:6:19"},"nodeType":"YulFunctionCall","src":"2202:30:19"},"nodeType":"YulExpressionStatement","src":"2202:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2252:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2263:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2248:3:19"},"nodeType":"YulFunctionCall","src":"2248:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"2268:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2241:6:19"},"nodeType":"YulFunctionCall","src":"2241:62:19"},"nodeType":"YulExpressionStatement","src":"2241:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2323:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2334:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2319:3:19"},"nodeType":"YulFunctionCall","src":"2319:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"2339:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2312:6:19"},"nodeType":"YulFunctionCall","src":"2312:34:19"},"nodeType":"YulExpressionStatement","src":"2312:34:19"},{"nodeType":"YulAssignment","src":"2355:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2367:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2378:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2363:3:19"},"nodeType":"YulFunctionCall","src":"2363:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2355:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2139:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2153:4:19","type":""}],"src":"1988:400:19"},{"body":{"nodeType":"YulBlock","src":"2567:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2584:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2595:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2577:6:19"},"nodeType":"YulFunctionCall","src":"2577:21:19"},"nodeType":"YulExpressionStatement","src":"2577:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2618:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2629:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2614:3:19"},"nodeType":"YulFunctionCall","src":"2614:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2634:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2607:6:19"},"nodeType":"YulFunctionCall","src":"2607:30:19"},"nodeType":"YulExpressionStatement","src":"2607:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2668:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2653:3:19"},"nodeType":"YulFunctionCall","src":"2653:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"2673:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2646:6:19"},"nodeType":"YulFunctionCall","src":"2646:60:19"},"nodeType":"YulExpressionStatement","src":"2646:60:19"},{"nodeType":"YulAssignment","src":"2715:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2738:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:19"},"nodeType":"YulFunctionCall","src":"2723:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2715:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2544:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2558:4:19","type":""}],"src":"2393:354:19"},{"body":{"nodeType":"YulBlock","src":"2926:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2943:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2954:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2936:6:19"},"nodeType":"YulFunctionCall","src":"2936:21:19"},"nodeType":"YulExpressionStatement","src":"2936:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2977:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2988:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2973:3:19"},"nodeType":"YulFunctionCall","src":"2973:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2993:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2966:6:19"},"nodeType":"YulFunctionCall","src":"2966:30:19"},"nodeType":"YulExpressionStatement","src":"2966:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3016:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3027:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3012:3:19"},"nodeType":"YulFunctionCall","src":"3012:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"3032:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3005:6:19"},"nodeType":"YulFunctionCall","src":"3005:61:19"},"nodeType":"YulExpressionStatement","src":"3005:61:19"},{"nodeType":"YulAssignment","src":"3075:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3087:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3083:3:19"},"nodeType":"YulFunctionCall","src":"3083:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3075:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2903:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2917:4:19","type":""}],"src":"2752:355:19"},{"body":{"nodeType":"YulBlock","src":"3286:234:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3303:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3314:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3296:6:19"},"nodeType":"YulFunctionCall","src":"3296:21:19"},"nodeType":"YulExpressionStatement","src":"3296:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3337:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3348:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3333:3:19"},"nodeType":"YulFunctionCall","src":"3333:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3353:2:19","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3326:6:19"},"nodeType":"YulFunctionCall","src":"3326:30:19"},"nodeType":"YulExpressionStatement","src":"3326:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3387:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:19"},"nodeType":"YulFunctionCall","src":"3372:18:19"},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768","kind":"string","nodeType":"YulLiteral","src":"3392:34:19","type":"","value":"VennFirewallConsumer: Not enough"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:19"},"nodeType":"YulFunctionCall","src":"3365:62:19"},"nodeType":"YulExpressionStatement","src":"3365:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3447:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3458:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3443:3:19"},"nodeType":"YulFunctionCall","src":"3443:18:19"},{"hexValue":"2045544820666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3463:14:19","type":"","value":" ETH for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3436:6:19"},"nodeType":"YulFunctionCall","src":"3436:42:19"},"nodeType":"YulExpressionStatement","src":"3436:42:19"},{"nodeType":"YulAssignment","src":"3487:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3499:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3510:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3495:3:19"},"nodeType":"YulFunctionCall","src":"3495:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3487:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3263:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3277:4:19","type":""}],"src":"3112:408:19"},{"body":{"nodeType":"YulBlock","src":"3672:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3695:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"3700:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3708:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3682:12:19"},"nodeType":"YulFunctionCall","src":"3682:33:19"},"nodeType":"YulExpressionStatement","src":"3682:33:19"},{"nodeType":"YulVariableDeclaration","src":"3724:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3738:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3743:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3734:3:19"},"nodeType":"YulFunctionCall","src":"3734:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3728:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3766:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"3770:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3759:6:19"},"nodeType":"YulFunctionCall","src":"3759:13:19"},"nodeType":"YulExpressionStatement","src":"3759:13:19"},{"nodeType":"YulAssignment","src":"3781:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"3788:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3781:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3640:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3645:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3653:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3664:3:19","type":""}],"src":"3525:271:19"},{"body":{"nodeType":"YulBlock","src":"3975:229:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3992:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4003:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3985:6:19"},"nodeType":"YulFunctionCall","src":"3985:21:19"},"nodeType":"YulExpressionStatement","src":"3985:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4026:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4022:3:19"},"nodeType":"YulFunctionCall","src":"4022:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4042:2:19","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4015:6:19"},"nodeType":"YulFunctionCall","src":"4015:30:19"},"nodeType":"YulExpressionStatement","src":"4015:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4076:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:19"},"nodeType":"YulFunctionCall","src":"4061:18:19"},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c","kind":"string","nodeType":"YulLiteral","src":"4081:34:19","type":"","value":"VennFirewallConsumer: Proxy call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:19"},"nodeType":"YulFunctionCall","src":"4054:62:19"},"nodeType":"YulExpressionStatement","src":"4054:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4136:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4147:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4132:3:19"},"nodeType":"YulFunctionCall","src":"4132:18:19"},{"hexValue":"206661696c6564","kind":"string","nodeType":"YulLiteral","src":"4152:9:19","type":"","value":" failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4125:6:19"},"nodeType":"YulFunctionCall","src":"4125:37:19"},"nodeType":"YulExpressionStatement","src":"4125:37:19"},{"nodeType":"YulAssignment","src":"4171:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4183:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4194:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4179:3:19"},"nodeType":"YulFunctionCall","src":"4179:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4171:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3952:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3966:4:19","type":""}],"src":"3801:403:19"},{"body":{"nodeType":"YulBlock","src":"4308:149:19","statements":[{"nodeType":"YulAssignment","src":"4318:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4330:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4341:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4326:3:19"},"nodeType":"YulFunctionCall","src":"4326:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4318:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4360:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4375:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4383:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4371:3:19"},"nodeType":"YulFunctionCall","src":"4371:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4353:6:19"},"nodeType":"YulFunctionCall","src":"4353:98:19"},"nodeType":"YulExpressionStatement","src":"4353:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4277:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4288:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4299:4:19","type":""}],"src":"4209:248:19"},{"body":{"nodeType":"YulBlock","src":"4528:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4538:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"4547:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4542:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"4607:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4632:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"4637:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:19"},"nodeType":"YulFunctionCall","src":"4628:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4651:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"4656:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4647:3:19"},"nodeType":"YulFunctionCall","src":"4647:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4641:5:19"},"nodeType":"YulFunctionCall","src":"4641:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4621:6:19"},"nodeType":"YulFunctionCall","src":"4621:39:19"},"nodeType":"YulExpressionStatement","src":"4621:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4568:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"4571:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4565:2:19"},"nodeType":"YulFunctionCall","src":"4565:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4579:19:19","statements":[{"nodeType":"YulAssignment","src":"4581:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4590:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"4593:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:19"},"nodeType":"YulFunctionCall","src":"4586:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4581:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"4561:3:19","statements":[]},"src":"4557:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4690:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4695:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4686:3:19"},"nodeType":"YulFunctionCall","src":"4686:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"4704:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4679:6:19"},"nodeType":"YulFunctionCall","src":"4679:27:19"},"nodeType":"YulExpressionStatement","src":"4679:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4506:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4511:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"4516:6:19","type":""}],"src":"4462:250:19"},{"body":{"nodeType":"YulBlock","src":"4854:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4864:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4884:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4878:5:19"},"nodeType":"YulFunctionCall","src":"4878:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4868:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4939:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4947:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4935:3:19"},"nodeType":"YulFunctionCall","src":"4935:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"4954:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4959:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4900:34:19"},"nodeType":"YulFunctionCall","src":"4900:66:19"},"nodeType":"YulExpressionStatement","src":"4900:66:19"},{"nodeType":"YulAssignment","src":"4975:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4986:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4991:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4982:3:19"},"nodeType":"YulFunctionCall","src":"4982:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4975:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4830:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4835:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4846:3:19","type":""}],"src":"4717:287:19"},{"body":{"nodeType":"YulBlock","src":"5183:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5200:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5211:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:19"},"nodeType":"YulFunctionCall","src":"5193:21:19"},"nodeType":"YulExpressionStatement","src":"5193:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5234:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5245:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5230:3:19"},"nodeType":"YulFunctionCall","src":"5230:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5250:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5223:6:19"},"nodeType":"YulFunctionCall","src":"5223:30:19"},"nodeType":"YulExpressionStatement","src":"5223:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5273:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5284:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5269:3:19"},"nodeType":"YulFunctionCall","src":"5269:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5289:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5262:6:19"},"nodeType":"YulFunctionCall","src":"5262:59:19"},"nodeType":"YulExpressionStatement","src":"5262:59:19"},{"nodeType":"YulAssignment","src":"5330:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5342:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5353:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:19"},"nodeType":"YulFunctionCall","src":"5338:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5330:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5160:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5174:4:19","type":""}],"src":"5009:353:19"},{"body":{"nodeType":"YulBlock","src":"5488:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5505:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5516:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5498:6:19"},"nodeType":"YulFunctionCall","src":"5498:21:19"},"nodeType":"YulExpressionStatement","src":"5498:21:19"},{"nodeType":"YulVariableDeclaration","src":"5528:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5548:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5542:5:19"},"nodeType":"YulFunctionCall","src":"5542:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5532:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5575:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5586:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5571:3:19"},"nodeType":"YulFunctionCall","src":"5571:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"5591:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5564:6:19"},"nodeType":"YulFunctionCall","src":"5564:34:19"},"nodeType":"YulExpressionStatement","src":"5564:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5646:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5654:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5642:3:19"},"nodeType":"YulFunctionCall","src":"5642:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5663:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5674:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5659:3:19"},"nodeType":"YulFunctionCall","src":"5659:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"5679:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5607:34:19"},"nodeType":"YulFunctionCall","src":"5607:79:19"},"nodeType":"YulExpressionStatement","src":"5607:79:19"},{"nodeType":"YulAssignment","src":"5695:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5711:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5730:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5738:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5726:3:19"},"nodeType":"YulFunctionCall","src":"5726:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"5743:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5722:3:19"},"nodeType":"YulFunctionCall","src":"5722:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:19"},"nodeType":"YulFunctionCall","src":"5707:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"5813:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5703:3:19"},"nodeType":"YulFunctionCall","src":"5703:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5695:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5457:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5468:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5479:4:19","type":""}],"src":"5367:455:19"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"VennFirewallConsumer: Not enough\")\n        mstore(add(headStart, 96), \" ETH for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"VennFirewallConsumer: Proxy call\")\n        mstore(add(headStart, 96), \" failed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100c1578063cb09f61f146100e1578063f05c8582146100f457600080fd5b806354222e6c1461006a578063734b71981461008c5780637c65c38b146100ac575b600080fd5b34801561007657600080fd5b5061008a610085366004610ca9565b610132565b005b34801561009857600080fd5b5061008a6100a7366004610ca9565b6102a7565b3480156100b857600080fd5b5061008a610439565b3480156100cd57600080fd5b5061008a6100dc366004610ca9565b610563565b61008a6100ef366004610d28565b6106c4565b34801561010057600080fd5b506101096108de565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61016461016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161561027157610268817f0c908cff00000000000000000000000000000000000000000000000000000000610913565b61027157600080fd5b6102a461029f60017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b829055565b50565b6102d561016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b73ffffffffffffffffffffffffffffffffffffffff811661040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610219565b6102a461029f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b61046761016060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610219565b61052e61052960017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61059161016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b61067861029f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610da2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b84341015610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676860448201527f2045544820666f722066656500000000000000000000000000000000000000006064820152608401610219565b61075d856109e4565b600061078d61016060017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b905060008173ffffffffffffffffffffffffffffffffffffffff168787876040516107b9929190610ddc565b60006040518083038185875af1925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b505090508061088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c60448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610219565b6108cc3085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7492505050565b506108d5610aa0565b50505050505050565b600061090e61016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cb575060208210155b80156109d75750600081115b9450505050505b92915050565b610a1261052960017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b610a46610a4060017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b60029055565b6102a461029f60017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b6060610a998383604051806060016040528060278152602001610e7e60279139610b38565b9392505050565b610ad4610ace60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b60019055565b610b02610ace60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b610b36610b3060017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b60009055565b565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610b629190610e10565b600060405180830381855af49150503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b5091509150610bb386838387610bbd565b9695505050505050565b60608315610c53578251600003610c4c5773ffffffffffffffffffffffffffffffffffffffff85163b610c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610219565b5081610c5d565b610c5d8383610c65565b949350505050565b815115610c755781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102199190610e2c565b600060208284031215610cbb57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a9957600080fd5b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600060608688031215610d4057600080fd5b85359450602086013567ffffffffffffffff80821115610d5f57600080fd5b610d6b89838a01610cdf565b90965094506040880135915080821115610d8457600080fd5b50610d9188828901610cdf565b969995985093965092949392505050565b818103818111156109de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610e07578181015183820152602001610def565b50506000910152565b60008251610e22818460208701610dec565b9190910192915050565b6020815260008251806020840152610e4b816040850160208701610dec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220cac4df4f2317a1c47dad25ebd6a1a410379523f40e9ddec826e76558da0276f564736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x54222E6C EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x439 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xD28 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x271 JUMPI PUSH2 0x268 DUP2 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x160 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x529 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x678 PUSH2 0x29F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP5 CALLVALUE LT ISZERO PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2045544820666F72206665650000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x75D DUP6 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH2 0x160 PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7B9 SWAP3 SWAP2 SWAP1 PUSH2 0xDDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x88C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A2050726F78792063616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206661696C656400000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x8CC ADDRESS DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xA74 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x8D5 PUSH2 0xAA0 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90E PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9CB JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9D7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA12 PUSH2 0x529 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xA46 PUSH2 0xA40 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xB38 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0xACE PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB02 PUSH2 0xACE PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xB36 PUSH2 0xB30 PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xB62 SWAP2 SWAP1 PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xBB3 DUP7 DUP4 DUP4 DUP8 PUSH2 0xBBD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xC53 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xC4C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST POP DUP2 PUSH2 0xC5D JUMP JUMPDEST PUSH2 0xC5D DUP4 DUP4 PUSH2 0xC65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC75 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6B DUP10 DUP4 DUP11 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD91 DUP9 DUP3 DUP10 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE07 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE22 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xE4B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220CAC4DF 0x4F 0x23 OR LOG1 0xC4 PUSH30 0xAD25EBD6A1A410379523F40E9DDEC826E76558DA0276F564736F6C634300 ADDMOD SGT STOP CALLER ","sourceMap":"514:85:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:383:11;;;;;;;;;;-1:-1:-1;5101:383:11;;;;;:::i;:::-;;:::i;:::-;;6184:241;;;;;;;;;;-1:-1:-1;6184:241:11;;;;;:::i;:::-;;:::i;6494:280::-;;;;;;;;;;;;;:::i;5842:176::-;;;;;;;;;;-1:-1:-1;5842:176:11;;;;;:::i;:::-;;:::i;3854:742::-;;;;;;:::i;:::-;;:::i;5555:127::-;;;;;;;;;;;;;:::i;:::-;;;1646:42:19;1634:55;;;1616:74;;1604:2;1589:18;5555:127:11;;;;;;;5101:383;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;:::-;8006:12;;7878:156;3274:46;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;;;;;;;;;5209:36:::1;::::0;::::1;::::0;5205:191:::1;;5269:115;5316:22:::0;1035:18;5269:46:::1;:115::i;:::-;5261:124;;;::::0;::::1;;5405:72;1720:58;1777:1;1728:45;1720:58;:::i;:::-;5454:22:::0;7663:23;;7561:141;5405:72:::1;5101:383:::0;:::o;6184:241::-;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;3274:46::-;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;1988:400:19;3252:109:11;6279:28:::1;::::0;::::1;6271:71;;;::::0;::::1;::::0;;2595:2:19;6271:71:11::1;::::0;::::1;2577:21:19::0;2634:2;2614:18;;;2607:30;2673:32;2653:18;;;2646:60;2723:18;;6271:71:11::1;2393:354:19::0;6271:71:11::1;6352:66;1595:52;1646:1;1603:39;1595:52;:::i;6494:280::-:0;6566:50;1595:52;1646:1;1603:39;1595:52;:::i;6566:50::-;6552:64;;:10;:64;;;6544:108;;;;;;;2954:2:19;6544:108:11;;;2936:21:19;2993:2;2973:18;;;2966:30;3032:33;3012:18;;;3005:61;3083:18;;6544:108:11;2752:355:19;6544:108:11;6662:58;1385:48;1432:1;1393:35;1385:48;:::i;:::-;6709:10;7663:23;;7561:141;6662:58;6735:32;;6756:10;1616:74:19;;6735:32:11;;1604:2:19;1589:18;6735:32:11;;;;;;;6494:280::o;5842:176::-;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;3274:46::-;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;1988:400:19;3252:109:11;5919:51:::1;1211:42;1252:1;1219:29;1211:42;:::i;5919:51::-;5985:26;::::0;1646:42:19;1634:55;;1616:74;;5985:26:11::1;::::0;1604:2:19;1589:18;5985:26:11::1;;;;;;;5842:176:::0;:::o;3854:742::-;4031:13;4018:9;:26;;4010:83;;;;;;;3314:2:19;4010:83:11;;;3296:21:19;3353:2;3333:18;;;3326:30;3392:34;3372:18;;;3365:62;3463:14;3443:18;;;3436:42;3495:19;;4010:83:11;3112:408:19;4010:83:11;4103:41;4130:13;4103:26;:41::i;:::-;4154:30;4187:48;1720:58;1777:1;1728:45;1720:58;:::i;4187:48::-;4154:81;;4246:12;4264:22;:27;;4299:13;4314:12;;4264:63;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4245:82;;;4345:7;4337:59;;;;;;;4003:2:19;4337:59:11;;;3985:21:19;4042:2;4022:18;;;4015:30;4081:34;4061:18;;;4054:62;4152:9;4132:18;;;4125:37;4179:19;;4337:59:11;3801:403:19;4337:59:11;4500:49;4537:4;4544;;4500:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4500:28:11;;-1:-1:-1;;;4500:49:11:i;:::-;;4559:30;:28;:30::i;:::-;4000:596;;3854:742;;;;;:::o;5555:127::-;5603:7;5629:46;1385:48;1432:1;1393:35;1385:48;:::i;5629:46::-;5622:53;;5555:127;:::o;4421:647:4:-;4592:71;;;4383:66:19;4371:79;;4592:71:4;;;;4353:98:19;;;;4592:71:4;;;;;;;;;;4326:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;4602:259:11:-;4680:56;1954:54;2007:1;1962:41;1954:54;:::i;4680:56::-;4746:48;2079:57;2135:1;2087:44;2079:57;:::i;:::-;4792:1;7663:23;;7561:141;4746:48;4804:50;1839:47;1885:1;1847:34;1839:47;:::i;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;4867:228:11:-;4926:56;1954:54;2007:1;1962:41;1954:54;:::i;:::-;4979:1;7663:23;;7561:141;4926:56;4992:48;2079:57;2135:1;2087:44;2079:57;:::i;4992:48::-;5050:38;1839:47;1885:1;1847:34;1839:47;:::i;:::-;1831:56;7663:23;;7561:141;5050:38;4867:228::o;7058:325:2:-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;5211:2:19;8113:60:2;;;5193:21:19;5250:2;5230:18;;;5223:30;5289:31;5269:18;;;5262:59;5338:18;;8113:60:2;5009:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:309:19:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;328:347;379:8;389:6;443:3;436:4;428:6;424:17;420:27;410:55;;461:1;458;451:12;410:55;-1:-1:-1;484:20:19;;527:18;516:30;;513:50;;;559:1;556;549:12;513:50;596:4;588:6;584:17;572:29;;648:3;641:4;632:6;624;620:19;616:30;613:39;610:59;;;665:1;662;655:12;610:59;328:347;;;;;:::o;680:785::-;779:6;787;795;803;811;864:2;852:9;843:7;839:23;835:32;832:52;;;880:1;877;870:12;832:52;916:9;903:23;893:33;;977:2;966:9;962:18;949:32;1000:18;1041:2;1033:6;1030:14;1027:34;;;1057:1;1054;1047:12;1027:34;1096:58;1146:7;1137:6;1126:9;1122:22;1096:58;:::i;:::-;1173:8;;-1:-1:-1;1070:84:19;-1:-1:-1;1261:2:19;1246:18;;1233:32;;-1:-1:-1;1277:16:19;;;1274:36;;;1306:1;1303;1296:12;1274:36;;1345:60;1397:7;1386:8;1375:9;1371:24;1345:60;:::i;:::-;680:785;;;;-1:-1:-1;680:785:19;;-1:-1:-1;1424:8:19;;1319:86;680:785;-1:-1:-1;;;680:785:19:o;1701:282::-;1768:9;;;1789:11;;;1786:191;;;1833:77;1830:1;1823:88;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;3525:271;3708:6;3700;3695:3;3682:33;3664:3;3734:16;;3759:13;;;3734:16;3525:271;-1:-1:-1;3525:271:19:o;4462:250::-;4547:1;4557:113;4571:6;4568:1;4565:13;4557:113;;;4647:11;;;4641:18;4628:11;;;4621:39;4593:2;4586:10;4557:113;;;-1:-1:-1;;4704:1:19;4686:16;;4679:27;4462:250::o;4717:287::-;4846:3;4884:6;4878:13;4900:66;4959:6;4954:3;4947:4;4939:6;4935:17;4900:66;:::i;:::-;4982:16;;;;;4717:287;-1:-1:-1;;4717:287:19:o;5367:455::-;5516:2;5505:9;5498:21;5479:4;5548:6;5542:13;5591:6;5586:2;5575:9;5571:18;5564:34;5607:79;5679:6;5674:2;5663:9;5659:18;5654:2;5646:6;5642:15;5607:79;:::i;:::-;5738:2;5726:15;5743:66;5722:88;5707:104;;;;5813:2;5703:113;;5367:455;-1:-1:-1;;5367:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(uint256,bytes,bytes)":"cb09f61f","setAttestationCenterProxy(address)":"54222e6c","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userNativeFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proxyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attestationCenterProxy\",\"type\":\"address\"}],\"name\":\"setAttestationCenterProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks \",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract must initializes with the firewall contract disabled, and the deployer as the firewall admin.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/VennFirewallConsumer.sol\":\"VennFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/consumers/VennFirewallConsumer.sol\":{\"keccak256\":\"0xa1bcc7dd88cb09183d35e28327fb396c85f54b8dc47499d151bca64105df4a53\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e020e9b29455f9e80544cd1878bfb734ec4231adeda3f14ca2e2baba16a2e488\",\"dweb:/ipfs/QmPbJ1kocF9nBWhco1hCLDwykSfQwKoKBZDBmATYzZfkHN\"]},\"contracts/consumers/VennFirewallConsumerBase.sol\":{\"keccak256\":\"0x54532faec0537d0fd1784cbfbbb3631ef125847818ea2c418da39d953d3a3587\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1040cf3e86080c8846f1263bdd9d6abd1094b21a244433eee8804a587f60626a\",\"dweb:/ipfs/QmcUjSkQVbLTY5kdFBdY5ZX1cUYbh9q39Mp7nKtay52s8s\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/consumers/VennFirewallConsumerBase.sol":{"VennFirewallConsumerBase":{"abi":[{"inputs":[{"internalType":"address","name":"_firewall","type":"address"},{"internalType":"address","name":"_firewallAdmin","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"userNativeFee","type":"uint256"},{"internalType":"bytes","name":"proxyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"attestationCenterProxy","type":"address"}],"name":"setAttestationCenterProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_2701":{"entryPoint":null,"id":2701,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2959":{"entryPoint":null,"id":2959,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_2978":{"entryPoint":null,"id":2978,"parameterSlots":2,"returnSlots":0},"abi_decode_address_fromMemory":{"entryPoint":272,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_tuple_t_addresst_address_fromMemory":{"entryPoint":301,"id":null,"parameterSlots":2,"returnSlots":2},"checked_sub_t_uint256":{"entryPoint":357,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:721:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"74:117:19","statements":[{"nodeType":"YulAssignment","src":"84:22:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"99:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"93:5:19"},"nodeType":"YulFunctionCall","src":"93:13:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"84:5:19"}]},{"body":{"nodeType":"YulBlock","src":"169:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"178:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"181:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"171:6:19"},"nodeType":"YulFunctionCall","src":"171:12:19"},"nodeType":"YulExpressionStatement","src":"171:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"128:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"139:5:19"},{"arguments":[{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"154:3:19","type":"","value":"160"},{"kind":"number","nodeType":"YulLiteral","src":"159:1:19","type":"","value":"1"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"150:3:19"},"nodeType":"YulFunctionCall","src":"150:11:19"},{"kind":"number","nodeType":"YulLiteral","src":"163:1:19","type":"","value":"1"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:19:19"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"135:3:19"},"nodeType":"YulFunctionCall","src":"135:31:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"125:2:19"},"nodeType":"YulFunctionCall","src":"125:42:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"118:6:19"},"nodeType":"YulFunctionCall","src":"118:50:19"},"nodeType":"YulIf","src":"115:70:19"}]},"name":"abi_decode_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"53:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"64:5:19","type":""}],"src":"14:177:19"},{"body":{"nodeType":"YulBlock","src":"294:195:19","statements":[{"body":{"nodeType":"YulBlock","src":"340:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"349:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"352:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"342:6:19"},"nodeType":"YulFunctionCall","src":"342:12:19"},"nodeType":"YulExpressionStatement","src":"342:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"315:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"324:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"336:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:32:19"},"nodeType":"YulIf","src":"304:52:19"},{"nodeType":"YulAssignment","src":"365:50:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"405:9:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"375:29:19"},"nodeType":"YulFunctionCall","src":"375:40:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"365:6:19"}]},{"nodeType":"YulAssignment","src":"424:59:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"468:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"479:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"464:3:19"},"nodeType":"YulFunctionCall","src":"464:18:19"}],"functionName":{"name":"abi_decode_address_fromMemory","nodeType":"YulIdentifier","src":"434:29:19"},"nodeType":"YulFunctionCall","src":"434:49:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"424:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"252:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"263:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"275:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"283:6:19","type":""}],"src":"196:293:19"},{"body":{"nodeType":"YulBlock","src":"543:176:19","statements":[{"nodeType":"YulAssignment","src":"553:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"565:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"568:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"561:3:19"},"nodeType":"YulFunctionCall","src":"561:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"553:4:19"}]},{"body":{"nodeType":"YulBlock","src":"602:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"623:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"630:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"635:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"626:3:19"},"nodeType":"YulFunctionCall","src":"626:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"616:6:19"},"nodeType":"YulFunctionCall","src":"616:31:19"},"nodeType":"YulExpressionStatement","src":"616:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"667:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"670:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"660:6:19"},"nodeType":"YulFunctionCall","src":"660:15:19"},"nodeType":"YulExpressionStatement","src":"660:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"695:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"698:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"688:6:19"},"nodeType":"YulFunctionCall","src":"688:15:19"},"nodeType":"YulExpressionStatement","src":"688:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"585:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"591:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"582:2:19"},"nodeType":"YulFunctionCall","src":"582:11:19"},"nodeType":"YulIf","src":"579:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"525:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"528:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"534:4:19","type":""}],"src":"494:225:19"}]},"contents":"{\n    { }\n    function abi_decode_address_fromMemory(offset) -> value\n    {\n        value := mload(offset)\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address_fromMemory(headStart)\n        value1 := abi_decode_address_fromMemory(add(headStart, 32))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b50604051620010773803806200107783398101604081905262000034916200012d565b6200006a6200006560017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f66262000165565b839055565b620000a06200009b60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c97413662000165565b829055565b620000d7620000d160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a362000165565b60019055565b62000108620000d160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e204062000165565b50506200018d565b80516001600160a01b03811681146200012857600080fd5b919050565b600080604083850312156200014157600080fd5b6200014c8362000110565b91506200015c6020840162000110565b90509250929050565b818103818111156200018757634e487b7160e01b600052601160045260246000fd5b92915050565b610eda806200019d6000396000f3fe6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100c1578063cb09f61f146100e1578063f05c8582146100f457600080fd5b806354222e6c1461006a578063734b71981461008c5780637c65c38b146100ac575b600080fd5b34801561007657600080fd5b5061008a610085366004610ca9565b610132565b005b34801561009857600080fd5b5061008a6100a7366004610ca9565b6102a7565b3480156100b857600080fd5b5061008a610439565b3480156100cd57600080fd5b5061008a6100dc366004610ca9565b610563565b61008a6100ef366004610d28565b6106c4565b34801561010057600080fd5b506101096108de565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61016461016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161561027157610268817f0c908cff00000000000000000000000000000000000000000000000000000000610913565b61027157600080fd5b6102a461029f60017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b829055565b50565b6102d561016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b73ffffffffffffffffffffffffffffffffffffffff811661040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610219565b6102a461029f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b61046761016060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610219565b61052e61052960017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61059161016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b61067861029f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610da2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b84341015610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676860448201527f2045544820666f722066656500000000000000000000000000000000000000006064820152608401610219565b61075d856109e4565b600061078d61016060017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b905060008173ffffffffffffffffffffffffffffffffffffffff168787876040516107b9929190610ddc565b60006040518083038185875af1925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b505090508061088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c60448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610219565b6108cc3085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7492505050565b506108d5610aa0565b50505050505050565b600061090e61016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cb575060208210155b80156109d75750600081115b9450505050505b92915050565b610a1261052960017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b610a46610a4060017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b60029055565b6102a461029f60017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b6060610a998383604051806060016040528060278152602001610e7e60279139610b38565b9392505050565b610ad4610ace60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b60019055565b610b02610ace60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b610b36610b3060017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b60009055565b565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610b629190610e10565b600060405180830381855af49150503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b5091509150610bb386838387610bbd565b9695505050505050565b60608315610c53578251600003610c4c5773ffffffffffffffffffffffffffffffffffffffff85163b610c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610219565b5081610c5d565b610c5d8383610c65565b949350505050565b815115610c755781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102199190610e2c565b600060208284031215610cbb57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a9957600080fd5b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600060608688031215610d4057600080fd5b85359450602086013567ffffffffffffffff80821115610d5f57600080fd5b610d6b89838a01610cdf565b90965094506040880135915080821115610d8457600080fd5b50610d9188828901610cdf565b969995985093965092949392505050565b818103818111156109de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610e07578181015183820152602001610def565b50506000910152565b60008251610e22818460208701610dec565b9190910192915050565b6020815260008251806020840152610e4b816040850160208701610dec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ae4404c2199a0d05ab39a750f70e001d3407b5cc57f3c9fe5d53500c627e2e3f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1077 CODESIZE SUB DUP1 PUSH3 0x1077 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x12D JUMP JUMPDEST PUSH3 0x6A PUSH3 0x65 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0x165 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xA0 PUSH3 0x9B PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0x165 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xD7 PUSH3 0xD1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0x165 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x108 PUSH3 0xD1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0x165 JUMP JUMPDEST POP POP PUSH3 0x18D JUMP JUMPDEST DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0x128 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH3 0x141 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH3 0x14C DUP4 PUSH3 0x110 JUMP JUMPDEST SWAP2 POP PUSH3 0x15C PUSH1 0x20 DUP5 ADD PUSH3 0x110 JUMP JUMPDEST SWAP1 POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x187 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xEDA DUP1 PUSH3 0x19D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x54222E6C EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x439 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xD28 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x271 JUMPI PUSH2 0x268 DUP2 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x160 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x529 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x678 PUSH2 0x29F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP5 CALLVALUE LT ISZERO PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2045544820666F72206665650000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x75D DUP6 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH2 0x160 PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7B9 SWAP3 SWAP2 SWAP1 PUSH2 0xDDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x88C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A2050726F78792063616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206661696C656400000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x8CC ADDRESS DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xA74 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x8D5 PUSH2 0xAA0 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90E PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9CB JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9D7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA12 PUSH2 0x529 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xA46 PUSH2 0xA40 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xB38 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0xACE PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB02 PUSH2 0xACE PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xB36 PUSH2 0xB30 PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xB62 SWAP2 SWAP1 PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xBB3 DUP7 DUP4 DUP4 DUP8 PUSH2 0xBBD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xC53 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xC4C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST POP DUP2 PUSH2 0xC5D JUMP JUMPDEST PUSH2 0xC5D DUP4 DUP4 PUSH2 0xC65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC75 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6B DUP10 DUP4 DUP11 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD91 DUP9 DUP3 DUP10 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE07 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE22 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xE4B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220AE4404 0xC2 NOT SWAP11 0xD SDIV 0xAB CODECOPY 0xA7 POP 0xF7 0xE STOP SAR CALLVALUE SMOD 0xB5 0xCC JUMPI RETURN 0xC9 INVALID 0x5D MSTORE8 POP 0xC PUSH3 0x7E2E3F PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"894:7604:11:-:0;;;3507:341;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3594:51;1211:42;1252:1;1219:29;1211:42;:::i;:::-;3635:9;7663:23;;7561:141;3594:51;3655:62;1385:48;1432:1;1393:35;1385:48;:::i;:::-;3702:14;7663:23;;7561:141;3655:62;3727:56;1954:54;2007:1;1962:41;1954:54;:::i;:::-;3780:1;7663:23;;7561:141;3727:56;3793:48;2079:57;2135:1;2087:44;2079:57;:::i;3793:48::-;3507:341;;894:7604;;14:177:19;93:13;;-1:-1:-1;;;;;135:31:19;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:293::-;275:6;283;336:2;324:9;315:7;311:23;307:32;304:52;;;352:1;349;342:12;304:52;375:40;405:9;375:40;:::i;:::-;365:50;;434:49;479:2;468:9;464:18;434:49;:::i;:::-;424:59;;196:293;;;;;:::o;494:225::-;561:9;;;582:11;;;579:134;;;635:10;630:3;626:20;623:1;616:31;670:4;667:1;660:15;698:4;695:1;688:15;579:134;494:225;;;;:::o;:::-;894:7604:11;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_deInitSafeFunctionCallFlags_2800":{"entryPoint":2720,"id":2800,"parameterSlots":0,"returnSlots":0},"@_getAddressBySlot_2969":{"entryPoint":null,"id":2969,"parameterSlots":1,"returnSlots":1},"@_initSafeFunctionCallFlags_2778":{"entryPoint":2532,"id":2778,"parameterSlots":1,"returnSlots":0},"@_revert_827":{"entryPoint":3173,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_2959":{"entryPoint":null,"id":2959,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_2978":{"entryPoint":null,"id":2978,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_2908":{"entryPoint":1081,"id":2908,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_2840":{"entryPoint":2270,"id":2840,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":2676,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":2872,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_2756":{"entryPoint":1732,"id":2756,"parameterSlots":5,"returnSlots":0},"@setAttestationCenterProxy_2829":{"entryPoint":306,"id":2829,"parameterSlots":1,"returnSlots":0},"@setFirewallAdmin_2882":{"entryPoint":679,"id":2882,"parameterSlots":1,"returnSlots":0},"@setFirewall_2858":{"entryPoint":1379,"id":2858,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":2323,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3005,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3295,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3241,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3368,"id":null,"parameterSlots":2,"returnSlots":5},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3548,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":3600,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":3628,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3490,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":3564,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:5824:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"84:239:19","statements":[{"body":{"nodeType":"YulBlock","src":"130:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"139:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"142:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"132:6:19"},"nodeType":"YulFunctionCall","src":"132:12:19"},"nodeType":"YulExpressionStatement","src":"132:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"105:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"114:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"101:3:19"},"nodeType":"YulFunctionCall","src":"101:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"126:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"97:3:19"},"nodeType":"YulFunctionCall","src":"97:32:19"},"nodeType":"YulIf","src":"94:52:19"},{"nodeType":"YulVariableDeclaration","src":"155:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"181:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"168:12:19"},"nodeType":"YulFunctionCall","src":"168:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"159:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"277:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"286:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"289:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"279:6:19"},"nodeType":"YulFunctionCall","src":"279:12:19"},"nodeType":"YulExpressionStatement","src":"279:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"213:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"224:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"231:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"220:3:19"},"nodeType":"YulFunctionCall","src":"220:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"210:2:19"},"nodeType":"YulFunctionCall","src":"210:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"203:6:19"},"nodeType":"YulFunctionCall","src":"203:73:19"},"nodeType":"YulIf","src":"200:93:19"},{"nodeType":"YulAssignment","src":"302:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"312:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"302:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"50:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"61:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"73:6:19","type":""}],"src":"14:309:19"},{"body":{"nodeType":"YulBlock","src":"400:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"449:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"458:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"461:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"451:6:19"},"nodeType":"YulFunctionCall","src":"451:12:19"},"nodeType":"YulExpressionStatement","src":"451:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"428:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"436:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"424:3:19"},"nodeType":"YulFunctionCall","src":"424:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"443:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"420:3:19"},"nodeType":"YulFunctionCall","src":"420:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"413:6:19"},"nodeType":"YulFunctionCall","src":"413:35:19"},"nodeType":"YulIf","src":"410:55:19"},{"nodeType":"YulAssignment","src":"474:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"497:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"484:12:19"},"nodeType":"YulFunctionCall","src":"484:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"474:6:19"}]},{"body":{"nodeType":"YulBlock","src":"547:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"556:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"559:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"549:6:19"},"nodeType":"YulFunctionCall","src":"549:12:19"},"nodeType":"YulExpressionStatement","src":"549:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"519:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"527:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"516:2:19"},"nodeType":"YulFunctionCall","src":"516:30:19"},"nodeType":"YulIf","src":"513:50:19"},{"nodeType":"YulAssignment","src":"572:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"588:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"596:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"584:3:19"},"nodeType":"YulFunctionCall","src":"584:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"572:8:19"}]},{"body":{"nodeType":"YulBlock","src":"653:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"662:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"665:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"655:6:19"},"nodeType":"YulFunctionCall","src":"655:12:19"},"nodeType":"YulExpressionStatement","src":"655:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"624:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"632:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"620:3:19"},"nodeType":"YulFunctionCall","src":"620:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"641:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"616:3:19"},"nodeType":"YulFunctionCall","src":"616:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"648:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"613:2:19"},"nodeType":"YulFunctionCall","src":"613:39:19"},"nodeType":"YulIf","src":"610:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"363:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"371:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"379:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"389:6:19","type":""}],"src":"328:347:19"},{"body":{"nodeType":"YulBlock","src":"822:643:19","statements":[{"body":{"nodeType":"YulBlock","src":"868:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"877:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"880:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"870:6:19"},"nodeType":"YulFunctionCall","src":"870:12:19"},"nodeType":"YulExpressionStatement","src":"870:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"843:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"852:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"839:3:19"},"nodeType":"YulFunctionCall","src":"839:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"864:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"835:3:19"},"nodeType":"YulFunctionCall","src":"835:32:19"},"nodeType":"YulIf","src":"832:52:19"},{"nodeType":"YulAssignment","src":"893:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"916:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"903:12:19"},"nodeType":"YulFunctionCall","src":"903:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"893:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"935:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"966:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"977:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"962:3:19"},"nodeType":"YulFunctionCall","src":"962:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"949:12:19"},"nodeType":"YulFunctionCall","src":"949:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"939:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"990:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"1000:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"994:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1045:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1054:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1057:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1047:6:19"},"nodeType":"YulFunctionCall","src":"1047:12:19"},"nodeType":"YulExpressionStatement","src":"1047:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"1033:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1041:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1030:2:19"},"nodeType":"YulFunctionCall","src":"1030:14:19"},"nodeType":"YulIf","src":"1027:34:19"},{"nodeType":"YulVariableDeclaration","src":"1070:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1126:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1137:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1122:3:19"},"nodeType":"YulFunctionCall","src":"1122:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1146:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1096:25:19"},"nodeType":"YulFunctionCall","src":"1096:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"1074:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"1084:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1163:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1173:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1163:6:19"}]},{"nodeType":"YulAssignment","src":"1190:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1200:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1190:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1217:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1250:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1261:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1246:3:19"},"nodeType":"YulFunctionCall","src":"1246:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1233:12:19"},"nodeType":"YulFunctionCall","src":"1233:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1221:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1294:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1303:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1306:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1296:6:19"},"nodeType":"YulFunctionCall","src":"1296:12:19"},"nodeType":"YulExpressionStatement","src":"1296:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1280:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1290:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1277:2:19"},"nodeType":"YulFunctionCall","src":"1277:16:19"},"nodeType":"YulIf","src":"1274:36:19"},{"nodeType":"YulVariableDeclaration","src":"1319:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1375:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1386:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1371:3:19"},"nodeType":"YulFunctionCall","src":"1371:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1397:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1345:25:19"},"nodeType":"YulFunctionCall","src":"1345:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1323:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1333:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1414:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1424:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1414:6:19"}]},{"nodeType":"YulAssignment","src":"1441:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1451:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1441:6:19"}]}]},"name":"abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"756:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"767:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"779:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"787:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"795:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"803:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"811:6:19","type":""}],"src":"680:785:19"},{"body":{"nodeType":"YulBlock","src":"1571:125:19","statements":[{"nodeType":"YulAssignment","src":"1581:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1593:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1604:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1589:3:19"},"nodeType":"YulFunctionCall","src":"1589:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"1581:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1623:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"1638:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"1646:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"1634:3:19"},"nodeType":"YulFunctionCall","src":"1634:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1616:6:19"},"nodeType":"YulFunctionCall","src":"1616:74:19"},"nodeType":"YulExpressionStatement","src":"1616:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1540:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"1551:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"1562:4:19","type":""}],"src":"1470:226:19"},{"body":{"nodeType":"YulBlock","src":"1750:233:19","statements":[{"nodeType":"YulAssignment","src":"1760:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"1772:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"1775:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1768:3:19"},"nodeType":"YulFunctionCall","src":"1768:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"1760:4:19"}]},{"body":{"nodeType":"YulBlock","src":"1809:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1830:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1833:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1823:6:19"},"nodeType":"YulFunctionCall","src":"1823:88:19"},"nodeType":"YulExpressionStatement","src":"1823:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1931:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"1934:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"1924:6:19"},"nodeType":"YulFunctionCall","src":"1924:15:19"},"nodeType":"YulExpressionStatement","src":"1924:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1959:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1962:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1952:6:19"},"nodeType":"YulFunctionCall","src":"1952:15:19"},"nodeType":"YulExpressionStatement","src":"1952:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"1792:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"1798:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1789:2:19"},"nodeType":"YulFunctionCall","src":"1789:11:19"},"nodeType":"YulIf","src":"1786:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"1732:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"1735:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"1741:4:19","type":""}],"src":"1701:282:19"},{"body":{"nodeType":"YulBlock","src":"2162:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2179:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2190:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2172:6:19"},"nodeType":"YulFunctionCall","src":"2172:21:19"},"nodeType":"YulExpressionStatement","src":"2172:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2213:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2224:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2209:3:19"},"nodeType":"YulFunctionCall","src":"2209:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2229:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2202:6:19"},"nodeType":"YulFunctionCall","src":"2202:30:19"},"nodeType":"YulExpressionStatement","src":"2202:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2252:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2263:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2248:3:19"},"nodeType":"YulFunctionCall","src":"2248:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"2268:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2241:6:19"},"nodeType":"YulFunctionCall","src":"2241:62:19"},"nodeType":"YulExpressionStatement","src":"2241:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2323:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2334:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2319:3:19"},"nodeType":"YulFunctionCall","src":"2319:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"2339:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2312:6:19"},"nodeType":"YulFunctionCall","src":"2312:34:19"},"nodeType":"YulExpressionStatement","src":"2312:34:19"},{"nodeType":"YulAssignment","src":"2355:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2367:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2378:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2363:3:19"},"nodeType":"YulFunctionCall","src":"2363:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2355:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2139:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2153:4:19","type":""}],"src":"1988:400:19"},{"body":{"nodeType":"YulBlock","src":"2567:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2584:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2595:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2577:6:19"},"nodeType":"YulFunctionCall","src":"2577:21:19"},"nodeType":"YulExpressionStatement","src":"2577:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2618:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2629:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2614:3:19"},"nodeType":"YulFunctionCall","src":"2614:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2634:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2607:6:19"},"nodeType":"YulFunctionCall","src":"2607:30:19"},"nodeType":"YulExpressionStatement","src":"2607:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2657:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2668:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2653:3:19"},"nodeType":"YulFunctionCall","src":"2653:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"2673:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2646:6:19"},"nodeType":"YulFunctionCall","src":"2646:60:19"},"nodeType":"YulExpressionStatement","src":"2646:60:19"},{"nodeType":"YulAssignment","src":"2715:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2727:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2738:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2723:3:19"},"nodeType":"YulFunctionCall","src":"2723:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2715:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2544:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2558:4:19","type":""}],"src":"2393:354:19"},{"body":{"nodeType":"YulBlock","src":"2926:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2943:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2954:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2936:6:19"},"nodeType":"YulFunctionCall","src":"2936:21:19"},"nodeType":"YulExpressionStatement","src":"2936:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2977:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2988:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2973:3:19"},"nodeType":"YulFunctionCall","src":"2973:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"2993:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2966:6:19"},"nodeType":"YulFunctionCall","src":"2966:30:19"},"nodeType":"YulExpressionStatement","src":"2966:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3016:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3027:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3012:3:19"},"nodeType":"YulFunctionCall","src":"3012:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"3032:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3005:6:19"},"nodeType":"YulFunctionCall","src":"3005:61:19"},"nodeType":"YulExpressionStatement","src":"3005:61:19"},{"nodeType":"YulAssignment","src":"3075:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3087:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3098:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3083:3:19"},"nodeType":"YulFunctionCall","src":"3083:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3075:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2903:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2917:4:19","type":""}],"src":"2752:355:19"},{"body":{"nodeType":"YulBlock","src":"3286:234:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3303:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3314:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3296:6:19"},"nodeType":"YulFunctionCall","src":"3296:21:19"},"nodeType":"YulExpressionStatement","src":"3296:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3337:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3348:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3333:3:19"},"nodeType":"YulFunctionCall","src":"3333:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3353:2:19","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3326:6:19"},"nodeType":"YulFunctionCall","src":"3326:30:19"},"nodeType":"YulExpressionStatement","src":"3326:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3376:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3387:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3372:3:19"},"nodeType":"YulFunctionCall","src":"3372:18:19"},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f756768","kind":"string","nodeType":"YulLiteral","src":"3392:34:19","type":"","value":"VennFirewallConsumer: Not enough"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3365:6:19"},"nodeType":"YulFunctionCall","src":"3365:62:19"},"nodeType":"YulExpressionStatement","src":"3365:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3447:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3458:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3443:3:19"},"nodeType":"YulFunctionCall","src":"3443:18:19"},{"hexValue":"2045544820666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3463:14:19","type":"","value":" ETH for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3436:6:19"},"nodeType":"YulFunctionCall","src":"3436:42:19"},"nodeType":"YulExpressionStatement","src":"3436:42:19"},{"nodeType":"YulAssignment","src":"3487:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3499:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3510:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3495:3:19"},"nodeType":"YulFunctionCall","src":"3495:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3487:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3263:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3277:4:19","type":""}],"src":"3112:408:19"},{"body":{"nodeType":"YulBlock","src":"3672:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3695:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"3700:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3708:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3682:12:19"},"nodeType":"YulFunctionCall","src":"3682:33:19"},"nodeType":"YulExpressionStatement","src":"3682:33:19"},{"nodeType":"YulVariableDeclaration","src":"3724:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3738:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3743:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3734:3:19"},"nodeType":"YulFunctionCall","src":"3734:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3728:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3766:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"3770:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3759:6:19"},"nodeType":"YulFunctionCall","src":"3759:13:19"},"nodeType":"YulExpressionStatement","src":"3759:13:19"},{"nodeType":"YulAssignment","src":"3781:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"3788:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3781:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3640:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3645:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3653:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3664:3:19","type":""}],"src":"3525:271:19"},{"body":{"nodeType":"YulBlock","src":"3975:229:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3992:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4003:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3985:6:19"},"nodeType":"YulFunctionCall","src":"3985:21:19"},"nodeType":"YulExpressionStatement","src":"3985:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4026:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4037:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4022:3:19"},"nodeType":"YulFunctionCall","src":"4022:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4042:2:19","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4015:6:19"},"nodeType":"YulFunctionCall","src":"4015:30:19"},"nodeType":"YulExpressionStatement","src":"4015:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4065:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4076:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4061:3:19"},"nodeType":"YulFunctionCall","src":"4061:18:19"},{"hexValue":"56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c","kind":"string","nodeType":"YulLiteral","src":"4081:34:19","type":"","value":"VennFirewallConsumer: Proxy call"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4054:6:19"},"nodeType":"YulFunctionCall","src":"4054:62:19"},"nodeType":"YulExpressionStatement","src":"4054:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4136:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4147:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4132:3:19"},"nodeType":"YulFunctionCall","src":"4132:18:19"},{"hexValue":"206661696c6564","kind":"string","nodeType":"YulLiteral","src":"4152:9:19","type":"","value":" failed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4125:6:19"},"nodeType":"YulFunctionCall","src":"4125:37:19"},"nodeType":"YulExpressionStatement","src":"4125:37:19"},{"nodeType":"YulAssignment","src":"4171:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4183:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4194:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4179:3:19"},"nodeType":"YulFunctionCall","src":"4179:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4171:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3952:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3966:4:19","type":""}],"src":"3801:403:19"},{"body":{"nodeType":"YulBlock","src":"4308:149:19","statements":[{"nodeType":"YulAssignment","src":"4318:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4330:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4341:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4326:3:19"},"nodeType":"YulFunctionCall","src":"4326:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4318:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4360:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4375:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4383:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"4371:3:19"},"nodeType":"YulFunctionCall","src":"4371:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4353:6:19"},"nodeType":"YulFunctionCall","src":"4353:98:19"},"nodeType":"YulExpressionStatement","src":"4353:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4277:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4288:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4299:4:19","type":""}],"src":"4209:248:19"},{"body":{"nodeType":"YulBlock","src":"4528:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4538:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"4547:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"4542:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"4607:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4632:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"4637:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4628:3:19"},"nodeType":"YulFunctionCall","src":"4628:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"4651:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"4656:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4647:3:19"},"nodeType":"YulFunctionCall","src":"4647:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4641:5:19"},"nodeType":"YulFunctionCall","src":"4641:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4621:6:19"},"nodeType":"YulFunctionCall","src":"4621:39:19"},"nodeType":"YulExpressionStatement","src":"4621:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4568:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"4571:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"4565:2:19"},"nodeType":"YulFunctionCall","src":"4565:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"4579:19:19","statements":[{"nodeType":"YulAssignment","src":"4581:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"4590:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"4593:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4586:3:19"},"nodeType":"YulFunctionCall","src":"4586:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"4581:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"4561:3:19","statements":[]},"src":"4557:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"4690:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4695:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4686:3:19"},"nodeType":"YulFunctionCall","src":"4686:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"4704:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4679:6:19"},"nodeType":"YulFunctionCall","src":"4679:27:19"},"nodeType":"YulExpressionStatement","src":"4679:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"4506:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"4511:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"4516:6:19","type":""}],"src":"4462:250:19"},{"body":{"nodeType":"YulBlock","src":"4854:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"4864:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4884:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"4878:5:19"},"nodeType":"YulFunctionCall","src":"4878:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"4868:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"4939:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"4947:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4935:3:19"},"nodeType":"YulFunctionCall","src":"4935:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"4954:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4959:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"4900:34:19"},"nodeType":"YulFunctionCall","src":"4900:66:19"},"nodeType":"YulExpressionStatement","src":"4900:66:19"},{"nodeType":"YulAssignment","src":"4975:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4986:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"4991:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4982:3:19"},"nodeType":"YulFunctionCall","src":"4982:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4975:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"4830:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4835:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4846:3:19","type":""}],"src":"4717:287:19"},{"body":{"nodeType":"YulBlock","src":"5183:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5200:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5211:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5193:6:19"},"nodeType":"YulFunctionCall","src":"5193:21:19"},"nodeType":"YulExpressionStatement","src":"5193:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5234:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5245:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5230:3:19"},"nodeType":"YulFunctionCall","src":"5230:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5250:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5223:6:19"},"nodeType":"YulFunctionCall","src":"5223:30:19"},"nodeType":"YulExpressionStatement","src":"5223:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5273:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5284:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5269:3:19"},"nodeType":"YulFunctionCall","src":"5269:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"5289:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5262:6:19"},"nodeType":"YulFunctionCall","src":"5262:59:19"},"nodeType":"YulExpressionStatement","src":"5262:59:19"},{"nodeType":"YulAssignment","src":"5330:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5342:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5353:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5338:3:19"},"nodeType":"YulFunctionCall","src":"5338:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5330:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5160:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5174:4:19","type":""}],"src":"5009:353:19"},{"body":{"nodeType":"YulBlock","src":"5488:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5505:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5516:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5498:6:19"},"nodeType":"YulFunctionCall","src":"5498:21:19"},"nodeType":"YulExpressionStatement","src":"5498:21:19"},{"nodeType":"YulVariableDeclaration","src":"5528:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5548:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5542:5:19"},"nodeType":"YulFunctionCall","src":"5542:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"5532:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5575:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5586:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5571:3:19"},"nodeType":"YulFunctionCall","src":"5571:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"5591:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5564:6:19"},"nodeType":"YulFunctionCall","src":"5564:34:19"},"nodeType":"YulExpressionStatement","src":"5564:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5646:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5654:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5642:3:19"},"nodeType":"YulFunctionCall","src":"5642:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5663:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5674:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5659:3:19"},"nodeType":"YulFunctionCall","src":"5659:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"5679:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"5607:34:19"},"nodeType":"YulFunctionCall","src":"5607:79:19"},"nodeType":"YulExpressionStatement","src":"5607:79:19"},{"nodeType":"YulAssignment","src":"5695:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5711:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"5730:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5738:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5726:3:19"},"nodeType":"YulFunctionCall","src":"5726:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"5743:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5722:3:19"},"nodeType":"YulFunctionCall","src":"5722:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5707:3:19"},"nodeType":"YulFunctionCall","src":"5707:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"5813:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5703:3:19"},"nodeType":"YulFunctionCall","src":"5703:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5695:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5457:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5468:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5479:4:19","type":""}],"src":"5367:455:19"}]},"contents":"{\n    { }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_uint256t_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := calldataload(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6b97a92ed158de435362f0e3836862e00d8a79be24ad3262b6d1a6cb5ec83213__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"VennFirewallConsumer: Not enough\")\n        mstore(add(headStart, 96), \" ETH for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_9ff000c27e4afa9dbfcaa39f420e8766dd488b0585751458dce5227fe4205bb7__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"VennFirewallConsumer: Proxy call\")\n        mstore(add(headStart, 96), \" failed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100655760003560e01c80638c36d02d116100435780638c36d02d146100c1578063cb09f61f146100e1578063f05c8582146100f457600080fd5b806354222e6c1461006a578063734b71981461008c5780637c65c38b146100ac575b600080fd5b34801561007657600080fd5b5061008a610085366004610ca9565b610132565b005b34801561009857600080fd5b5061008a6100a7366004610ca9565b6102a7565b3480156100b857600080fd5b5061008a610439565b3480156100cd57600080fd5b5061008a6100dc366004610ca9565b610563565b61008a6100ef366004610d28565b6106c4565b34801561010057600080fd5b506101096108de565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61016461016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b5490565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610222576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e0000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff81161561027157610268817f0c908cff00000000000000000000000000000000000000000000000000000000610913565b61027157600080fd5b6102a461029f60017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b829055565b50565b6102d561016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461038e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b73ffffffffffffffffffffffffffffffffffffffff811661040b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610219565b6102a461029f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b61046761016060017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610219565b61052e61052960017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b339055565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b61059161016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461064a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610219565b61067861029f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610da2565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b84341015610754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f56656e6e4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676860448201527f2045544820666f722066656500000000000000000000000000000000000000006064820152608401610219565b61075d856109e4565b600061078d61016060017fbb5f5c81badac71dead5c1b29002ce6bbac893e2645c265b13d7499de81ab6e1610da2565b905060008173ffffffffffffffffffffffffffffffffffffffff168787876040516107b9929190610ddc565b60006040518083038185875af1925050503d80600081146107f6576040519150601f19603f3d011682016040523d82523d6000602084013e6107fb565b606091505b505090508061088c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f56656e6e4669726577616c6c436f6e73756d65723a2050726f78792063616c6c60448201527f206661696c6564000000000000000000000000000000000000000000000000006064820152608401610219565b6108cc3085858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a7492505050565b506108d5610aa0565b50505050505050565b600061090e61016060017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610da2565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d915060005190508280156109cb575060208210155b80156109d75750600081115b9450505050505b92915050565b610a1261052960017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b610a46610a4060017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b60029055565b6102a461029f60017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b6060610a998383604051806060016040528060278152602001610e7e60279139610b38565b9392505050565b610ad4610ace60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610da2565b60019055565b610b02610ace60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610da2565b610b36610b3060017f249fe6ee22e6e15273c690c436e9cd06968fe8fb9e18a17365c2d2aa2add4e72610da2565b60009055565b565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610b629190610e10565b600060405180830381855af49150503d8060008114610b9d576040519150601f19603f3d011682016040523d82523d6000602084013e610ba2565b606091505b5091509150610bb386838387610bbd565b9695505050505050565b60608315610c53578251600003610c4c5773ffffffffffffffffffffffffffffffffffffffff85163b610c4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610219565b5081610c5d565b610c5d8383610c65565b949350505050565b815115610c755781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102199190610e2c565b600060208284031215610cbb57600080fd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610a9957600080fd5b60008083601f840112610cf157600080fd5b50813567ffffffffffffffff811115610d0957600080fd5b602083019150836020828501011115610d2157600080fd5b9250929050565b600080600080600060608688031215610d4057600080fd5b85359450602086013567ffffffffffffffff80821115610d5f57600080fd5b610d6b89838a01610cdf565b90965094506040880135915080821115610d8457600080fd5b50610d9188828901610cdf565b969995985093965092949392505050565b818103818111156109de577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610e07578181015183820152602001610def565b50506000910152565b60008251610e22818460208701610dec565b9190910192915050565b6020815260008251806020840152610e4b816040850160208701610dec565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220ae4404c2199a0d05ab39a750f70e001d3407b5cc57f3c9fe5d53500c627e2e3f64736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x65 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x43 JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0xCB09F61F EQ PUSH2 0xE1 JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0xF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x54222E6C EQ PUSH2 0x6A JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAC JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x85 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x132 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x98 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xA7 CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x2A7 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0x439 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x8A PUSH2 0xDC CALLDATASIZE PUSH1 0x4 PUSH2 0xCA9 JUMP JUMPDEST PUSH2 0x563 JUMP JUMPDEST PUSH2 0x8A PUSH2 0xEF CALLDATASIZE PUSH1 0x4 PUSH2 0xD28 JUMP JUMPDEST PUSH2 0x6C4 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x100 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x109 PUSH2 0x8DE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x164 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x222 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO PUSH2 0x271 JUMPI PUSH2 0x268 DUP2 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0x913 JUMP JUMPDEST PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x2D5 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x38E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x40B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x160 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x4FB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x52E PUSH2 0x529 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x591 PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x64A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x678 PUSH2 0x29F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST DUP5 CALLVALUE LT ISZERO PUSH2 0x754 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A204E6F7420656E6F756768 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x2045544820666F72206665650000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x75D DUP6 PUSH2 0x9E4 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x78D PUSH2 0x160 PUSH1 0x1 PUSH32 0xBB5F5C81BADAC71DEAD5C1B29002CE6BBAC893E2645C265B13D7499DE81AB6E1 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH2 0x7B9 SWAP3 SWAP2 SWAP1 PUSH2 0xDDC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7F6 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7FB JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x88C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x56656E6E4669726577616C6C436F6E73756D65723A2050726F78792063616C6C PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x206661696C656400000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x219 JUMP JUMPDEST PUSH2 0x8CC ADDRESS DUP6 DUP6 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xA74 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x8D5 PUSH2 0xAA0 JUMP JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x90E PUSH2 0x160 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xDA2 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0x9CB JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x9D7 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xA12 PUSH2 0x529 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xA46 PUSH2 0xA40 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x2A4 PUSH2 0x29F PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA99 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0xE7E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xB38 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xAD4 PUSH2 0xACE PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0xB02 PUSH2 0xACE PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xDA2 JUMP JUMPDEST PUSH2 0xB36 PUSH2 0xB30 PUSH1 0x1 PUSH32 0x249FE6EE22E6E15273C690C436E9CD06968FE8FB9E18A17365C2D2AA2ADD4E72 PUSH2 0xDA2 JUMP JUMPDEST PUSH1 0x0 SWAP1 SSTORE JUMP JUMPDEST JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xB62 SWAP2 SWAP1 PUSH2 0xE10 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xB9D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xBA2 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xBB3 DUP7 DUP4 DUP4 DUP8 PUSH2 0xBBD JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xC53 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xC4C JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xC4C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x219 JUMP JUMPDEST POP DUP2 PUSH2 0xC5D JUMP JUMPDEST PUSH2 0xC5D DUP4 DUP4 PUSH2 0xC65 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xC75 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x219 SWAP2 SWAP1 PUSH2 0xE2C JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xCBB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xA99 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xCF1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xD09 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xD21 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xD40 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xD5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xD6B DUP10 DUP4 DUP11 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xD84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD91 DUP9 DUP3 DUP10 ADD PUSH2 0xCDF JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0x9DE JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE07 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xDEF JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0xE22 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0xE4B DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220AE4404 0xC2 NOT SWAP11 0xD SDIV 0xAB CODECOPY 0xA7 POP 0xF7 0xE STOP SAR CALLVALUE SMOD 0xB5 0xCC JUMPI RETURN 0xC9 INVALID 0x5D MSTORE8 POP 0xC PUSH3 0x7E2E3F PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"894:7604:11:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:383;;;;;;;;;;-1:-1:-1;5101:383:11;;;;;:::i;:::-;;:::i;:::-;;6184:241;;;;;;;;;;-1:-1:-1;6184:241:11;;;;;:::i;:::-;;:::i;6494:280::-;;;;;;;;;;;;;:::i;5842:176::-;;;;;;;;;;-1:-1:-1;5842:176:11;;;;;:::i;:::-;;:::i;3854:742::-;;;;;;:::i;:::-;;:::i;5555:127::-;;;;;;;;;;;;;:::i;:::-;;;1646:42:19;1634:55;;;1616:74;;1604:2;1589:18;5555:127:11;;;;;;;5101:383;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;:::-;8006:12;;7878:156;3274:46;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;;;;;;;;;5209:36:::1;::::0;::::1;::::0;5205:191:::1;;5269:115;5316:22:::0;1035:18;5269:46:::1;:115::i;:::-;5261:124;;;::::0;::::1;;5405:72;1720:58;1777:1;1728:45;1720:58;:::i;:::-;5454:22:::0;7663:23;;7561:141;5405:72:::1;5101:383:::0;:::o;6184:241::-;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;3274:46::-;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;1988:400:19;3252:109:11;6279:28:::1;::::0;::::1;6271:71;;;::::0;::::1;::::0;;2595:2:19;6271:71:11::1;::::0;::::1;2577:21:19::0;2634:2;2614:18;;;2607:30;2673:32;2653:18;;;2646:60;2723:18;;6271:71:11::1;2393:354:19::0;6271:71:11::1;6352:66;1595:52;1646:1;1603:39;1595:52;:::i;6494:280::-:0;6566:50;1595:52;1646:1;1603:39;1595:52;:::i;6566:50::-;6552:64;;:10;:64;;;6544:108;;;;;;;2954:2:19;6544:108:11;;;2936:21:19;2993:2;2973:18;;;2966:30;3032:33;3012:18;;;3005:61;3083:18;;6544:108:11;2752:355:19;6544:108:11;6662:58;1385:48;1432:1;1393:35;1385:48;:::i;:::-;6709:10;7663:23;;7561:141;6662:58;6735:32;;6756:10;1616:74:19;;6735:32:11;;1604:2:19;1589:18;6735:32:11;;;;;;;6494:280::o;5842:176::-;3274:46;1385:48;1432:1;1393:35;1385:48;:::i;3274:46::-;3260:60;;:10;:60;;;3252:109;;;;;;;2190:2:19;3252:109:11;;;2172:21:19;2229:2;2209:18;;;2202:30;2268:34;2248:18;;;2241:62;2339:6;2319:18;;;2312:34;2363:19;;3252:109:11;1988:400:19;3252:109:11;5919:51:::1;1211:42;1252:1;1219:29;1211:42;:::i;5919:51::-;5985:26;::::0;1646:42:19;1634:55;;1616:74;;5985:26:11::1;::::0;1604:2:19;1589:18;5985:26:11::1;;;;;;;5842:176:::0;:::o;3854:742::-;4031:13;4018:9;:26;;4010:83;;;;;;;3314:2:19;4010:83:11;;;3296:21:19;3353:2;3333:18;;;3326:30;3392:34;3372:18;;;3365:62;3463:14;3443:18;;;3436:42;3495:19;;4010:83:11;3112:408:19;4010:83:11;4103:41;4130:13;4103:26;:41::i;:::-;4154:30;4187:48;1720:58;1777:1;1728:45;1720:58;:::i;4187:48::-;4154:81;;4246:12;4264:22;:27;;4299:13;4314:12;;4264:63;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4245:82;;;4345:7;4337:59;;;;;;;4003:2:19;4337:59:11;;;3985:21:19;4042:2;4022:18;;;4015:30;4081:34;4061:18;;;4054:62;4152:9;4132:18;;;4125:37;4179:19;;4337:59:11;3801:403:19;4337:59:11;4500:49;4537:4;4544;;4500:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4500:28:11;;-1:-1:-1;;;4500:49:11:i;:::-;;4559:30;:28;:30::i;:::-;4000:596;;3854:742;;;;;:::o;5555:127::-;5603:7;5629:46;1385:48;1432:1;1393:35;1385:48;:::i;5629:46::-;5622:53;;5555:127;:::o;4421:647:4:-;4592:71;;;4383:66:19;4371:79;;4592:71:4;;;;4353:98:19;;;;4592:71:4;;;;;;;;;;4326:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;4602:259:11:-;4680:56;1954:54;2007:1;1962:41;1954:54;:::i;4680:56::-;4746:48;2079:57;2135:1;2087:44;2079:57;:::i;:::-;4792:1;7663:23;;7561:141;4746:48;4804:50;1839:47;1885:1;1847:34;1839:47;:::i;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;4867:228:11:-;4926:56;1954:54;2007:1;1962:41;1954:54;:::i;:::-;4979:1;7663:23;;7561:141;4926:56;4992:48;2079:57;2135:1;2087:44;2079:57;:::i;4992:48::-;5050:38;1839:47;1885:1;1847:34;1839:47;:::i;:::-;1831:56;7663:23;;7561:141;5050:38;4867:228::o;7058:325:2:-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;5211:2:19;8113:60:2;;;5193:21:19;5250:2;5230:18;;;5223:30;5289:31;5269:18;;;5262:59;5338:18;;8113:60:2;5009:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:309:19:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;181:9;168:23;231:42;224:5;220:54;213:5;210:65;200:93;;289:1;286;279:12;328:347;379:8;389:6;443:3;436:4;428:6;424:17;420:27;410:55;;461:1;458;451:12;410:55;-1:-1:-1;484:20:19;;527:18;516:30;;513:50;;;559:1;556;549:12;513:50;596:4;588:6;584:17;572:29;;648:3;641:4;632:6;624;620:19;616:30;613:39;610:59;;;665:1;662;655:12;610:59;328:347;;;;;:::o;680:785::-;779:6;787;795;803;811;864:2;852:9;843:7;839:23;835:32;832:52;;;880:1;877;870:12;832:52;916:9;903:23;893:33;;977:2;966:9;962:18;949:32;1000:18;1041:2;1033:6;1030:14;1027:34;;;1057:1;1054;1047:12;1027:34;1096:58;1146:7;1137:6;1126:9;1122:22;1096:58;:::i;:::-;1173:8;;-1:-1:-1;1070:84:19;-1:-1:-1;1261:2:19;1246:18;;1233:32;;-1:-1:-1;1277:16:19;;;1274:36;;;1306:1;1303;1296:12;1274:36;;1345:60;1397:7;1386:8;1375:9;1371:24;1345:60;:::i;:::-;680:785;;;;-1:-1:-1;680:785:19;;-1:-1:-1;1424:8:19;;1319:86;680:785;-1:-1:-1;;;680:785:19:o;1701:282::-;1768:9;;;1789:11;;;1786:191;;;1833:77;1830:1;1823:88;1934:4;1931:1;1924:15;1962:4;1959:1;1952:15;3525:271;3708:6;3700;3695:3;3682:33;3664:3;3734:16;;3759:13;;;3734:16;3525:271;-1:-1:-1;3525:271:19:o;4462:250::-;4547:1;4557:113;4571:6;4568:1;4565:13;4557:113;;;4647:11;;;4641:18;4628:11;;;4621:39;4593:2;4586:10;4557:113;;;-1:-1:-1;;4704:1:19;4686:16;;4679:27;4462:250::o;4717:287::-;4846:3;4884:6;4878:13;4900:66;4959:6;4954:3;4947:4;4939:6;4935:17;4900:66;:::i;:::-;4982:16;;;;;4717:287;-1:-1:-1;;4717:287:19:o;5367:455::-;5516:2;5505:9;5498:21;5479:4;5548:6;5542:13;5591:6;5586:2;5575:9;5571:18;5564:34;5607:79;5679:6;5674:2;5663:9;5659:18;5654:2;5646:6;5642:15;5607:79;:::i;:::-;5738:2;5726:15;5743:66;5722:88;5707:104;;;;5813:2;5703:113;;5367:455;-1:-1:-1;;5367:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(uint256,bytes,bytes)":"cb09f61f","setAttestationCenterProxy(address)":"54222e6c","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userNativeFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proxyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attestationCenterProxy\",\"type\":\"address\"}],\"name\":\"setAttestationCenterProxy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"David Benchimol @ Ironblocks\",\"details\":\"This contract is a parent contract that can be used to add firewall protection to any contract. The contract must define a firewall contract which will manage the policies that are applied to the contract. It also must define a firewall admin which will be able to add and remove policies.\",\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"constructor\":{\"details\":\"Initializes a contract protected by a firewall, with a firewall address and a firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"Firewall Consumer Base Contract\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/consumers/VennFirewallConsumerBase.sol\":\"VennFirewallConsumerBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/consumers/VennFirewallConsumerBase.sol\":{\"keccak256\":\"0x54532faec0537d0fd1784cbfbbb3631ef125847818ea2c418da39d953d3a3587\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://1040cf3e86080c8846f1263bdd9d6abd1094b21a244433eee8804a587f60626a\",\"dweb:/ipfs/QmcUjSkQVbLTY5kdFBdY5ZX1cUYbh9q39Mp7nKtay52s8s\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewall.sol":{"IFirewall":{"abi":[{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"postExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes32[]","name":"preValues","type":"bytes32[]"},{"internalType":"bytes32[]","name":"postValues","type":"bytes32[]"}],"name":"postExecutionPrivateInvariants","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"preExecution","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"preExecutionPrivateInvariants","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"postExecution(address,bytes,uint256)":"93163a91","postExecutionPrivateInvariants(address,bytes,uint256,bytes32[],bytes32[])":"cacb2838","preExecution(address,bytes,uint256)":"6fe1967c","preExecutionPrivateInvariants(address,bytes,uint256)":"33a0c536"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"postExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32[]\",\"name\":\"preValues\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"postValues\",\"type\":\"bytes32[]\"}],\"name\":\"postExecutionPrivateInvariants\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"preExecution\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"preExecutionPrivateInvariants\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewall.sol\":\"IFirewall\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewallConsumer.sol":{"IFirewallConsumer":{"abi":[{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"firewallAdmin()":"f05c8582"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewallConsumer.sol\":\"IFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IFirewallConsumerStorage.sol":{"IFirewallConsumerStorage":{"abi":[{"inputs":[],"name":"getApprovedVennPolicy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewall","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFirewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserNativeFee","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":{"getApprovedVennPolicy()":"6064a013","getFirewall()":"51cfdd39","getFirewallAdmin()":"af7f27f4","getUserNativeFee()":"1498be2f"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"getApprovedVennPolicy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewall\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFirewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getUserNativeFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFirewallConsumerStorage.sol\":\"IFirewallConsumerStorage\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFirewallConsumerStorage.sol\":{\"keccak256\":\"0x1939d1f1b5574ce839b08dbaaa7c899aec16c19f03d182058326e1b3a8eb7269\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://59dac1dab4984d5d8c1374f871ead9a887a2fcea7ce10eabb96fcd3bdd76ce0f\",\"dweb:/ipfs/QmQ6C3D1DUJT4Y5WWvTh2XQENHMqLBFvvwrNF1phZWbG9p\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/interfaces/IOwnable.sol":{"IOwnable":{"abi":[{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}],"evm":{"bytecode":{"functionDebugData":{},"generatedSources":[],"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"deployedBytecode":{"functionDebugData":{},"generatedSources":[],"immutableReferences":{},"linkReferences":{},"object":"","opcodes":"","sourceMap":""},"methodIdentifiers":{"owner()":"8da5cb5b"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IOwnable.sol\":\"IOwnable\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/BeaconProxyFirewallConsumer.sol":{"BeaconProxyFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"initializeFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setApprovedVennPolicyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1503":{"entryPoint":null,"id":1503,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":241,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:19","statements":[{"nodeType":"YulAssignment","src":"73:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:19"},"nodeType":"YulFunctionCall","src":"81:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:19"}]},{"body":{"nodeType":"YulBlock","src":"122:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:19"},"nodeType":"YulFunctionCall","src":"136:31:19"},"nodeType":"YulExpressionStatement","src":"136:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:19"},"nodeType":"YulFunctionCall","src":"180:15:19"},"nodeType":"YulExpressionStatement","src":"180:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:19"},"nodeType":"YulFunctionCall","src":"208:15:19"},"nodeType":"YulExpressionStatement","src":"208:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:19"},"nodeType":"YulFunctionCall","src":"102:11:19"},"nodeType":"YulIf","src":"99:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:19","type":""}],"src":"14:225:19"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506000806200004b6200004660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662620000f1565b839055565b620000816200007c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136620000f1565b829055565b620000b8620000b260017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3620000f1565b60019055565b620000e9620000b260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040620000f1565b505062000119565b818103818111156200011357634e487b7160e01b600052601160045260246000fd5b92915050565b61128a80620001296000396000f3fe60806040526004361061007b5760003560e01c80638c36d02d1161004e5780638c36d02d146100ea578063acef61061461010a578063efc2e7031461012a578063f05c85821461014a57600080fd5b80631a8828f414610080578063734b7198146100955780637c65c38b146100b55780637eba9471146100ca575b600080fd5b61009361008e36600461103e565b610188565b005b3480156100a157600080fd5b506100936100b03660046110c1565b6104f1565b3480156100c157600080fd5b50610093610657565b3480156100d657600080fd5b506100936100e53660046110c1565b610762565b3480156100f657600080fd5b506100936101053660046110c1565b61089c565b34801561011657600080fd5b506100936101253660046110de565b6109e3565b34801561013657600080fd5b506100936101453660046110f7565b610ade565b34801561015657600080fd5b5061015f610c22565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b8460006101b660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b610206835490565b14159050806102825760405162461bcd60e51b815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ac837f0c908cff00000000000000000000000000000000000000000000000000000000610c57565b6102b557600080fd5b60006102e96102e560017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b5490565b9050348111156103615760405162461bcd60e51b815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610279565b61039461038f60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b339055565b6103c86103c260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103f292919061116f565b60006040518083038185875af1925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b505090508061044257600080fd5b6104823088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d2892505050565b506104b76104b160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b60019055565b6104e56104b160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b50505050505050505050565b61051f6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b73ffffffffffffffffffffffffffffffffffffffff81166106215760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610279565b61065461064f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b829055565b50565b6106856102e560017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ff5760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610279565b61072d61038f60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50600061078d825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610800919061117f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461088d5760405162461bcd60e51b815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610279565b61089684610d54565b50505050565b6108ca6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109695760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61099761064f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611135565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b610a116102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab05760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61065461064f60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b610b0c6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bab5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b6000610bd860017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610c526102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610d0f575060208210155b8015610d1b5750600081115b9450505050505b92915050565b6060610d4d838360405180606001604052806027815260200161122e60279139610e96565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ddd5760405162461bcd60e51b815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610279565b6000610e0d6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff16146106215760405162461bcd60e51b815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610279565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ec091906111c0565b600060405180830381855af49150503d8060008114610efb576040519150601f19603f3d011682016040523d82523d6000602084013e610f00565b606091505b5091509150610f1186838387610f1b565b9695505050505050565b60608315610f97578251600003610f905773ffffffffffffffffffffffffffffffffffffffff85163b610f905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610279565b5081610fa1565b610fa18383610fa9565b949350505050565b815115610fb95781518083602001fd5b8060405162461bcd60e51b815260040161027991906111dc565b73ffffffffffffffffffffffffffffffffffffffff8116811461065457600080fd5b60008083601f84011261100757600080fd5b50813567ffffffffffffffff81111561101f57600080fd5b60208301915083602082850101111561103757600080fd5b9250929050565b60008060008060006060868803121561105657600080fd5b853561106181610fd3565b9450602086013567ffffffffffffffff8082111561107e57600080fd5b61108a89838a01610ff5565b909650945060408801359150808211156110a357600080fd5b506110b088828901610ff5565b969995985093965092949392505050565b6000602082840312156110d357600080fd5b8135610d4d81610fd3565b6000602082840312156110f057600080fd5b5035919050565b6000806040838503121561110a57600080fd5b823561111581610fd3565b91506020830135801515811461112a57600080fd5b809150509250929050565b81810381811115610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561119157600080fd5b8151610d4d81610fd3565b60005b838110156111b757818101518382015260200161119f565b50506000910152565b600082516111d281846020870161119c565b9190910192915050565b60208152600082518060208401526111fb81604085016020870161119c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220628c49b6a425fd8404bdb17365a48f2cf9139d7a3fc6fc4b98854f2dd28e756364736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH3 0x4B PUSH3 0x46 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0xF1 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x81 PUSH3 0x7C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0xF1 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xB8 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0xF1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xE9 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0xF1 JUMP JUMPDEST POP POP PUSH3 0x119 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x113 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x128A DUP1 PUSH3 0x129 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x188 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x657 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x89C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15F PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x1B6 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x206 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AC DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E9 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x361 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x3C2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3F2 SWAP3 SWAP2 SWAP1 PUSH2 0x116F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xD28 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x51F PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x685 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x72D PUSH2 0x38F PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 PUSH2 0x78D DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x88D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x896 DUP5 PUSH2 0xD54 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x997 PUSH2 0x64F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA11 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xB0C PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBD8 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC52 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xD0F JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xD1B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD4D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xDDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF11 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF1B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF97 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF90 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST POP DUP2 PUSH2 0xFA1 JUMP JUMPDEST PUSH2 0xFA1 DUP4 DUP4 PUSH2 0xFA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1061 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108A DUP10 DUP4 DUP11 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B0 DUP9 DUP3 DUP10 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1115 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xD22 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220628C49 0xB6 LOG4 0x25 REVERT DUP5 DIV 0xBD 0xB1 PUSH20 0x65A48F2CF9139D7A3FC6FC4B98854F2DD28E7563 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"540:852:16:-:0;;;;;;;;;;;;-1:-1:-1;651:1:17;;8608:51:7;1071:42;1112:1;1079:29;1071:42;:::i;:::-;8649:9;13673:23;;13571:141;8608:51;8669:62;1245:48;1292:1;1253:35;1245:48;:::i;:::-;8716:14;13673:23;;13571:141;8669:62;8741:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;8794:1;13673:23;;13571:141;8741:56;8807:48;2086:57;2142:1;2094:44;2086:57;:::i;8807:48::-;8521:341;;540:852:16;;14:225:19;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;540:852:16;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1820":{"entryPoint":null,"id":1820,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1839":{"entryPoint":null,"id":1839,"parameterSlots":1,"returnSlots":1},"@_initializeFirewallAdmin_3206":{"entryPoint":3412,"id":3206,"parameterSlots":1,"returnSlots":0},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":4009,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1704":{"entryPoint":1623,"id":1704,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1636":{"entryPoint":3106,"id":1636,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":3368,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3734,"id":744,"parameterSlots":3,"returnSlots":1},"@initializeFirewallAdmin_3100":{"entryPoint":1890,"id":3100,"parameterSlots":1,"returnSlots":0},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1590":{"entryPoint":392,"id":1590,"parameterSlots":5,"returnSlots":0},"@setApprovedVennPolicyFee_1625":{"entryPoint":2531,"id":1625,"parameterSlots":1,"returnSlots":0},"@setApprovedVennPolicy_1612":{"entryPoint":2782,"id":1612,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1678":{"entryPoint":1265,"id":1678,"parameterSlots":1,"returnSlots":0},"@setFirewall_1654":{"entryPoint":2204,"id":1654,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":3159,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3867,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":4085,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":4289,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4343,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":4158,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":4318,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4463,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4544,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4405,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4508,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":4051,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8796:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"59:109:19","statements":[{"body":{"nodeType":"YulBlock","src":"146:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"155:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"158:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"148:6:19"},"nodeType":"YulFunctionCall","src":"148:12:19"},"nodeType":"YulExpressionStatement","src":"148:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"82:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"100:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"89:3:19"},"nodeType":"YulFunctionCall","src":"89:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"79:2:19"},"nodeType":"YulFunctionCall","src":"79:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"72:6:19"},"nodeType":"YulFunctionCall","src":"72:73:19"},"nodeType":"YulIf","src":"69:93:19"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:19","type":""}],"src":"14:154:19"},{"body":{"nodeType":"YulBlock","src":"245:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"294:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"303:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"306:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"296:6:19"},"nodeType":"YulFunctionCall","src":"296:12:19"},"nodeType":"YulExpressionStatement","src":"296:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"273:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"281:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"269:3:19"},"nodeType":"YulFunctionCall","src":"269:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"288:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"265:3:19"},"nodeType":"YulFunctionCall","src":"265:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"258:6:19"},"nodeType":"YulFunctionCall","src":"258:35:19"},"nodeType":"YulIf","src":"255:55:19"},{"nodeType":"YulAssignment","src":"319:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"342:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"329:12:19"},"nodeType":"YulFunctionCall","src":"329:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"319:6:19"}]},{"body":{"nodeType":"YulBlock","src":"392:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"401:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"404:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"394:6:19"},"nodeType":"YulFunctionCall","src":"394:12:19"},"nodeType":"YulExpressionStatement","src":"394:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"364:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"372:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"361:2:19"},"nodeType":"YulFunctionCall","src":"361:30:19"},"nodeType":"YulIf","src":"358:50:19"},{"nodeType":"YulAssignment","src":"417:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"433:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"441:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"429:3:19"},"nodeType":"YulFunctionCall","src":"429:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"417:8:19"}]},{"body":{"nodeType":"YulBlock","src":"498:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"507:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"510:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"500:6:19"},"nodeType":"YulFunctionCall","src":"500:12:19"},"nodeType":"YulExpressionStatement","src":"500:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"469:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"477:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"465:3:19"},"nodeType":"YulFunctionCall","src":"465:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"486:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"461:3:19"},"nodeType":"YulFunctionCall","src":"461:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"493:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:19"},"nodeType":"YulFunctionCall","src":"458:39:19"},"nodeType":"YulIf","src":"455:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"208:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"216:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"224:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"234:6:19","type":""}],"src":"173:347:19"},{"body":{"nodeType":"YulBlock","src":"667:710:19","statements":[{"body":{"nodeType":"YulBlock","src":"713:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"722:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"725:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"715:6:19"},"nodeType":"YulFunctionCall","src":"715:12:19"},"nodeType":"YulExpressionStatement","src":"715:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"688:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"697:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"684:3:19"},"nodeType":"YulFunctionCall","src":"684:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"709:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"680:3:19"},"nodeType":"YulFunctionCall","src":"680:32:19"},"nodeType":"YulIf","src":"677:52:19"},{"nodeType":"YulVariableDeclaration","src":"738:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"764:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"751:12:19"},"nodeType":"YulFunctionCall","src":"751:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"783:24:19"},"nodeType":"YulFunctionCall","src":"783:31:19"},"nodeType":"YulExpressionStatement","src":"783:31:19"},{"nodeType":"YulAssignment","src":"823:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"833:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"823:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"847:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"878:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"889:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:19"},"nodeType":"YulFunctionCall","src":"874:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"861:12:19"},"nodeType":"YulFunctionCall","src":"861:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"851:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"902:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"912:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"906:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"957:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"959:6:19"},"nodeType":"YulFunctionCall","src":"959:12:19"},"nodeType":"YulExpressionStatement","src":"959:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"945:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"953:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"942:2:19"},"nodeType":"YulFunctionCall","src":"942:14:19"},"nodeType":"YulIf","src":"939:34:19"},{"nodeType":"YulVariableDeclaration","src":"982:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1038:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1049:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1034:3:19"},"nodeType":"YulFunctionCall","src":"1034:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1058:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1008:25:19"},"nodeType":"YulFunctionCall","src":"1008:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"986:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"996:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1075:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1085:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1075:6:19"}]},{"nodeType":"YulAssignment","src":"1102:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1112:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1102:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1129:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1162:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1173:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1158:3:19"},"nodeType":"YulFunctionCall","src":"1158:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1145:12:19"},"nodeType":"YulFunctionCall","src":"1145:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1133:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1206:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1218:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1208:6:19"},"nodeType":"YulFunctionCall","src":"1208:12:19"},"nodeType":"YulExpressionStatement","src":"1208:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1192:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1202:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1189:2:19"},"nodeType":"YulFunctionCall","src":"1189:16:19"},"nodeType":"YulIf","src":"1186:36:19"},{"nodeType":"YulVariableDeclaration","src":"1231:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1287:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1298:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1283:3:19"},"nodeType":"YulFunctionCall","src":"1283:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1309:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1257:25:19"},"nodeType":"YulFunctionCall","src":"1257:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1235:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1245:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1326:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1336:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1326:6:19"}]},{"nodeType":"YulAssignment","src":"1353:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1363:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1353:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"601:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"612:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"624:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"632:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"640:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"648:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"656:6:19","type":""}],"src":"525:852:19"},{"body":{"nodeType":"YulBlock","src":"1452:177:19","statements":[{"body":{"nodeType":"YulBlock","src":"1498:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1510:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1500:6:19"},"nodeType":"YulFunctionCall","src":"1500:12:19"},"nodeType":"YulExpressionStatement","src":"1500:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1473:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1482:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1469:3:19"},"nodeType":"YulFunctionCall","src":"1469:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1494:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1465:3:19"},"nodeType":"YulFunctionCall","src":"1465:32:19"},"nodeType":"YulIf","src":"1462:52:19"},{"nodeType":"YulVariableDeclaration","src":"1523:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1536:12:19"},"nodeType":"YulFunctionCall","src":"1536:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1527:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1568:24:19"},"nodeType":"YulFunctionCall","src":"1568:31:19"},"nodeType":"YulExpressionStatement","src":"1568:31:19"},{"nodeType":"YulAssignment","src":"1608:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"1618:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1608:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1418:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1429:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1441:6:19","type":""}],"src":"1382:247:19"},{"body":{"nodeType":"YulBlock","src":"1704:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"1750:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1759:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1762:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1752:6:19"},"nodeType":"YulFunctionCall","src":"1752:12:19"},"nodeType":"YulExpressionStatement","src":"1752:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1725:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1734:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1721:3:19"},"nodeType":"YulFunctionCall","src":"1721:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1746:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1717:3:19"},"nodeType":"YulFunctionCall","src":"1717:32:19"},"nodeType":"YulIf","src":"1714:52:19"},{"nodeType":"YulAssignment","src":"1775:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1798:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1785:12:19"},"nodeType":"YulFunctionCall","src":"1785:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1775:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1670:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1681:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1693:6:19","type":""}],"src":"1634:180:19"},{"body":{"nodeType":"YulBlock","src":"1903:332:19","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:19"},"nodeType":"YulFunctionCall","src":"1951:12:19"},"nodeType":"YulExpressionStatement","src":"1951:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1924:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1933:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1920:3:19"},"nodeType":"YulFunctionCall","src":"1920:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1945:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1916:3:19"},"nodeType":"YulFunctionCall","src":"1916:32:19"},"nodeType":"YulIf","src":"1913:52:19"},{"nodeType":"YulVariableDeclaration","src":"1974:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2000:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1987:12:19"},"nodeType":"YulFunctionCall","src":"1987:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1978:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2044:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2019:24:19"},"nodeType":"YulFunctionCall","src":"2019:31:19"},"nodeType":"YulExpressionStatement","src":"2019:31:19"},{"nodeType":"YulAssignment","src":"2059:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"2069:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2059:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"2083:47:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2115:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2126:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2111:3:19"},"nodeType":"YulFunctionCall","src":"2111:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2098:12:19"},"nodeType":"YulFunctionCall","src":"2098:32:19"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2087:7:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2187:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2196:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2199:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2189:6:19"},"nodeType":"YulFunctionCall","src":"2189:12:19"},"nodeType":"YulExpressionStatement","src":"2189:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2152:7:19"},{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2175:7:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2168:6:19"},"nodeType":"YulFunctionCall","src":"2168:15:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2161:6:19"},"nodeType":"YulFunctionCall","src":"2161:23:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2149:2:19"},"nodeType":"YulFunctionCall","src":"2149:36:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2142:6:19"},"nodeType":"YulFunctionCall","src":"2142:44:19"},"nodeType":"YulIf","src":"2139:64:19"},{"nodeType":"YulAssignment","src":"2212:17:19","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2222:7:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2212:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1861:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1872:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1884:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1892:6:19","type":""}],"src":"1819:416:19"},{"body":{"nodeType":"YulBlock","src":"2341:125:19","statements":[{"nodeType":"YulAssignment","src":"2351:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2363:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2374:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2359:3:19"},"nodeType":"YulFunctionCall","src":"2359:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2351:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2393:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2408:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2416:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2404:3:19"},"nodeType":"YulFunctionCall","src":"2404:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2386:6:19"},"nodeType":"YulFunctionCall","src":"2386:74:19"},"nodeType":"YulExpressionStatement","src":"2386:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2310:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2321:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2332:4:19","type":""}],"src":"2240:226:19"},{"body":{"nodeType":"YulBlock","src":"2520:233:19","statements":[{"nodeType":"YulAssignment","src":"2530:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2542:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2545:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2538:3:19"},"nodeType":"YulFunctionCall","src":"2538:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2530:4:19"}]},{"body":{"nodeType":"YulBlock","src":"2579:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2600:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2603:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2593:6:19"},"nodeType":"YulFunctionCall","src":"2593:88:19"},"nodeType":"YulExpressionStatement","src":"2593:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2701:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2694:6:19"},"nodeType":"YulFunctionCall","src":"2694:15:19"},"nodeType":"YulExpressionStatement","src":"2694:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2729:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2722:6:19"},"nodeType":"YulFunctionCall","src":"2722:15:19"},"nodeType":"YulExpressionStatement","src":"2722:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2562:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"2568:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2559:2:19"},"nodeType":"YulFunctionCall","src":"2559:11:19"},"nodeType":"YulIf","src":"2556:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2502:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"2505:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2511:4:19","type":""}],"src":"2471:282:19"},{"body":{"nodeType":"YulBlock","src":"2887:168:19","statements":[{"nodeType":"YulAssignment","src":"2897:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:19"},"nodeType":"YulFunctionCall","src":"2905:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2897:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2939:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2950:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2932:6:19"},"nodeType":"YulFunctionCall","src":"2932:25:19"},"nodeType":"YulExpressionStatement","src":"2932:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2977:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2988:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2973:3:19"},"nodeType":"YulFunctionCall","src":"2973:18:19"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2997:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"3005:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2993:3:19"},"nodeType":"YulFunctionCall","src":"2993:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2966:6:19"},"nodeType":"YulFunctionCall","src":"2966:83:19"},"nodeType":"YulExpressionStatement","src":"2966:83:19"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2848:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2859:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2867:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2878:4:19","type":""}],"src":"2758:297:19"},{"body":{"nodeType":"YulBlock","src":"3234:232:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3251:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3262:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3244:6:19"},"nodeType":"YulFunctionCall","src":"3244:21:19"},"nodeType":"YulExpressionStatement","src":"3244:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3285:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3296:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3281:3:19"},"nodeType":"YulFunctionCall","src":"3281:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3301:2:19","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:19"},"nodeType":"YulFunctionCall","src":"3274:30:19"},"nodeType":"YulExpressionStatement","src":"3274:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:19"},"nodeType":"YulFunctionCall","src":"3320:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056","kind":"string","nodeType":"YulLiteral","src":"3340:34:19","type":"","value":"FirewallConsumer: Not approved V"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3313:6:19"},"nodeType":"YulFunctionCall","src":"3313:62:19"},"nodeType":"YulExpressionStatement","src":"3313:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3395:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3406:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3391:3:19"},"nodeType":"YulFunctionCall","src":"3391:18:19"},{"hexValue":"656e6e20706f6c696379","kind":"string","nodeType":"YulLiteral","src":"3411:12:19","type":"","value":"enn policy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3384:6:19"},"nodeType":"YulFunctionCall","src":"3384:40:19"},"nodeType":"YulExpressionStatement","src":"3384:40:19"},{"nodeType":"YulAssignment","src":"3433:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3445:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3456:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:19"},"nodeType":"YulFunctionCall","src":"3441:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3433:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3211:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3225:4:19","type":""}],"src":"3060:406:19"},{"body":{"nodeType":"YulBlock","src":"3645:230:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:19"},"nodeType":"YulFunctionCall","src":"3655:21:19"},"nodeType":"YulExpressionStatement","src":"3655:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3696:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3707:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3692:3:19"},"nodeType":"YulFunctionCall","src":"3692:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3712:2:19","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3685:6:19"},"nodeType":"YulFunctionCall","src":"3685:30:19"},"nodeType":"YulExpressionStatement","src":"3685:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:19"},"nodeType":"YulFunctionCall","src":"3731:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676820455448","kind":"string","nodeType":"YulLiteral","src":"3751:34:19","type":"","value":"FirewallConsumer: Not enough ETH"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3724:6:19"},"nodeType":"YulFunctionCall","src":"3724:62:19"},"nodeType":"YulExpressionStatement","src":"3724:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3806:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3817:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3802:3:19"},"nodeType":"YulFunctionCall","src":"3802:18:19"},{"hexValue":"20666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3822:10:19","type":"","value":" for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3795:6:19"},"nodeType":"YulFunctionCall","src":"3795:38:19"},"nodeType":"YulExpressionStatement","src":"3795:38:19"},{"nodeType":"YulAssignment","src":"3842:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3854:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3865:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3850:3:19"},"nodeType":"YulFunctionCall","src":"3850:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3842:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3622:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3636:4:19","type":""}],"src":"3471:404:19"},{"body":{"nodeType":"YulBlock","src":"4027:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4050:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"4055:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"4063:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4037:12:19"},"nodeType":"YulFunctionCall","src":"4037:33:19"},"nodeType":"YulExpressionStatement","src":"4037:33:19"},{"nodeType":"YulVariableDeclaration","src":"4079:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4093:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"4098:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4089:3:19"},"nodeType":"YulFunctionCall","src":"4089:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4083:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4121:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"4125:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4114:6:19"},"nodeType":"YulFunctionCall","src":"4114:13:19"},"nodeType":"YulExpressionStatement","src":"4114:13:19"},{"nodeType":"YulAssignment","src":"4136:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"4143:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4136:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3995:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4000:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4008:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4019:3:19","type":""}],"src":"3880:271:19"},{"body":{"nodeType":"YulBlock","src":"4330:228:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4347:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4358:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4340:6:19"},"nodeType":"YulFunctionCall","src":"4340:21:19"},"nodeType":"YulExpressionStatement","src":"4340:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:19"},"nodeType":"YulFunctionCall","src":"4377:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4397:2:19","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4370:6:19"},"nodeType":"YulFunctionCall","src":"4370:30:19"},"nodeType":"YulExpressionStatement","src":"4370:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4420:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4431:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4416:3:19"},"nodeType":"YulFunctionCall","src":"4416:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"4436:34:19","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4409:6:19"},"nodeType":"YulFunctionCall","src":"4409:62:19"},"nodeType":"YulExpressionStatement","src":"4409:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4491:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4502:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4487:3:19"},"nodeType":"YulFunctionCall","src":"4487:18:19"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"4507:8:19","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4480:6:19"},"nodeType":"YulFunctionCall","src":"4480:36:19"},"nodeType":"YulExpressionStatement","src":"4480:36:19"},{"nodeType":"YulAssignment","src":"4525:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4537:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4548:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4533:3:19"},"nodeType":"YulFunctionCall","src":"4533:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4525:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4307:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4321:4:19","type":""}],"src":"4156:402:19"},{"body":{"nodeType":"YulBlock","src":"4737:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4754:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4765:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4747:6:19"},"nodeType":"YulFunctionCall","src":"4747:21:19"},"nodeType":"YulExpressionStatement","src":"4747:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4788:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4799:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4784:3:19"},"nodeType":"YulFunctionCall","src":"4784:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4804:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4777:6:19"},"nodeType":"YulFunctionCall","src":"4777:30:19"},"nodeType":"YulExpressionStatement","src":"4777:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4827:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4838:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4823:3:19"},"nodeType":"YulFunctionCall","src":"4823:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4843:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4816:6:19"},"nodeType":"YulFunctionCall","src":"4816:62:19"},"nodeType":"YulExpressionStatement","src":"4816:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4898:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4909:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4894:3:19"},"nodeType":"YulFunctionCall","src":"4894:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4914:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4887:6:19"},"nodeType":"YulFunctionCall","src":"4887:34:19"},"nodeType":"YulExpressionStatement","src":"4887:34:19"},{"nodeType":"YulAssignment","src":"4930:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4942:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4953:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4938:3:19"},"nodeType":"YulFunctionCall","src":"4938:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4930:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4714:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4728:4:19","type":""}],"src":"4563:400:19"},{"body":{"nodeType":"YulBlock","src":"5142:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5159:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5170:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5152:6:19"},"nodeType":"YulFunctionCall","src":"5152:21:19"},"nodeType":"YulExpressionStatement","src":"5152:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5193:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5204:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5189:3:19"},"nodeType":"YulFunctionCall","src":"5189:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5209:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5182:6:19"},"nodeType":"YulFunctionCall","src":"5182:30:19"},"nodeType":"YulExpressionStatement","src":"5182:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5232:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5243:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5228:3:19"},"nodeType":"YulFunctionCall","src":"5228:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5248:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5221:6:19"},"nodeType":"YulFunctionCall","src":"5221:60:19"},"nodeType":"YulExpressionStatement","src":"5221:60:19"},{"nodeType":"YulAssignment","src":"5290:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5302:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5313:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5298:3:19"},"nodeType":"YulFunctionCall","src":"5298:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5290:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5119:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5133:4:19","type":""}],"src":"4968:354:19"},{"body":{"nodeType":"YulBlock","src":"5501:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5518:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5511:6:19"},"nodeType":"YulFunctionCall","src":"5511:21:19"},"nodeType":"YulExpressionStatement","src":"5511:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5552:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5563:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5548:3:19"},"nodeType":"YulFunctionCall","src":"5548:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5568:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5541:6:19"},"nodeType":"YulFunctionCall","src":"5541:30:19"},"nodeType":"YulExpressionStatement","src":"5541:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5591:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5602:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5587:3:19"},"nodeType":"YulFunctionCall","src":"5587:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5607:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5580:6:19"},"nodeType":"YulFunctionCall","src":"5580:61:19"},"nodeType":"YulExpressionStatement","src":"5580:61:19"},{"nodeType":"YulAssignment","src":"5650:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5662:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5673:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5658:3:19"},"nodeType":"YulFunctionCall","src":"5658:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5650:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5478:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5492:4:19","type":""}],"src":"5327:355:19"},{"body":{"nodeType":"YulBlock","src":"5768:170:19","statements":[{"body":{"nodeType":"YulBlock","src":"5814:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5823:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5826:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5816:6:19"},"nodeType":"YulFunctionCall","src":"5816:12:19"},"nodeType":"YulExpressionStatement","src":"5816:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5789:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"5798:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5785:3:19"},"nodeType":"YulFunctionCall","src":"5785:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"5810:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5781:3:19"},"nodeType":"YulFunctionCall","src":"5781:32:19"},"nodeType":"YulIf","src":"5778:52:19"},{"nodeType":"YulVariableDeclaration","src":"5839:29:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5858:9:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5852:5:19"},"nodeType":"YulFunctionCall","src":"5852:16:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5843:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5902:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5877:24:19"},"nodeType":"YulFunctionCall","src":"5877:31:19"},"nodeType":"YulExpressionStatement","src":"5877:31:19"},{"nodeType":"YulAssignment","src":"5917:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"5927:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5917:6:19"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5734:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5745:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5757:6:19","type":""}],"src":"5687:251:19"},{"body":{"nodeType":"YulBlock","src":"6117:238:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6134:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6145:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6127:6:19"},"nodeType":"YulFunctionCall","src":"6127:21:19"},"nodeType":"YulExpressionStatement","src":"6127:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6179:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:19"},"nodeType":"YulFunctionCall","src":"6164:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6184:2:19","type":"","value":"48"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6157:6:19"},"nodeType":"YulFunctionCall","src":"6157:30:19"},"nodeType":"YulExpressionStatement","src":"6157:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6207:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6218:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6203:3:19"},"nodeType":"YulFunctionCall","src":"6203:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e6465","kind":"string","nodeType":"YulLiteral","src":"6223:34:19","type":"","value":"ProxyFirewallConsumerBase: sende"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6196:6:19"},"nodeType":"YulFunctionCall","src":"6196:62:19"},"nodeType":"YulExpressionStatement","src":"6196:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6278:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6289:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6274:3:19"},"nodeType":"YulFunctionCall","src":"6274:18:19"},{"hexValue":"72206973206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"6294:18:19","type":"","value":"r is not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6267:6:19"},"nodeType":"YulFunctionCall","src":"6267:46:19"},"nodeType":"YulExpressionStatement","src":"6267:46:19"},{"nodeType":"YulAssignment","src":"6322:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6334:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6345:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6330:3:19"},"nodeType":"YulFunctionCall","src":"6330:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6322:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6094:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6108:4:19","type":""}],"src":"5943:412:19"},{"body":{"nodeType":"YulBlock","src":"6459:149:19","statements":[{"nodeType":"YulAssignment","src":"6469:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6481:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6492:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6477:3:19"},"nodeType":"YulFunctionCall","src":"6477:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6469:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6511:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6526:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6534:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6522:3:19"},"nodeType":"YulFunctionCall","src":"6522:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6504:6:19"},"nodeType":"YulFunctionCall","src":"6504:98:19"},"nodeType":"YulExpressionStatement","src":"6504:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6428:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6439:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6450:4:19","type":""}],"src":"6360:248:19"},{"body":{"nodeType":"YulBlock","src":"6787:229:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6804:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6815:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6797:6:19"},"nodeType":"YulFunctionCall","src":"6797:21:19"},"nodeType":"YulExpressionStatement","src":"6797:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6838:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6849:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6834:3:19"},"nodeType":"YulFunctionCall","src":"6834:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6854:2:19","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6827:6:19"},"nodeType":"YulFunctionCall","src":"6827:30:19"},"nodeType":"YulExpressionStatement","src":"6827:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6877:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6888:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6873:3:19"},"nodeType":"YulFunctionCall","src":"6873:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f20","kind":"string","nodeType":"YulLiteral","src":"6893:34:19","type":"","value":"ProxyFirewallConsumerBase: zero "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6866:6:19"},"nodeType":"YulFunctionCall","src":"6866:62:19"},"nodeType":"YulExpressionStatement","src":"6866:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6948:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6959:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6944:3:19"},"nodeType":"YulFunctionCall","src":"6944:18:19"},{"hexValue":"61646472657373","kind":"string","nodeType":"YulLiteral","src":"6964:9:19","type":"","value":"address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6937:6:19"},"nodeType":"YulFunctionCall","src":"6937:37:19"},"nodeType":"YulExpressionStatement","src":"6937:37:19"},{"nodeType":"YulAssignment","src":"6983:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6995:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7006:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:19"},"nodeType":"YulFunctionCall","src":"6991:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6983:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6764:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6778:4:19","type":""}],"src":"6613:403:19"},{"body":{"nodeType":"YulBlock","src":"7195:234:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7212:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7223:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7205:6:19"},"nodeType":"YulFunctionCall","src":"7205:21:19"},"nodeType":"YulExpressionStatement","src":"7205:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7246:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7257:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7242:3:19"},"nodeType":"YulFunctionCall","src":"7242:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"7262:2:19","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7235:6:19"},"nodeType":"YulFunctionCall","src":"7235:30:19"},"nodeType":"YulExpressionStatement","src":"7235:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7285:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7296:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7281:3:19"},"nodeType":"YulFunctionCall","src":"7281:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e","kind":"string","nodeType":"YulLiteral","src":"7301:34:19","type":"","value":"ProxyFirewallConsumerBase: admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7274:6:19"},"nodeType":"YulFunctionCall","src":"7274:62:19"},"nodeType":"YulExpressionStatement","src":"7274:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7356:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7367:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7352:3:19"},"nodeType":"YulFunctionCall","src":"7352:18:19"},{"hexValue":"20616c726561647920736574","kind":"string","nodeType":"YulLiteral","src":"7372:14:19","type":"","value":" already set"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7345:6:19"},"nodeType":"YulFunctionCall","src":"7345:42:19"},"nodeType":"YulExpressionStatement","src":"7345:42:19"},{"nodeType":"YulAssignment","src":"7396:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7408:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7419:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7404:3:19"},"nodeType":"YulFunctionCall","src":"7404:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7396:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7172:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7186:4:19","type":""}],"src":"7021:408:19"},{"body":{"nodeType":"YulBlock","src":"7500:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"7510:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"7519:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7514:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"7579:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7604:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"7609:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7600:3:19"},"nodeType":"YulFunctionCall","src":"7600:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7623:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"7628:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7619:3:19"},"nodeType":"YulFunctionCall","src":"7619:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7613:5:19"},"nodeType":"YulFunctionCall","src":"7613:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7593:6:19"},"nodeType":"YulFunctionCall","src":"7593:39:19"},"nodeType":"YulExpressionStatement","src":"7593:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7540:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"7543:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7537:2:19"},"nodeType":"YulFunctionCall","src":"7537:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7551:19:19","statements":[{"nodeType":"YulAssignment","src":"7553:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7562:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"7565:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7558:3:19"},"nodeType":"YulFunctionCall","src":"7558:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7553:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"7533:3:19","statements":[]},"src":"7529:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7662:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7667:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7658:3:19"},"nodeType":"YulFunctionCall","src":"7658:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"7676:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7651:6:19"},"nodeType":"YulFunctionCall","src":"7651:27:19"},"nodeType":"YulExpressionStatement","src":"7651:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"7478:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"7483:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"7488:6:19","type":""}],"src":"7434:250:19"},{"body":{"nodeType":"YulBlock","src":"7826:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"7836:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7856:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7850:5:19"},"nodeType":"YulFunctionCall","src":"7850:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7840:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7911:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7919:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7907:3:19"},"nodeType":"YulFunctionCall","src":"7907:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"7926:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7931:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7872:34:19"},"nodeType":"YulFunctionCall","src":"7872:66:19"},"nodeType":"YulExpressionStatement","src":"7872:66:19"},{"nodeType":"YulAssignment","src":"7947:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7958:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7963:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:19"},"nodeType":"YulFunctionCall","src":"7954:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7947:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7802:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7807:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7818:3:19","type":""}],"src":"7689:287:19"},{"body":{"nodeType":"YulBlock","src":"8155:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8172:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8183:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8165:6:19"},"nodeType":"YulFunctionCall","src":"8165:21:19"},"nodeType":"YulExpressionStatement","src":"8165:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8206:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8217:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8202:3:19"},"nodeType":"YulFunctionCall","src":"8202:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"8222:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8195:6:19"},"nodeType":"YulFunctionCall","src":"8195:30:19"},"nodeType":"YulExpressionStatement","src":"8195:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8245:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8256:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:19"},"nodeType":"YulFunctionCall","src":"8241:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8261:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8234:6:19"},"nodeType":"YulFunctionCall","src":"8234:59:19"},"nodeType":"YulExpressionStatement","src":"8234:59:19"},{"nodeType":"YulAssignment","src":"8302:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8310:3:19"},"nodeType":"YulFunctionCall","src":"8310:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8302:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8132:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8146:4:19","type":""}],"src":"7981:353:19"},{"body":{"nodeType":"YulBlock","src":"8460:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8477:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8488:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8470:6:19"},"nodeType":"YulFunctionCall","src":"8470:21:19"},"nodeType":"YulExpressionStatement","src":"8470:21:19"},{"nodeType":"YulVariableDeclaration","src":"8500:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8520:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8514:5:19"},"nodeType":"YulFunctionCall","src":"8514:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8504:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8547:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8558:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8543:3:19"},"nodeType":"YulFunctionCall","src":"8543:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"8563:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8536:6:19"},"nodeType":"YulFunctionCall","src":"8536:34:19"},"nodeType":"YulExpressionStatement","src":"8536:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8618:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"8626:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8614:3:19"},"nodeType":"YulFunctionCall","src":"8614:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8635:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8646:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8631:3:19"},"nodeType":"YulFunctionCall","src":"8631:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"8651:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"8579:34:19"},"nodeType":"YulFunctionCall","src":"8579:79:19"},"nodeType":"YulExpressionStatement","src":"8579:79:19"},{"nodeType":"YulAssignment","src":"8667:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8683:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8702:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"8710:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8698:3:19"},"nodeType":"YulFunctionCall","src":"8698:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"8715:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8694:3:19"},"nodeType":"YulFunctionCall","src":"8694:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8679:3:19"},"nodeType":"YulFunctionCall","src":"8679:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"8785:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8675:3:19"},"nodeType":"YulFunctionCall","src":"8675:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8667:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8429:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8440:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8451:4:19","type":""}],"src":"8339:455:19"}]},"contents":"{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved V\")\n        mstore(add(headStart, 96), \"enn policy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough ETH\")\n        mstore(add(headStart, 96), \" for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: sende\")\n        mstore(add(headStart, 96), \"r is not allowed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: zero \")\n        mstore(add(headStart, 96), \"address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: admin\")\n        mstore(add(headStart, 96), \" already set\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061007b5760003560e01c80638c36d02d1161004e5780638c36d02d146100ea578063acef61061461010a578063efc2e7031461012a578063f05c85821461014a57600080fd5b80631a8828f414610080578063734b7198146100955780637c65c38b146100b55780637eba9471146100ca575b600080fd5b61009361008e36600461103e565b610188565b005b3480156100a157600080fd5b506100936100b03660046110c1565b6104f1565b3480156100c157600080fd5b50610093610657565b3480156100d657600080fd5b506100936100e53660046110c1565b610762565b3480156100f657600080fd5b506100936101053660046110c1565b61089c565b34801561011657600080fd5b506100936101253660046110de565b6109e3565b34801561013657600080fd5b506100936101453660046110f7565b610ade565b34801561015657600080fd5b5061015f610c22565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b8460006101b660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b610206835490565b14159050806102825760405162461bcd60e51b815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ac837f0c908cff00000000000000000000000000000000000000000000000000000000610c57565b6102b557600080fd5b60006102e96102e560017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b5490565b9050348111156103615760405162461bcd60e51b815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610279565b61039461038f60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b339055565b6103c86103c260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103f292919061116f565b60006040518083038185875af1925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b505090508061044257600080fd5b6104823088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d2892505050565b506104b76104b160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b60019055565b6104e56104b160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b50505050505050505050565b61051f6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b73ffffffffffffffffffffffffffffffffffffffff81166106215760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610279565b61065461064f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b829055565b50565b6106856102e560017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ff5760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610279565b61072d61038f60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50600061078d825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610800919061117f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461088d5760405162461bcd60e51b815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610279565b61089684610d54565b50505050565b6108ca6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109695760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61099761064f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611135565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b610a116102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab05760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61065461064f60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b610b0c6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bab5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b6000610bd860017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610c526102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610d0f575060208210155b8015610d1b5750600081115b9450505050505b92915050565b6060610d4d838360405180606001604052806027815260200161122e60279139610e96565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ddd5760405162461bcd60e51b815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610279565b6000610e0d6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff16146106215760405162461bcd60e51b815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610279565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ec091906111c0565b600060405180830381855af49150503d8060008114610efb576040519150601f19603f3d011682016040523d82523d6000602084013e610f00565b606091505b5091509150610f1186838387610f1b565b9695505050505050565b60608315610f97578251600003610f905773ffffffffffffffffffffffffffffffffffffffff85163b610f905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610279565b5081610fa1565b610fa18383610fa9565b949350505050565b815115610fb95781518083602001fd5b8060405162461bcd60e51b815260040161027991906111dc565b73ffffffffffffffffffffffffffffffffffffffff8116811461065457600080fd5b60008083601f84011261100757600080fd5b50813567ffffffffffffffff81111561101f57600080fd5b60208301915083602082850101111561103757600080fd5b9250929050565b60008060008060006060868803121561105657600080fd5b853561106181610fd3565b9450602086013567ffffffffffffffff8082111561107e57600080fd5b61108a89838a01610ff5565b909650945060408801359150808211156110a357600080fd5b506110b088828901610ff5565b969995985093965092949392505050565b6000602082840312156110d357600080fd5b8135610d4d81610fd3565b6000602082840312156110f057600080fd5b5035919050565b6000806040838503121561110a57600080fd5b823561111581610fd3565b91506020830135801515811461112a57600080fd5b809150509250929050565b81810381811115610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561119157600080fd5b8151610d4d81610fd3565b60005b838110156111b757818101518382015260200161119f565b50506000910152565b600082516111d281846020870161119c565b9190910192915050565b60208152600082518060208401526111fb81604085016020870161119c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220628c49b6a425fd8404bdb17365a48f2cf9139d7a3fc6fc4b98854f2dd28e756364736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x188 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x657 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x89C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15F PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x1B6 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x206 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AC DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E9 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x361 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x3C2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3F2 SWAP3 SWAP2 SWAP1 PUSH2 0x116F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xD28 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x51F PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x685 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x72D PUSH2 0x38F PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xA3F0AD74E5423AEBFD80D3EF4346578335A9A72AEAEE59FF6CB3582B35133D50 PUSH1 0x0 PUSH2 0x78D DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x88D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x896 DUP5 PUSH2 0xD54 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x997 PUSH2 0x64F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA11 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xB0C PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBD8 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC52 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xD0F JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xD1B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD4D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xDDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF11 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF1B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF97 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF90 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST POP DUP2 PUSH2 0xFA1 JUMP JUMPDEST PUSH2 0xFA1 DUP4 DUP4 PUSH2 0xFA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1061 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108A DUP10 DUP4 DUP11 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B0 DUP9 DUP3 DUP10 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1115 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xD22 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x70667358221220628C49 0xB6 LOG4 0x25 REVERT DUP5 DIV 0xBD 0xB1 PUSH20 0x65A48F2CF9139D7A3FC6FC4B98854F2DD28E7563 PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"540:852:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:843:7;;;;;;:::i;:::-;;:::i;:::-;;11651:241;;;;;;;;;;-1:-1:-1;11651:241:7;;;;;:::i;:::-;;:::i;11961:280::-;;;;;;;;;;;;;:::i;1233:157:16:-;;;;;;;;;;-1:-1:-1;1233:157:16;;;;;:::i;:::-;;:::i;11309:176:7:-;;;;;;;;;;-1:-1:-1;11309:176:7;;;;;:::i;:::-;;:::i;10809:142::-;;;;;;;;;;-1:-1:-1;10809:142:7;;;;;:::i;:::-;;:::i;10556:247::-;;;;;;;;;;-1:-1:-1;10556:247:7;;;;;:::i;:::-;;:::i;11022:127::-;;;;;;;;;;;;;:::i;:::-;;;2416:42:19;2404:55;;;2386:74;;2374:2;2359:18;11022:127:7;;;;;;;9358:843;9529:10;7759:13;1709:54;1762:1;1717:41;1709:54;:::i;:::-;7785:49;;;;;;2932:25:19;;;;3005:42;2993:55;;2973:18;;;2966:83;2905:18;;7785:49:7;;;;;;;;;;;;7775:60;;;;;;7759:76;;7845:25;7907:1;7899:10;;7873:22;7889:5;14478:12;;14356:150;7873:22;:36;;7845:64;;7927:20;7919:75;;;;-1:-1:-1;;;7919:75:7;;3262:2:19;7919:75:7;;;3244:21:19;3301:2;3281:18;;;3274:30;3340:34;3320:18;;;3313:62;3411:12;3391:18;;;3384:40;3441:19;;7919:75:7;;;;;;;;;8012:103;8059:10;1584:18;8012:46;:103::i;:::-;8004:112;;;;;;9551:11:::1;9573:46;1835:58;1892:1;1843:45;1835:58;:::i;:::-;14478:12:::0;;14356:150;9573:46:::1;9565:55:::0;-1:-1:-1;9638:9:7::1;:16:::0;-1:-1:-1;9638:16:7::1;9630:69;;;::::0;-1:-1:-1;;;9630:69:7;;3673:2:19;9630:69:7::1;::::0;::::1;3655:21:19::0;3712:2;3692:18;;;3685:30;3751:34;3731:18;;;3724:62;3822:10;3802:18;;;3795:38;3850:19;;9630:69:7::1;3471:404:19::0;9630:69:7::1;9709:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;9754:10;13673:23:::0;;13571:141;9709:56:::1;9775:48;2086:57;2142:1;2094:44;2086:57;:::i;:::-;9821:1;13673:23:::0;;13571:141;9775:48:::1;9834:12;9852:10;:15;;9875:3;9880:17;;9852:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:65;;;9916:7;9908:16;;;::::0;::::1;;10021:49;10058:4;10065;;10021:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10021:28:7::1;::::0;-1:-1:-1;;;10021:49:7:i:1;:::-;-1:-1:-1::0;10080:56:7::1;1961:54;2014:1;1969:41;1961:54;:::i;:::-;10133:1;13673:23:::0;;13571:141;10080:56:::1;10146:48;2086:57;2142:1;2094:44;2086:57;:::i;10146:48::-;9541:660;;7479:655:::0;;9358:843;;;;;;:::o;11651:241::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;11746:28:::1;::::0;::::1;11738:71;;;::::0;-1:-1:-1;;;11738:71:7;;5170:2:19;11738:71:7::1;::::0;::::1;5152:21:19::0;5209:2;5189:18;;;5182:30;5248:32;5228:18;;;5221:60;5298:18;;11738:71:7::1;4968:354:19::0;11738:71:7::1;11819:66;1455:52;1506:1;1463:39;1455:52;:::i;:::-;11870:14:::0;13673:23;;13571:141;11819:66:::1;11651:241:::0;:::o;11961:280::-;12033:50;1455:52;1506:1;1463:39;1455:52;:::i;12033:50::-;12019:64;;:10;:64;;;12011:108;;;;-1:-1:-1;;;12011:108:7;;5529:2:19;12011:108:7;;;5511:21:19;5568:2;5548:18;;;5541:30;5607:33;5587:18;;;5580:61;5658:18;;12011:108:7;5327:355:19;12011:108:7;12129:58;1245:48;1292:1;1253:35;1245:48;:::i;12129:58::-;12202:32;;12223:10;2386:74:19;;12202:32:7;;2374:2:19;2359:18;12202:32:7;;;;;;;11961:280::o;1233:157:16:-;728:66;1311:11;1103:37:17;728:66:16;14478:12:7;;14356:150;1103:37:17;1074:66;;1150:24;1186:18;1177:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1150:63;-1:-1:-1;1231:10:17;:30;;;;1223:91;;;;-1:-1:-1;;;1223:91:17;;6145:2:19;1223:91:17;;;6127:21:19;6184:2;6164:18;;;6157:30;6223:34;6203:18;;;6196:62;6294:18;6274;;;6267:46;6330:19;;1223:91:17;5943:412:19;1223:91:17;1343:40:16::1;1368:14;1343:24;:40::i;:::-;1064:268:17::0;;1233:157:16;;:::o;11309:176:7:-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;11386:51:::1;1071:42;1112:1;1079:29;1071:42;:::i;11386:51::-;11452:26;::::0;2416:42:19;2404:55;;2386:74;;11452:26:7::1;::::0;2374:2:19;2359:18;11452:26:7::1;;;;;;;11309:176:::0;:::o;10809:142::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;10893:51:::1;1835:58;1892:1;1843:45;1835:58;:::i;10556:247::-:0;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;10657:13:::1;1709:54;1762:1;1717:41;1709:54;:::i;:::-;10683:49;::::0;;::::1;::::0;::::1;2932:25:19::0;;;;3005:42;2993:55;;2973:18;;;2966:83;2905:18;;10683:49:7::1;;;;;;;;;;;;10673:60;;;;;;10657:76;;10780:6;10773:5;10766:21;10752:45;10556:247:::0;;:::o;11022:127::-;11070:7;11096:46;1245:48;1292:1;1253:35;1245:48;:::i;11096:46::-;11089:53;;11022:127;:::o;4421:647:4:-;4592:71;;;6534:66:19;6522:79;;4592:71:4;;;;6504:98:19;;;;4592:71:4;;;;;;;;;;6477:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;1770:368:17:-;1855:28;;;1847:80;;;;-1:-1:-1;;;1847:80:17;;6815:2:19;1847:80:17;;;6797:21:19;6854:2;6834:18;;;6827:30;6893:34;6873:18;;;6866:62;6964:9;6944:18;;;6937:37;6991:19;;1847:80:17;6613:403:19;1847:80:17;2003:1;1945:46;736:48;783:1;744:35;736:48;:::i;1945:46::-;:60;;;1937:117;;;;-1:-1:-1;;;1937:117:17;;7223:2:19;1937:117:17;;;7205:21:19;7262:2;7242:18;;;7235:30;7301:34;7281:18;;;7274:62;7372:14;7352:18;;;7345:42;7404:19;;1937:117:17;7021:408:19;7058:325:2;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;-1:-1:-1;;;8113:60:2;;8183:2:19;8113:60:2;;;8165:21:19;8222:2;8202:18;;;8195:30;8261:31;8241:18;;;8234:59;8310:18;;8113:60:2;7981:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:2;;;;;;;;:::i;14:154:19:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:347;224:8;234:6;288:3;281:4;273:6;269:17;265:27;255:55;;306:1;303;296:12;255:55;-1:-1:-1;329:20:19;;372:18;361:30;;358:50;;;404:1;401;394:12;358:50;441:4;433:6;429:17;417:29;;493:3;486:4;477:6;469;465:19;461:30;458:39;455:59;;;510:1;507;500:12;455:59;173:347;;;;;:::o;525:852::-;624:6;632;640;648;656;709:2;697:9;688:7;684:23;680:32;677:52;;;725:1;722;715:12;677:52;764:9;751:23;783:31;808:5;783:31;:::i;:::-;833:5;-1:-1:-1;889:2:19;874:18;;861:32;912:18;942:14;;;939:34;;;969:1;966;959:12;939:34;1008:58;1058:7;1049:6;1038:9;1034:22;1008:58;:::i;:::-;1085:8;;-1:-1:-1;982:84:19;-1:-1:-1;1173:2:19;1158:18;;1145:32;;-1:-1:-1;1189:16:19;;;1186:36;;;1218:1;1215;1208:12;1186:36;;1257:60;1309:7;1298:8;1287:9;1283:24;1257:60;:::i;:::-;525:852;;;;-1:-1:-1;525:852:19;;-1:-1:-1;1336:8:19;;1231:86;525:852;-1:-1:-1;;;525:852:19:o;1382:247::-;1441:6;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;1634:180::-;1693:6;1746:2;1734:9;1725:7;1721:23;1717:32;1714:52;;;1762:1;1759;1752:12;1714:52;-1:-1:-1;1785:23:19;;1634:180;-1:-1:-1;1634:180:19:o;1819:416::-;1884:6;1892;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;2000:9;1987:23;2019:31;2044:5;2019:31;:::i;:::-;2069:5;-1:-1:-1;2126:2:19;2111:18;;2098:32;2168:15;;2161:23;2149:36;;2139:64;;2199:1;2196;2189:12;2139:64;2222:7;2212:17;;;1819:416;;;;;:::o;2471:282::-;2538:9;;;2559:11;;;2556:191;;;2603:77;2600:1;2593:88;2704:4;2701:1;2694:15;2732:4;2729:1;2722:15;3880:271;4063:6;4055;4050:3;4037:33;4019:3;4089:16;;4114:13;;;4089:16;3880:271;-1:-1:-1;3880:271:19:o;5687:251::-;5757:6;5810:2;5798:9;5789:7;5785:23;5781:32;5778:52;;;5826:1;5823;5816:12;5778:52;5858:9;5852:16;5877:31;5902:5;5877:31;:::i;7434:250::-;7519:1;7529:113;7543:6;7540:1;7537:13;7529:113;;;7619:11;;;7613:18;7600:11;;;7593:39;7565:2;7558:10;7529:113;;;-1:-1:-1;;7676:1:19;7658:16;;7651:27;7434:250::o;7689:287::-;7818:3;7856:6;7850:13;7872:66;7931:6;7926:3;7919:4;7911:6;7907:17;7872:66;:::i;:::-;7954:16;;;;;7689:287;-1:-1:-1;;7689:287:19:o;8339:455::-;8488:2;8477:9;8470:21;8451:4;8520:6;8514:13;8563:6;8558:2;8547:9;8543:18;8536:34;8579:79;8651:6;8646:2;8635:9;8631:18;8626:2;8618:6;8614:15;8579:79;:::i;:::-;8710:2;8698:15;8715:66;8694:88;8679:104;;;;8785:2;8675:113;;8339:455;-1:-1:-1;;8339:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","initializeFirewallAdmin(address)":"7eba9471","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedVennPolicy(address,bool)":"efc2e703","setApprovedVennPolicyFee(uint256)":"acef6106","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"initializeFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setApprovedVennPolicyFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"initializeFirewallAdmin(address)\":{\"details\":\"Beacon Proxy Owner only function, allows the Beacon Proxy Owner to initialize the firewall admin in the following cases: - If the contract was originally deployed with a zero-address in the constructor (for various reasons) - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"params\":{\"_firewallAdmin\":\"address of the firewall admin\"}},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicy\":\"address of the Venn policy\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}},\"setApprovedVennPolicy(address,bool)\":{\"details\":\"Allows firewall admin to set approved Venn policies. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"status\":\"status of the Venn policy\",\"vennPolicy\":\"address of the Venn policy\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"BeaconProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/BeaconProxyFirewallConsumer.sol\":\"BeaconProxyFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0xeea5ac84823e36dddb5e629ae033650f8debcbacde6a2b8f54d57b93cd5017ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec4dbce3d0356a23e65a4a89be4f771e1d3fb1747e7efa4ce3453337b7dd749b\",\"dweb:/ipfs/QmZtxxDQvoWaLp5hx7Dzxur3YkxGQ6G9KAQDvF7PwwLqhy\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/BeaconProxyFirewallConsumer.sol\":{\"keccak256\":\"0x5c8b79d0c6fc8efdedb26d024ed758f775d4508ae9b0cc75bb9af3ee2464310c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2e5691eab0f3f037dbc56494719f1b796cf5f0bb0dad4113f28887e2f61ff58b\",\"dweb:/ipfs/Qme6pX5uZETJBVdUzaTQKPmfvvhxqR3t9vKrdyyoLEYJ5C\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/ProxyFirewallConsumerBase.sol":{"ProxyFirewallConsumerBase":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setApprovedVennPolicyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1503":{"entryPoint":null,"id":1503,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":241,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:19","statements":[{"nodeType":"YulAssignment","src":"73:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:19"},"nodeType":"YulFunctionCall","src":"81:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:19"}]},{"body":{"nodeType":"YulBlock","src":"122:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:19"},"nodeType":"YulFunctionCall","src":"136:31:19"},"nodeType":"YulExpressionStatement","src":"136:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:19"},"nodeType":"YulFunctionCall","src":"180:15:19"},"nodeType":"YulExpressionStatement","src":"180:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:19"},"nodeType":"YulFunctionCall","src":"208:15:19"},"nodeType":"YulExpressionStatement","src":"208:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:19"},"nodeType":"YulFunctionCall","src":"102:11:19"},"nodeType":"YulIf","src":"99:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:19","type":""}],"src":"14:225:19"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506000806200004b6200004660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662620000f1565b839055565b620000816200007c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136620000f1565b829055565b620000b8620000b260017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3620000f1565b60019055565b620000e9620000b260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040620000f1565b505062000119565b818103818111156200011357634e487b7160e01b600052601160045260246000fd5b92915050565b6110cb80620001296000396000f3fe6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122079043dcb10579fe3035d6de009e17ae64956b039d59735ce594953d82089e53964736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH3 0x4B PUSH3 0x46 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0xF1 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x81 PUSH3 0x7C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0xF1 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xB8 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0xF1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xE9 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0xF1 JUMP JUMPDEST POP POP PUSH3 0x119 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x113 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x10CB DUP1 PUSH3 0x129 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122079043D 0xCB LT JUMPI SWAP16 0xE3 SUB 0x5D PUSH14 0xE009E17AE64956B039D59735CE59 0x49 MSTORE8 0xD8 KECCAK256 DUP10 0xE5 CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"584:1556:17:-:0;;;;;;;;;;;;-1:-1:-1;651:1:17;;8608:51:7;1071:42;1112:1;1079:29;1071:42;:::i;:::-;8649:9;13673:23;;13571:141;8608:51;8669:62;1245:48;1292:1;1253:35;1245:48;:::i;:::-;8716:14;13673:23;;13571:141;8669:62;8741:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;8794:1;13673:23;;13571:141;8741:56;8807:48;2086:57;2142:1;2094:44;2086:57;:::i;8807:48::-;8521:341;;584:1556:17;;14:225:19;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;584:1556:17;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1820":{"entryPoint":null,"id":1820,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1839":{"entryPoint":null,"id":1839,"parameterSlots":1,"returnSlots":1},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":3564,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1704":{"entryPoint":1684,"id":1704,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1636":{"entryPoint":2957,"id":1636,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":3219,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3263,"id":744,"parameterSlots":3,"returnSlots":1},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1590":{"entryPoint":349,"id":1590,"parameterSlots":5,"returnSlots":0},"@setApprovedVennPolicyFee_1625":{"entryPoint":2330,"id":1625,"parameterSlots":1,"returnSlots":0},"@setApprovedVennPolicy_1612":{"entryPoint":2607,"id":1612,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1678":{"entryPoint":1274,"id":1678,"parameterSlots":1,"returnSlots":0},"@setFirewall_1654":{"entryPoint":1977,"id":1654,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":3010,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3396,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_address":{"entryPoint":3632,"id":null,"parameterSlots":1,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":3673,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":3875,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":3927,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":3746,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":3902,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4045,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4097,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4125,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":3987,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4061,"id":null,"parameterSlots":3,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:7153:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:147:19","statements":[{"nodeType":"YulAssignment","src":"73:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"95:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"82:12:19"},"nodeType":"YulFunctionCall","src":"82:20:19"},"variableNames":[{"name":"value","nodeType":"YulIdentifier","src":"73:5:19"}]},{"body":{"nodeType":"YulBlock","src":"188:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"197:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"200:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"190:6:19"},"nodeType":"YulFunctionCall","src":"190:12:19"},"nodeType":"YulExpressionStatement","src":"190:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"124:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"135:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"142:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"131:3:19"},"nodeType":"YulFunctionCall","src":"131:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"121:2:19"},"nodeType":"YulFunctionCall","src":"121:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"114:6:19"},"nodeType":"YulFunctionCall","src":"114:73:19"},"nodeType":"YulIf","src":"111:93:19"}]},"name":"abi_decode_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"42:6:19","type":""}],"returnVariables":[{"name":"value","nodeType":"YulTypedName","src":"53:5:19","type":""}],"src":"14:196:19"},{"body":{"nodeType":"YulBlock","src":"287:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"336:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"345:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"348:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"338:6:19"},"nodeType":"YulFunctionCall","src":"338:12:19"},"nodeType":"YulExpressionStatement","src":"338:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"315:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"323:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"311:3:19"},"nodeType":"YulFunctionCall","src":"311:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"330:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"307:3:19"},"nodeType":"YulFunctionCall","src":"307:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"300:6:19"},"nodeType":"YulFunctionCall","src":"300:35:19"},"nodeType":"YulIf","src":"297:55:19"},{"nodeType":"YulAssignment","src":"361:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"384:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"371:12:19"},"nodeType":"YulFunctionCall","src":"371:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"361:6:19"}]},{"body":{"nodeType":"YulBlock","src":"434:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"443:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"446:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"436:6:19"},"nodeType":"YulFunctionCall","src":"436:12:19"},"nodeType":"YulExpressionStatement","src":"436:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"406:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"414:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"403:2:19"},"nodeType":"YulFunctionCall","src":"403:30:19"},"nodeType":"YulIf","src":"400:50:19"},{"nodeType":"YulAssignment","src":"459:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"475:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"483:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"471:3:19"},"nodeType":"YulFunctionCall","src":"471:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"459:8:19"}]},{"body":{"nodeType":"YulBlock","src":"540:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"549:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"552:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"542:6:19"},"nodeType":"YulFunctionCall","src":"542:12:19"},"nodeType":"YulExpressionStatement","src":"542:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"511:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"519:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"507:3:19"},"nodeType":"YulFunctionCall","src":"507:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"528:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"503:3:19"},"nodeType":"YulFunctionCall","src":"503:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"535:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"500:2:19"},"nodeType":"YulFunctionCall","src":"500:39:19"},"nodeType":"YulIf","src":"497:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"250:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"258:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"266:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"276:6:19","type":""}],"src":"215:347:19"},{"body":{"nodeType":"YulBlock","src":"709:649:19","statements":[{"body":{"nodeType":"YulBlock","src":"755:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"764:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"767:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"757:6:19"},"nodeType":"YulFunctionCall","src":"757:12:19"},"nodeType":"YulExpressionStatement","src":"757:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"730:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"739:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"726:3:19"},"nodeType":"YulFunctionCall","src":"726:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"751:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"722:3:19"},"nodeType":"YulFunctionCall","src":"722:32:19"},"nodeType":"YulIf","src":"719:52:19"},{"nodeType":"YulAssignment","src":"780:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"809:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"790:18:19"},"nodeType":"YulFunctionCall","src":"790:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"780:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"828:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"859:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"870:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"855:3:19"},"nodeType":"YulFunctionCall","src":"855:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"842:12:19"},"nodeType":"YulFunctionCall","src":"842:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"832:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"883:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"893:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"887:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"938:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"947:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"950:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"940:6:19"},"nodeType":"YulFunctionCall","src":"940:12:19"},"nodeType":"YulExpressionStatement","src":"940:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"926:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"934:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"923:2:19"},"nodeType":"YulFunctionCall","src":"923:14:19"},"nodeType":"YulIf","src":"920:34:19"},{"nodeType":"YulVariableDeclaration","src":"963:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1019:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1030:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1015:3:19"},"nodeType":"YulFunctionCall","src":"1015:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1039:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"989:25:19"},"nodeType":"YulFunctionCall","src":"989:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"967:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"977:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1056:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1066:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1056:6:19"}]},{"nodeType":"YulAssignment","src":"1083:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1093:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1083:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1110:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1143:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1154:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1139:3:19"},"nodeType":"YulFunctionCall","src":"1139:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1126:12:19"},"nodeType":"YulFunctionCall","src":"1126:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1114:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1187:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1196:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1199:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1189:6:19"},"nodeType":"YulFunctionCall","src":"1189:12:19"},"nodeType":"YulExpressionStatement","src":"1189:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1173:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1183:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1170:2:19"},"nodeType":"YulFunctionCall","src":"1170:16:19"},"nodeType":"YulIf","src":"1167:36:19"},{"nodeType":"YulVariableDeclaration","src":"1212:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1268:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1279:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1264:3:19"},"nodeType":"YulFunctionCall","src":"1264:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1290:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1238:25:19"},"nodeType":"YulFunctionCall","src":"1238:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1216:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1226:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1307:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1317:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1307:6:19"}]},{"nodeType":"YulAssignment","src":"1334:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1344:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1334:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"643:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"654:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"666:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"674:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"682:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"690:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"698:6:19","type":""}],"src":"567:791:19"},{"body":{"nodeType":"YulBlock","src":"1433:116:19","statements":[{"body":{"nodeType":"YulBlock","src":"1479:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1488:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1491:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1481:6:19"},"nodeType":"YulFunctionCall","src":"1481:12:19"},"nodeType":"YulExpressionStatement","src":"1481:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1454:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1463:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1450:3:19"},"nodeType":"YulFunctionCall","src":"1450:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1475:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1446:3:19"},"nodeType":"YulFunctionCall","src":"1446:32:19"},"nodeType":"YulIf","src":"1443:52:19"},{"nodeType":"YulAssignment","src":"1504:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1533:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1514:18:19"},"nodeType":"YulFunctionCall","src":"1514:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1504:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1399:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1410:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1422:6:19","type":""}],"src":"1363:186:19"},{"body":{"nodeType":"YulBlock","src":"1624:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"1670:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1679:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1682:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1672:6:19"},"nodeType":"YulFunctionCall","src":"1672:12:19"},"nodeType":"YulExpressionStatement","src":"1672:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1645:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1654:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1641:3:19"},"nodeType":"YulFunctionCall","src":"1641:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1666:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1637:3:19"},"nodeType":"YulFunctionCall","src":"1637:32:19"},"nodeType":"YulIf","src":"1634:52:19"},{"nodeType":"YulAssignment","src":"1695:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1718:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1705:12:19"},"nodeType":"YulFunctionCall","src":"1705:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1695:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1590:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1601:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1613:6:19","type":""}],"src":"1554:180:19"},{"body":{"nodeType":"YulBlock","src":"1823:263:19","statements":[{"body":{"nodeType":"YulBlock","src":"1869:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1878:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1881:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1871:6:19"},"nodeType":"YulFunctionCall","src":"1871:12:19"},"nodeType":"YulExpressionStatement","src":"1871:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1844:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1853:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1840:3:19"},"nodeType":"YulFunctionCall","src":"1840:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1865:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1836:3:19"},"nodeType":"YulFunctionCall","src":"1836:32:19"},"nodeType":"YulIf","src":"1833:52:19"},{"nodeType":"YulAssignment","src":"1894:39:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1923:9:19"}],"functionName":{"name":"abi_decode_address","nodeType":"YulIdentifier","src":"1904:18:19"},"nodeType":"YulFunctionCall","src":"1904:29:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1894:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1942:45:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1972:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1968:3:19"},"nodeType":"YulFunctionCall","src":"1968:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1955:12:19"},"nodeType":"YulFunctionCall","src":"1955:32:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1946:5:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2040:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2049:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2052:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2042:6:19"},"nodeType":"YulFunctionCall","src":"2042:12:19"},"nodeType":"YulExpressionStatement","src":"2042:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2009:5:19"},{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2030:5:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2023:6:19"},"nodeType":"YulFunctionCall","src":"2023:13:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2016:6:19"},"nodeType":"YulFunctionCall","src":"2016:21:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2006:2:19"},"nodeType":"YulFunctionCall","src":"2006:32:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"1999:6:19"},"nodeType":"YulFunctionCall","src":"1999:40:19"},"nodeType":"YulIf","src":"1996:60:19"},{"nodeType":"YulAssignment","src":"2065:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"2075:5:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2065:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1781:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1792:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1804:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1812:6:19","type":""}],"src":"1739:347:19"},{"body":{"nodeType":"YulBlock","src":"2192:125:19","statements":[{"nodeType":"YulAssignment","src":"2202:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2214:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2225:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2210:3:19"},"nodeType":"YulFunctionCall","src":"2210:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2202:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2244:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2259:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2267:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2255:3:19"},"nodeType":"YulFunctionCall","src":"2255:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2237:6:19"},"nodeType":"YulFunctionCall","src":"2237:74:19"},"nodeType":"YulExpressionStatement","src":"2237:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2161:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2172:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2183:4:19","type":""}],"src":"2091:226:19"},{"body":{"nodeType":"YulBlock","src":"2371:233:19","statements":[{"nodeType":"YulAssignment","src":"2381:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2393:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2396:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2389:3:19"},"nodeType":"YulFunctionCall","src":"2389:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2381:4:19"}]},{"body":{"nodeType":"YulBlock","src":"2430:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2451:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2454:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2444:6:19"},"nodeType":"YulFunctionCall","src":"2444:88:19"},"nodeType":"YulExpressionStatement","src":"2444:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2552:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2555:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2545:6:19"},"nodeType":"YulFunctionCall","src":"2545:15:19"},"nodeType":"YulExpressionStatement","src":"2545:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2580:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2583:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2573:6:19"},"nodeType":"YulFunctionCall","src":"2573:15:19"},"nodeType":"YulExpressionStatement","src":"2573:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2413:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"2419:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2410:2:19"},"nodeType":"YulFunctionCall","src":"2410:11:19"},"nodeType":"YulIf","src":"2407:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2353:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"2356:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2362:4:19","type":""}],"src":"2322:282:19"},{"body":{"nodeType":"YulBlock","src":"2738:168:19","statements":[{"nodeType":"YulAssignment","src":"2748:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2760:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2771:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2756:3:19"},"nodeType":"YulFunctionCall","src":"2756:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2748:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2790:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2801:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2783:6:19"},"nodeType":"YulFunctionCall","src":"2783:25:19"},"nodeType":"YulExpressionStatement","src":"2783:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2828:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2839:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2824:3:19"},"nodeType":"YulFunctionCall","src":"2824:18:19"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2848:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2856:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2844:3:19"},"nodeType":"YulFunctionCall","src":"2844:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2817:6:19"},"nodeType":"YulFunctionCall","src":"2817:83:19"},"nodeType":"YulExpressionStatement","src":"2817:83:19"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2699:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2710:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2718:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2729:4:19","type":""}],"src":"2609:297:19"},{"body":{"nodeType":"YulBlock","src":"3085:232:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3102:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3113:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3095:6:19"},"nodeType":"YulFunctionCall","src":"3095:21:19"},"nodeType":"YulExpressionStatement","src":"3095:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3136:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3147:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3132:3:19"},"nodeType":"YulFunctionCall","src":"3132:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3152:2:19","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3125:6:19"},"nodeType":"YulFunctionCall","src":"3125:30:19"},"nodeType":"YulExpressionStatement","src":"3125:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3175:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3186:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3171:3:19"},"nodeType":"YulFunctionCall","src":"3171:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056","kind":"string","nodeType":"YulLiteral","src":"3191:34:19","type":"","value":"FirewallConsumer: Not approved V"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3164:6:19"},"nodeType":"YulFunctionCall","src":"3164:62:19"},"nodeType":"YulExpressionStatement","src":"3164:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3246:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3257:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3242:3:19"},"nodeType":"YulFunctionCall","src":"3242:18:19"},{"hexValue":"656e6e20706f6c696379","kind":"string","nodeType":"YulLiteral","src":"3262:12:19","type":"","value":"enn policy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3235:6:19"},"nodeType":"YulFunctionCall","src":"3235:40:19"},"nodeType":"YulExpressionStatement","src":"3235:40:19"},{"nodeType":"YulAssignment","src":"3284:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3296:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3307:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3292:3:19"},"nodeType":"YulFunctionCall","src":"3292:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3284:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3062:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3076:4:19","type":""}],"src":"2911:406:19"},{"body":{"nodeType":"YulBlock","src":"3496:230:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3524:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3506:6:19"},"nodeType":"YulFunctionCall","src":"3506:21:19"},"nodeType":"YulExpressionStatement","src":"3506:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3547:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3558:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3543:3:19"},"nodeType":"YulFunctionCall","src":"3543:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3563:2:19","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3536:6:19"},"nodeType":"YulFunctionCall","src":"3536:30:19"},"nodeType":"YulExpressionStatement","src":"3536:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3586:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3597:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3582:3:19"},"nodeType":"YulFunctionCall","src":"3582:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676820455448","kind":"string","nodeType":"YulLiteral","src":"3602:34:19","type":"","value":"FirewallConsumer: Not enough ETH"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3575:6:19"},"nodeType":"YulFunctionCall","src":"3575:62:19"},"nodeType":"YulExpressionStatement","src":"3575:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3657:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3668:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3653:3:19"},"nodeType":"YulFunctionCall","src":"3653:18:19"},{"hexValue":"20666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3673:10:19","type":"","value":" for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3646:6:19"},"nodeType":"YulFunctionCall","src":"3646:38:19"},"nodeType":"YulExpressionStatement","src":"3646:38:19"},{"nodeType":"YulAssignment","src":"3693:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3705:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3716:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3701:3:19"},"nodeType":"YulFunctionCall","src":"3701:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3693:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3473:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3487:4:19","type":""}],"src":"3322:404:19"},{"body":{"nodeType":"YulBlock","src":"3878:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3901:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"3906:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3914:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"3888:12:19"},"nodeType":"YulFunctionCall","src":"3888:33:19"},"nodeType":"YulExpressionStatement","src":"3888:33:19"},{"nodeType":"YulVariableDeclaration","src":"3930:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"3944:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"3949:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3940:3:19"},"nodeType":"YulFunctionCall","src":"3940:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"3934:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"3972:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"3976:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3965:6:19"},"nodeType":"YulFunctionCall","src":"3965:13:19"},"nodeType":"YulExpressionStatement","src":"3965:13:19"},{"nodeType":"YulAssignment","src":"3987:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"3994:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"3987:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3846:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"3851:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"3859:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"3870:3:19","type":""}],"src":"3731:271:19"},{"body":{"nodeType":"YulBlock","src":"4181:228:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4198:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4209:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4191:6:19"},"nodeType":"YulFunctionCall","src":"4191:21:19"},"nodeType":"YulExpressionStatement","src":"4191:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4232:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4243:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4228:3:19"},"nodeType":"YulFunctionCall","src":"4228:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4248:2:19","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4221:6:19"},"nodeType":"YulFunctionCall","src":"4221:30:19"},"nodeType":"YulExpressionStatement","src":"4221:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4271:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4282:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4267:3:19"},"nodeType":"YulFunctionCall","src":"4267:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"4287:34:19","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4260:6:19"},"nodeType":"YulFunctionCall","src":"4260:62:19"},"nodeType":"YulExpressionStatement","src":"4260:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4342:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4353:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4338:3:19"},"nodeType":"YulFunctionCall","src":"4338:18:19"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"4358:8:19","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4331:6:19"},"nodeType":"YulFunctionCall","src":"4331:36:19"},"nodeType":"YulExpressionStatement","src":"4331:36:19"},{"nodeType":"YulAssignment","src":"4376:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4388:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4399:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4384:3:19"},"nodeType":"YulFunctionCall","src":"4384:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4376:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4158:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4172:4:19","type":""}],"src":"4007:402:19"},{"body":{"nodeType":"YulBlock","src":"4588:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4605:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4616:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4598:6:19"},"nodeType":"YulFunctionCall","src":"4598:21:19"},"nodeType":"YulExpressionStatement","src":"4598:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4639:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4650:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4635:3:19"},"nodeType":"YulFunctionCall","src":"4635:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4655:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4628:6:19"},"nodeType":"YulFunctionCall","src":"4628:30:19"},"nodeType":"YulExpressionStatement","src":"4628:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4678:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4689:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4674:3:19"},"nodeType":"YulFunctionCall","src":"4674:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4694:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4667:6:19"},"nodeType":"YulFunctionCall","src":"4667:62:19"},"nodeType":"YulExpressionStatement","src":"4667:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4749:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4760:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4745:3:19"},"nodeType":"YulFunctionCall","src":"4745:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4765:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4738:6:19"},"nodeType":"YulFunctionCall","src":"4738:34:19"},"nodeType":"YulExpressionStatement","src":"4738:34:19"},{"nodeType":"YulAssignment","src":"4781:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4793:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4804:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4789:3:19"},"nodeType":"YulFunctionCall","src":"4789:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4781:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4565:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4579:4:19","type":""}],"src":"4414:400:19"},{"body":{"nodeType":"YulBlock","src":"4993:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5010:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5021:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5003:6:19"},"nodeType":"YulFunctionCall","src":"5003:21:19"},"nodeType":"YulExpressionStatement","src":"5003:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5044:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5055:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5040:3:19"},"nodeType":"YulFunctionCall","src":"5040:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5060:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5033:6:19"},"nodeType":"YulFunctionCall","src":"5033:30:19"},"nodeType":"YulExpressionStatement","src":"5033:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5083:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5094:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5079:3:19"},"nodeType":"YulFunctionCall","src":"5079:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5099:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5072:6:19"},"nodeType":"YulFunctionCall","src":"5072:60:19"},"nodeType":"YulExpressionStatement","src":"5072:60:19"},{"nodeType":"YulAssignment","src":"5141:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5153:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5164:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5149:3:19"},"nodeType":"YulFunctionCall","src":"5149:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5141:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4970:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4984:4:19","type":""}],"src":"4819:354:19"},{"body":{"nodeType":"YulBlock","src":"5352:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5369:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5380:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5362:6:19"},"nodeType":"YulFunctionCall","src":"5362:21:19"},"nodeType":"YulExpressionStatement","src":"5362:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5403:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5414:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5399:3:19"},"nodeType":"YulFunctionCall","src":"5399:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5419:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5392:6:19"},"nodeType":"YulFunctionCall","src":"5392:30:19"},"nodeType":"YulExpressionStatement","src":"5392:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5442:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5453:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5438:3:19"},"nodeType":"YulFunctionCall","src":"5438:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5458:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5431:6:19"},"nodeType":"YulFunctionCall","src":"5431:61:19"},"nodeType":"YulExpressionStatement","src":"5431:61:19"},{"nodeType":"YulAssignment","src":"5501:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5513:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5524:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5509:3:19"},"nodeType":"YulFunctionCall","src":"5509:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5501:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5329:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5343:4:19","type":""}],"src":"5178:355:19"},{"body":{"nodeType":"YulBlock","src":"5637:149:19","statements":[{"nodeType":"YulAssignment","src":"5647:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5659:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5670:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5655:3:19"},"nodeType":"YulFunctionCall","src":"5655:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5647:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5689:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"5704:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"5712:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"5700:3:19"},"nodeType":"YulFunctionCall","src":"5700:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5682:6:19"},"nodeType":"YulFunctionCall","src":"5682:98:19"},"nodeType":"YulExpressionStatement","src":"5682:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5606:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"5617:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5628:4:19","type":""}],"src":"5538:248:19"},{"body":{"nodeType":"YulBlock","src":"5857:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"5867:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"5876:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"5871:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"5936:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"5961:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5966:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5957:3:19"},"nodeType":"YulFunctionCall","src":"5957:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"5980:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"5985:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5976:3:19"},"nodeType":"YulFunctionCall","src":"5976:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5970:5:19"},"nodeType":"YulFunctionCall","src":"5970:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5950:6:19"},"nodeType":"YulFunctionCall","src":"5950:39:19"},"nodeType":"YulExpressionStatement","src":"5950:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5897:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"5900:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"5894:2:19"},"nodeType":"YulFunctionCall","src":"5894:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"5908:19:19","statements":[{"nodeType":"YulAssignment","src":"5910:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"5919:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"5922:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5915:3:19"},"nodeType":"YulFunctionCall","src":"5915:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"5910:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"5890:3:19","statements":[]},"src":"5886:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"6019:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6024:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6015:3:19"},"nodeType":"YulFunctionCall","src":"6015:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"6033:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6008:6:19"},"nodeType":"YulFunctionCall","src":"6008:27:19"},"nodeType":"YulExpressionStatement","src":"6008:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"5835:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"5840:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"5845:6:19","type":""}],"src":"5791:250:19"},{"body":{"nodeType":"YulBlock","src":"6183:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"6193:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6213:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6207:5:19"},"nodeType":"YulFunctionCall","src":"6207:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6197:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6268:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6276:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6264:3:19"},"nodeType":"YulFunctionCall","src":"6264:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"6283:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6288:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6229:34:19"},"nodeType":"YulFunctionCall","src":"6229:66:19"},"nodeType":"YulExpressionStatement","src":"6229:66:19"},{"nodeType":"YulAssignment","src":"6304:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"6315:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"6320:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6311:3:19"},"nodeType":"YulFunctionCall","src":"6311:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"6304:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"6159:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6164:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"6175:3:19","type":""}],"src":"6046:287:19"},{"body":{"nodeType":"YulBlock","src":"6512:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6529:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6540:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6522:6:19"},"nodeType":"YulFunctionCall","src":"6522:21:19"},"nodeType":"YulExpressionStatement","src":"6522:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6563:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6574:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6559:3:19"},"nodeType":"YulFunctionCall","src":"6559:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6579:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6552:6:19"},"nodeType":"YulFunctionCall","src":"6552:30:19"},"nodeType":"YulExpressionStatement","src":"6552:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6602:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6613:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6598:3:19"},"nodeType":"YulFunctionCall","src":"6598:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"6618:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6591:6:19"},"nodeType":"YulFunctionCall","src":"6591:59:19"},"nodeType":"YulExpressionStatement","src":"6591:59:19"},{"nodeType":"YulAssignment","src":"6659:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6671:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6682:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6667:3:19"},"nodeType":"YulFunctionCall","src":"6667:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6659:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6489:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6503:4:19","type":""}],"src":"6338:353:19"},{"body":{"nodeType":"YulBlock","src":"6817:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6834:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6845:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6827:6:19"},"nodeType":"YulFunctionCall","src":"6827:21:19"},"nodeType":"YulExpressionStatement","src":"6827:21:19"},{"nodeType":"YulVariableDeclaration","src":"6857:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6877:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"6871:5:19"},"nodeType":"YulFunctionCall","src":"6871:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"6861:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6904:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6915:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6900:3:19"},"nodeType":"YulFunctionCall","src":"6900:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"6920:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6893:6:19"},"nodeType":"YulFunctionCall","src":"6893:34:19"},"nodeType":"YulExpressionStatement","src":"6893:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6975:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6983:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6971:3:19"},"nodeType":"YulFunctionCall","src":"6971:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6992:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7003:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6988:3:19"},"nodeType":"YulFunctionCall","src":"6988:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"7008:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"6936:34:19"},"nodeType":"YulFunctionCall","src":"6936:79:19"},"nodeType":"YulExpressionStatement","src":"6936:79:19"},{"nodeType":"YulAssignment","src":"7024:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7040:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"7059:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7067:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7055:3:19"},"nodeType":"YulFunctionCall","src":"7055:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"7072:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"7051:3:19"},"nodeType":"YulFunctionCall","src":"7051:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7036:3:19"},"nodeType":"YulFunctionCall","src":"7036:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"7142:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7032:3:19"},"nodeType":"YulFunctionCall","src":"7032:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7024:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6786:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6797:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6808:4:19","type":""}],"src":"6696:455:19"}]},"contents":"{\n    { }\n    function abi_decode_address(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        value0 := abi_decode_address(headStart)\n        let value := calldataload(add(headStart, 32))\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value1 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved V\")\n        mstore(add(headStart, 96), \"enn policy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough ETH\")\n        mstore(add(headStart, 96), \" for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"6080604052600436106100705760003560e01c80638c36d02d1161004e5780638c36d02d146100bf578063acef6106146100df578063efc2e703146100ff578063f05c85821461011f57600080fd5b80631a8828f414610075578063734b71981461008a5780637c65c38b146100aa575b600080fd5b610088610083366004610ea2565b61015d565b005b34801561009657600080fd5b506100886100a5366004610f23565b6104fa565b3480156100b657600080fd5b50610088610694565b3480156100cb57600080fd5b506100886100da366004610f23565b6107b9565b3480156100eb57600080fd5b506100886100fa366004610f3e565b61091a565b34801561010b57600080fd5b5061008861011a366004610f57565b610a2f565b34801561012b57600080fd5b50610134610b8d565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b84600061018b60017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b6101db835490565b1415905080610271576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b61029b837f0c908cff00000000000000000000000000000000000000000000000000000000610bc2565b6102a457600080fd5b60006102d86102d460017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b5490565b90503481111561036a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610268565b61039d61039860017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b339055565b6103d16103cb60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103fb929190610fcd565b60006040518083038185875af1925050503d8060008114610438576040519150601f19603f3d011682016040523d82523d6000602084013e61043d565b606091505b505090508061044b57600080fd5b61048b3088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610c9392505050565b506104c06104ba60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3610f93565b60019055565b6104ee6104ba60017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040610f93565b50505050505050505050565b6105286102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610268565b61069161068c60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b829055565b50565b6106c26102d460017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610756576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610268565b61078461039860017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b6107e76102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6108ce61068c60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662610f93565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b6109486102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b61069161068c60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8610f93565b610a5d6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b16576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610268565b6000610b4360017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab610f93565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610bbd6102d460017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136610f93565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610c7a575060208210155b8015610c865750600081115b9450505050505b92915050565b6060610cb8838360405180606001604052806027815260200161106f60279139610cbf565b9392505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ce99190611001565b600060405180830381855af49150503d8060008114610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b5091509150610d3a86838387610d44565b9695505050505050565b60608315610dda578251600003610dd35773ffffffffffffffffffffffffffffffffffffffff85163b610dd3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610268565b5081610de4565b610de48383610dec565b949350505050565b815115610dfc5781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610268919061101d565b803573ffffffffffffffffffffffffffffffffffffffff81168114610e5457600080fd5b919050565b60008083601f840112610e6b57600080fd5b50813567ffffffffffffffff811115610e8357600080fd5b602083019150836020828501011115610e9b57600080fd5b9250929050565b600080600080600060608688031215610eba57600080fd5b610ec386610e30565b9450602086013567ffffffffffffffff80821115610ee057600080fd5b610eec89838a01610e59565b90965094506040880135915080821115610f0557600080fd5b50610f1288828901610e59565b969995985093965092949392505050565b600060208284031215610f3557600080fd5b610cb882610e30565b600060208284031215610f5057600080fd5b5035919050565b60008060408385031215610f6a57600080fd5b610f7383610e30565b915060208301358015158114610f8857600080fd5b809150509250929050565b81810381811115610c8d577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60005b83811015610ff8578181015183820152602001610fe0565b50506000910152565b60008251611013818460208701610fdd565b9190910192915050565b602081526000825180602084015261103c816040850160208701610fdd565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122079043dcb10579fe3035d6de009e17ae64956b039d59735ce594953d82089e53964736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x70 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xBF JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0xDF JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0xFF JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x11F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x75 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x8A JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xAA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x88 PUSH2 0x83 CALLDATASIZE PUSH1 0x4 PUSH2 0xEA2 JUMP JUMPDEST PUSH2 0x15D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x96 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xA5 CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x4FA JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xB6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x694 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xDA CALLDATASIZE PUSH1 0x4 PUSH2 0xF23 JUMP JUMPDEST PUSH2 0x7B9 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0xFA CALLDATASIZE PUSH1 0x4 PUSH2 0xF3E JUMP JUMPDEST PUSH2 0x91A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88 PUSH2 0x11A CALLDATASIZE PUSH1 0x4 PUSH2 0xF57 JUMP JUMPDEST PUSH2 0xA2F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x12B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x134 PUSH2 0xB8D JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x18B PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x1DB DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x271 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x29B DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xBC2 JUMP JUMPDEST PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2D8 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x36A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x39D PUSH2 0x398 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3D1 PUSH2 0x3CB PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3FB SWAP3 SWAP2 SWAP1 PUSH2 0xFCD JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x438 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x43D JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x44B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x48B ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xC93 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4C0 PUSH2 0x4BA PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4EE PUSH2 0x4BA PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0xF93 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x528 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5E1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x65E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x6C2 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x756 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x784 PUSH2 0x398 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH2 0x7E7 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x8A0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x8CE PUSH2 0x68C PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0x948 PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xA01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH2 0x691 PUSH2 0x68C PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0xF93 JUMP JUMPDEST PUSH2 0xA5D PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xB16 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x268 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xB43 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0xF93 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBBD PUSH2 0x2D4 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0xF93 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xC7A JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xC86 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xCB8 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x106F PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xCBF JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xCE9 SWAP2 SWAP1 PUSH2 0x1001 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xD24 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xD29 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xD3A DUP7 DUP4 DUP4 DUP8 PUSH2 0xD44 JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xDDA JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xDD3 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xDD3 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x268 JUMP JUMPDEST POP DUP2 PUSH2 0xDE4 JUMP JUMPDEST PUSH2 0xDE4 DUP4 DUP4 PUSH2 0xDEC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xDFC JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x268 SWAP2 SWAP1 PUSH2 0x101D JUMP JUMPDEST DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0xE54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0xE6B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0xE83 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0xE9B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0xEBA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC3 DUP7 PUSH2 0xE30 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEEC DUP10 DUP4 DUP11 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0xF05 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xF12 DUP9 DUP3 DUP10 ADD PUSH2 0xE59 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCB8 DUP3 PUSH2 0xE30 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0xF50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0xF6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF73 DUP4 PUSH2 0xE30 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0xF88 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xC8D JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFF8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE0 JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x1013 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x103C DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0xFDD JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x7066735822122079043D 0xCB LT JUMPI SWAP16 0xE3 SUB 0x5D PUSH14 0xE009E17AE64956B039D59735CE59 0x49 MSTORE8 0xD8 KECCAK256 DUP10 0xE5 CODECOPY PUSH5 0x736F6C6343 STOP ADDMOD SGT STOP CALLER ","sourceMap":"584:1556:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:843:7;;;;;;:::i;:::-;;:::i;:::-;;11651:241;;;;;;;;;;-1:-1:-1;11651:241:7;;;;;:::i;:::-;;:::i;11961:280::-;;;;;;;;;;;;;:::i;11309:176::-;;;;;;;;;;-1:-1:-1;11309:176:7;;;;;:::i;:::-;;:::i;10809:142::-;;;;;;;;;;-1:-1:-1;10809:142:7;;;;;:::i;:::-;;:::i;10556:247::-;;;;;;;;;;-1:-1:-1;10556:247:7;;;;;:::i;:::-;;:::i;11022:127::-;;;;;;;;;;;;;:::i;:::-;;;2267:42:19;2255:55;;;2237:74;;2225:2;2210:18;11022:127:7;;;;;;;9358:843;9529:10;7759:13;1709:54;1762:1;1717:41;1709:54;:::i;:::-;7785:49;;;;;;2783:25:19;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;7785:49:7;;;;;;;;;;;;7775:60;;;;;;7759:76;;7845:25;7907:1;7899:10;;7873:22;7889:5;14478:12;;14356:150;7873:22;:36;;7845:64;;7927:20;7919:75;;;;;;;3113:2:19;7919:75:7;;;3095:21:19;3152:2;3132:18;;;3125:30;3191:34;3171:18;;;3164:62;3262:12;3242:18;;;3235:40;3292:19;;7919:75:7;;;;;;;;;8012:103;8059:10;1584:18;8012:46;:103::i;:::-;8004:112;;;;;;9551:11:::1;9573:46;1835:58;1892:1;1843:45;1835:58;:::i;:::-;14478:12:::0;;14356:150;9573:46:::1;9565:55:::0;-1:-1:-1;9638:9:7::1;:16:::0;-1:-1:-1;9638:16:7::1;9630:69;;;::::0;::::1;::::0;;3524:2:19;9630:69:7::1;::::0;::::1;3506:21:19::0;3563:2;3543:18;;;3536:30;3602:34;3582:18;;;3575:62;3673:10;3653:18;;;3646:38;3701:19;;9630:69:7::1;3322:404:19::0;9630:69:7::1;9709:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;9754:10;13673:23:::0;;13571:141;9709:56:::1;9775:48;2086:57;2142:1;2094:44;2086:57;:::i;:::-;9821:1;13673:23:::0;;13571:141;9775:48:::1;9834:12;9852:10;:15;;9875:3;9880:17;;9852:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:65;;;9916:7;9908:16;;;::::0;::::1;;10021:49;10058:4;10065;;10021:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10021:28:7::1;::::0;-1:-1:-1;;;10021:49:7:i:1;:::-;-1:-1:-1::0;10080:56:7::1;1961:54;2014:1;1969:41;1961:54;:::i;:::-;10133:1;13673:23:::0;;13571:141;10080:56:::1;10146:48;2086:57;2142:1;2094:44;2086:57;:::i;10146:48::-;9541:660;;7479:655:::0;;9358:843;;;;;;:::o;11651:241::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11746:28:::1;::::0;::::1;11738:71;;;::::0;::::1;::::0;;5021:2:19;11738:71:7::1;::::0;::::1;5003:21:19::0;5060:2;5040:18;;;5033:30;5099:32;5079:18;;;5072:60;5149:18;;11738:71:7::1;4819:354:19::0;11738:71:7::1;11819:66;1455:52;1506:1;1463:39;1455:52;:::i;:::-;11870:14:::0;13673:23;;13571:141;11819:66:::1;11651:241:::0;:::o;11961:280::-;12033:50;1455:52;1506:1;1463:39;1455:52;:::i;12033:50::-;12019:64;;:10;:64;;;12011:108;;;;;;;5380:2:19;12011:108:7;;;5362:21:19;5419:2;5399:18;;;5392:30;5458:33;5438:18;;;5431:61;5509:18;;12011:108:7;5178:355:19;12011:108:7;12129:58;1245:48;1292:1;1253:35;1245:48;:::i;12129:58::-;12202:32;;12223:10;2237:74:19;;12202:32:7;;2225:2:19;2210:18;12202:32:7;;;;;;;11961:280::o;11309:176::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;11386:51:::1;1071:42;1112:1;1079:29;1071:42;:::i;11386:51::-;11452:26;::::0;2267:42:19;2255:55;;2237:74;;11452:26:7::1;::::0;2225:2:19;2210:18;11452:26:7::1;;;;;;;11309:176:::0;:::o;10809:142::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10893:51:::1;1835:58;1892:1;1843:45;1835:58;:::i;10556:247::-:0;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;;;;4616:2:19;8266:109:7;;;4598:21:19;4655:2;4635:18;;;4628:30;4694:34;4674:18;;;4667:62;4765:6;4745:18;;;4738:34;4789:19;;8266:109:7;4414:400:19;8266:109:7;10657:13:::1;1709:54;1762:1;1717:41;1709:54;:::i;:::-;10683:49;::::0;;::::1;::::0;::::1;2783:25:19::0;;;;2856:42;2844:55;;2824:18;;;2817:83;2756:18;;10683:49:7::1;;;;;;;;;;;;10673:60;;;;;;10657:76;;10780:6;10773:5;10766:21;10752:45;10556:247:::0;;:::o;11022:127::-;11070:7;11096:46;1245:48;1292:1;1253:35;1245:48;:::i;11096:46::-;11089:53;;11022:127;:::o;4421:647:4:-;4592:71;;;5712:66:19;5700:79;;4592:71:4;;;;5682:98:19;;;;4592:71:4;;;;;;;;;;5655:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;7058:325::-;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;;;;6540:2:19;8113:60:2;;;6522:21:19;6579:2;6559:18;;;6552:30;6618:31;6598:18;;;6591:59;6667:18;;8113:60:2;6338:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;;;;;;;;;;:::i;14:196:19:-;82:20;;142:42;131:54;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:347::-;266:8;276:6;330:3;323:4;315:6;311:17;307:27;297:55;;348:1;345;338:12;297:55;-1:-1:-1;371:20:19;;414:18;403:30;;400:50;;;446:1;443;436:12;400:50;483:4;475:6;471:17;459:29;;535:3;528:4;519:6;511;507:19;503:30;500:39;497:59;;;552:1;549;542:12;497:59;215:347;;;;;:::o;567:791::-;666:6;674;682;690;698;751:2;739:9;730:7;726:23;722:32;719:52;;;767:1;764;757:12;719:52;790:29;809:9;790:29;:::i;:::-;780:39;;870:2;859:9;855:18;842:32;893:18;934:2;926:6;923:14;920:34;;;950:1;947;940:12;920:34;989:58;1039:7;1030:6;1019:9;1015:22;989:58;:::i;:::-;1066:8;;-1:-1:-1;963:84:19;-1:-1:-1;1154:2:19;1139:18;;1126:32;;-1:-1:-1;1170:16:19;;;1167:36;;;1199:1;1196;1189:12;1167:36;;1238:60;1290:7;1279:8;1268:9;1264:24;1238:60;:::i;:::-;567:791;;;;-1:-1:-1;567:791:19;;-1:-1:-1;1317:8:19;;1212:86;567:791;-1:-1:-1;;;567:791:19:o;1363:186::-;1422:6;1475:2;1463:9;1454:7;1450:23;1446:32;1443:52;;;1491:1;1488;1481:12;1443:52;1514:29;1533:9;1514:29;:::i;1554:180::-;1613:6;1666:2;1654:9;1645:7;1641:23;1637:32;1634:52;;;1682:1;1679;1672:12;1634:52;-1:-1:-1;1705:23:19;;1554:180;-1:-1:-1;1554:180:19:o;1739:347::-;1804:6;1812;1865:2;1853:9;1844:7;1840:23;1836:32;1833:52;;;1881:1;1878;1871:12;1833:52;1904:29;1923:9;1904:29;:::i;:::-;1894:39;;1983:2;1972:9;1968:18;1955:32;2030:5;2023:13;2016:21;2009:5;2006:32;1996:60;;2052:1;2049;2042:12;1996:60;2075:5;2065:15;;;1739:347;;;;;:::o;2322:282::-;2389:9;;;2410:11;;;2407:191;;;2454:77;2451:1;2444:88;2555:4;2552:1;2545:15;2583:4;2580:1;2573:15;3731:271;3914:6;3906;3901:3;3888:33;3870:3;3940:16;;3965:13;;;3940:16;3731:271;-1:-1:-1;3731:271:19:o;5791:250::-;5876:1;5886:113;5900:6;5897:1;5894:13;5886:113;;;5976:11;;;5970:18;5957:11;;;5950:39;5922:2;5915:10;5886:113;;;-1:-1:-1;;6033:1:19;6015:16;;6008:27;5791:250::o;6046:287::-;6175:3;6213:6;6207:13;6229:66;6288:6;6283:3;6276:4;6268:6;6264:17;6229:66;:::i;:::-;6311:16;;;;;6046:287;-1:-1:-1;;6046:287:19:o;6696:455::-;6845:2;6834:9;6827:21;6808:4;6877:6;6871:13;6920:6;6915:2;6904:9;6900:18;6893:34;6936:79;7008:6;7003:2;6992:9;6988:18;6983:2;6975:6;6971:15;6936:79;:::i;:::-;7067:2;7055:15;7072:66;7051:88;7036:104;;;;7142:2;7032:113;;6696:455;-1:-1:-1;;6696:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedVennPolicy(address,bool)":"efc2e703","setApprovedVennPolicyFee(uint256)":"acef6106","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setApprovedVennPolicyFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicy\":\"address of the Venn policy\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}},\"setApprovedVennPolicy(address,bool)\":{\"details\":\"Allows firewall admin to set approved Venn policies. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"status\":\"status of the Venn policy\",\"vennPolicy\":\"address of the Venn policy\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"BeaconProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"this extension allows the Beacon Proxy Owner to initialize the firewall admin even if the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/ProxyFirewallConsumerBase.sol\":\"ProxyFirewallConsumerBase\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0xeea5ac84823e36dddb5e629ae033650f8debcbacde6a2b8f54d57b93cd5017ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec4dbce3d0356a23e65a4a89be4f771e1d3fb1747e7efa4ce3453337b7dd749b\",\"dweb:/ipfs/QmZtxxDQvoWaLp5hx7Dzxur3YkxGQ6G9KAQDvF7PwwLqhy\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}},"contracts/proxies/TransparentProxyFirewallConsumer.sol":{"TransparentProxyFirewallConsumer":{"abi":[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"FirewallAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newFirewall","type":"address"}],"name":"FirewallUpdated","type":"event"},{"inputs":[],"name":"acceptFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firewallAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"initializeFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bytes","name":"vennPolicyPayload","type":"bytes"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeFunctionCall","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"vennPolicy","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"setApprovedVennPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"}],"name":"setApprovedVennPolicyFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewall","type":"address"}],"name":"setFirewall","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_firewallAdmin","type":"address"}],"name":"setFirewallAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"}],"evm":{"bytecode":{"functionDebugData":{"@_1503":{"entryPoint":null,"id":1503,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"checked_sub_t_uint256":{"entryPoint":241,"id":null,"parameterSlots":2,"returnSlots":1}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:241:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"63:176:19","statements":[{"nodeType":"YulAssignment","src":"73:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"85:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"88:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"81:3:19"},"nodeType":"YulFunctionCall","src":"81:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"73:4:19"}]},{"body":{"nodeType":"YulBlock","src":"122:111:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"143:1:19","type":"","value":"0"},{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"150:3:19","type":"","value":"224"},{"kind":"number","nodeType":"YulLiteral","src":"155:10:19","type":"","value":"0x4e487b71"}],"functionName":{"name":"shl","nodeType":"YulIdentifier","src":"146:3:19"},"nodeType":"YulFunctionCall","src":"146:20:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"136:6:19"},"nodeType":"YulFunctionCall","src":"136:31:19"},"nodeType":"YulExpressionStatement","src":"136:31:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"187:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"190:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"180:6:19"},"nodeType":"YulFunctionCall","src":"180:15:19"},"nodeType":"YulExpressionStatement","src":"180:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"218:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"208:6:19"},"nodeType":"YulFunctionCall","src":"208:15:19"},"nodeType":"YulExpressionStatement","src":"208:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"105:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"111:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"102:2:19"},"nodeType":"YulFunctionCall","src":"102:11:19"},"nodeType":"YulIf","src":"99:134:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"45:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"48:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"54:4:19","type":""}],"src":"14:225:19"}]},"contents":"{\n    { }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"linkReferences":{},"object":"60806040523480156200001157600080fd5b506000806200004b6200004660017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662620000f1565b839055565b620000816200007c60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136620000f1565b829055565b620000b8620000b260017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3620000f1565b60019055565b620000e9620000b260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040620000f1565b505062000119565b818103818111156200011357634e487b7160e01b600052601160045260246000fd5b92915050565b61128a80620001296000396000f3fe60806040526004361061007b5760003560e01c80638c36d02d1161004e5780638c36d02d146100ea578063acef61061461010a578063efc2e7031461012a578063f05c85821461014a57600080fd5b80631a8828f414610080578063734b7198146100955780637c65c38b146100b55780637eba9471146100ca575b600080fd5b61009361008e36600461103e565b610188565b005b3480156100a157600080fd5b506100936100b03660046110c1565b6104f1565b3480156100c157600080fd5b50610093610657565b3480156100d657600080fd5b506100936100e53660046110c1565b610762565b3480156100f657600080fd5b506100936101053660046110c1565b61089c565b34801561011657600080fd5b506100936101253660046110de565b6109e3565b34801561013657600080fd5b506100936101453660046110f7565b610ade565b34801561015657600080fd5b5061015f610c22565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b8460006101b660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b610206835490565b14159050806102825760405162461bcd60e51b815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ac837f0c908cff00000000000000000000000000000000000000000000000000000000610c57565b6102b557600080fd5b60006102e96102e560017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b5490565b9050348111156103615760405162461bcd60e51b815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610279565b61039461038f60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b339055565b6103c86103c260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103f292919061116f565b60006040518083038185875af1925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b505090508061044257600080fd5b6104823088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d2892505050565b506104b76104b160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b60019055565b6104e56104b160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b50505050505050505050565b61051f6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b73ffffffffffffffffffffffffffffffffffffffff81166106215760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610279565b61065461064f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b829055565b50565b6106856102e560017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ff5760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610279565b61072d61038f60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103600061078d825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610800919061117f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461088d5760405162461bcd60e51b815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610279565b61089684610d54565b50505050565b6108ca6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109695760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61099761064f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611135565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b610a116102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab05760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61065461064f60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b610b0c6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bab5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b6000610bd860017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610c526102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610d0f575060208210155b8015610d1b5750600081115b9450505050505b92915050565b6060610d4d838360405180606001604052806027815260200161122e60279139610e96565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ddd5760405162461bcd60e51b815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610279565b6000610e0d6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff16146106215760405162461bcd60e51b815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610279565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ec091906111c0565b600060405180830381855af49150503d8060008114610efb576040519150601f19603f3d011682016040523d82523d6000602084013e610f00565b606091505b5091509150610f1186838387610f1b565b9695505050505050565b60608315610f97578251600003610f905773ffffffffffffffffffffffffffffffffffffffff85163b610f905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610279565b5081610fa1565b610fa18383610fa9565b949350505050565b815115610fb95781518083602001fd5b8060405162461bcd60e51b815260040161027991906111dc565b73ffffffffffffffffffffffffffffffffffffffff8116811461065457600080fd5b60008083601f84011261100757600080fd5b50813567ffffffffffffffff81111561101f57600080fd5b60208301915083602082850101111561103757600080fd5b9250929050565b60008060008060006060868803121561105657600080fd5b853561106181610fd3565b9450602086013567ffffffffffffffff8082111561107e57600080fd5b61108a89838a01610ff5565b909650945060408801359150808211156110a357600080fd5b506110b088828901610ff5565b969995985093965092949392505050565b6000602082840312156110d357600080fd5b8135610d4d81610fd3565b6000602082840312156110f057600080fd5b5035919050565b6000806040838503121561110a57600080fd5b823561111581610fd3565b91506020830135801515811461112a57600080fd5b809150509250929050565b81810381811115610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561119157600080fd5b8151610d4d81610fd3565b60005b838110156111b757818101518382015260200161119f565b50506000910152565b600082516111d281846020870161119c565b9190910192915050565b60208152600082518060208401526111fb81604085016020870161119c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203e5df9067f2a5e089337b55822a8bdccecc8897d994e964175dee28432e6cfe564736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 DUP1 PUSH3 0x4B PUSH3 0x46 PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH3 0xF1 JUMP JUMPDEST DUP4 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0x81 PUSH3 0x7C PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH3 0xF1 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xB8 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH3 0xF1 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH3 0xE9 PUSH3 0xB2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH3 0xF1 JUMP JUMPDEST POP POP PUSH3 0x119 JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH3 0x113 JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x128A DUP1 PUSH3 0x129 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x188 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x657 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x89C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15F PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x1B6 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x206 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AC DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E9 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x361 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x3C2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3F2 SWAP3 SWAP2 SWAP1 PUSH2 0x116F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xD28 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x51F PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x685 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x72D PUSH2 0x38F PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 PUSH1 0x0 PUSH2 0x78D DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x88D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x896 DUP5 PUSH2 0xD54 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x997 PUSH2 0x64F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA11 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xB0C PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBD8 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC52 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xD0F JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xD1B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD4D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xDDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF11 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF1B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF97 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF90 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST POP DUP2 PUSH2 0xFA1 JUMP JUMPDEST PUSH2 0xFA1 DUP4 DUP4 PUSH2 0xFA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1061 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108A DUP10 DUP4 DUP11 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B0 DUP9 DUP3 DUP10 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1115 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xD22 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212203E5DF9 MOD PUSH32 0x2A5E089337B55822A8BDCCECC8897D994E964175DEE28432E6CFE564736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ","sourceMap":"595:852:18:-:0;;;;;;;;;;;;-1:-1:-1;651:1:17;;8608:51:7;1071:42;1112:1;1079:29;1071:42;:::i;:::-;8649:9;13673:23;;13571:141;8608:51;8669:62;1245:48;1292:1;1253:35;1245:48;:::i;:::-;8716:14;13673:23;;13571:141;8669:62;8741:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;8794:1;13673:23;;13571:141;8741:56;8807:48;2086:57;2142:1;2094:44;2086:57;:::i;8807:48::-;8521:341;;595:852:18;;14:225:19;81:9;;;102:11;;;99:134;;;155:10;150:3;146:20;143:1;136:31;190:4;187:1;180:15;218:4;215:1;208:15;99:134;14:225;;;;:::o;:::-;595:852:18;;;;;;"},"deployedBytecode":{"functionDebugData":{"@_getAddressBySlot_1820":{"entryPoint":null,"id":1820,"parameterSlots":1,"returnSlots":1},"@_getValueBySlot_1839":{"entryPoint":null,"id":1839,"parameterSlots":1,"returnSlots":1},"@_initializeFirewallAdmin_3206":{"entryPoint":3412,"id":3206,"parameterSlots":1,"returnSlots":0},"@_msgSender_840":{"entryPoint":null,"id":840,"parameterSlots":0,"returnSlots":1},"@_revert_827":{"entryPoint":4009,"id":827,"parameterSlots":2,"returnSlots":0},"@_setAddressBySlot_1810":{"entryPoint":null,"id":1810,"parameterSlots":2,"returnSlots":0},"@_setValueBySlot_1829":{"entryPoint":null,"id":1829,"parameterSlots":2,"returnSlots":0},"@acceptFirewallAdmin_1704":{"entryPoint":1623,"id":1704,"parameterSlots":0,"returnSlots":0},"@firewallAdmin_1636":{"entryPoint":3106,"id":1636,"parameterSlots":0,"returnSlots":1},"@functionDelegateCall_715":{"entryPoint":3368,"id":715,"parameterSlots":2,"returnSlots":1},"@functionDelegateCall_744":{"entryPoint":3734,"id":744,"parameterSlots":3,"returnSlots":1},"@initializeFirewallAdmin_3231":{"entryPoint":1890,"id":3231,"parameterSlots":1,"returnSlots":0},"@isContract_516":{"entryPoint":null,"id":516,"parameterSlots":1,"returnSlots":1},"@safeFunctionCall_1590":{"entryPoint":392,"id":1590,"parameterSlots":5,"returnSlots":0},"@setApprovedVennPolicyFee_1625":{"entryPoint":2531,"id":1625,"parameterSlots":1,"returnSlots":0},"@setApprovedVennPolicy_1612":{"entryPoint":2782,"id":1612,"parameterSlots":2,"returnSlots":0},"@setFirewallAdmin_1678":{"entryPoint":1265,"id":1678,"parameterSlots":1,"returnSlots":0},"@setFirewall_1654":{"entryPoint":2204,"id":1654,"parameterSlots":1,"returnSlots":0},"@supportsERC165InterfaceUnchecked_1043":{"entryPoint":3159,"id":1043,"parameterSlots":2,"returnSlots":1},"@verifyCallResultFromTarget_783":{"entryPoint":3867,"id":783,"parameterSlots":4,"returnSlots":1},"abi_decode_bytes_calldata":{"entryPoint":4085,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_address":{"entryPoint":4289,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_address_fromMemory":{"entryPoint":4479,"id":null,"parameterSlots":2,"returnSlots":1},"abi_decode_tuple_t_addresst_bool":{"entryPoint":4343,"id":null,"parameterSlots":2,"returnSlots":2},"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr":{"entryPoint":4158,"id":null,"parameterSlots":2,"returnSlots":5},"abi_decode_tuple_t_uint256":{"entryPoint":4318,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4463,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed":{"entryPoint":4544,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_address__to_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":3,"returnSlots":1},"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":4572,"id":null,"parameterSlots":2,"returnSlots":1},"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed":{"entryPoint":null,"id":null,"parameterSlots":1,"returnSlots":1},"checked_sub_t_uint256":{"entryPoint":4405,"id":null,"parameterSlots":2,"returnSlots":1},"copy_memory_to_memory_with_cleanup":{"entryPoint":4508,"id":null,"parameterSlots":3,"returnSlots":0},"validator_revert_address":{"entryPoint":4051,"id":null,"parameterSlots":1,"returnSlots":0}},"generatedSources":[{"ast":{"nodeType":"YulBlock","src":"0:8796:19","statements":[{"nodeType":"YulBlock","src":"6:3:19","statements":[]},{"body":{"nodeType":"YulBlock","src":"59:109:19","statements":[{"body":{"nodeType":"YulBlock","src":"146:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"155:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"158:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"148:6:19"},"nodeType":"YulFunctionCall","src":"148:12:19"},"nodeType":"YulExpressionStatement","src":"148:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"82:5:19"},{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"93:5:19"},{"kind":"number","nodeType":"YulLiteral","src":"100:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"89:3:19"},"nodeType":"YulFunctionCall","src":"89:54:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"79:2:19"},"nodeType":"YulFunctionCall","src":"79:65:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"72:6:19"},"nodeType":"YulFunctionCall","src":"72:73:19"},"nodeType":"YulIf","src":"69:93:19"}]},"name":"validator_revert_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"value","nodeType":"YulTypedName","src":"48:5:19","type":""}],"src":"14:154:19"},{"body":{"nodeType":"YulBlock","src":"245:275:19","statements":[{"body":{"nodeType":"YulBlock","src":"294:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"303:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"306:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"296:6:19"},"nodeType":"YulFunctionCall","src":"296:12:19"},"nodeType":"YulExpressionStatement","src":"296:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"273:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"281:4:19","type":"","value":"0x1f"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"269:3:19"},"nodeType":"YulFunctionCall","src":"269:17:19"},{"name":"end","nodeType":"YulIdentifier","src":"288:3:19"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"265:3:19"},"nodeType":"YulFunctionCall","src":"265:27:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"258:6:19"},"nodeType":"YulFunctionCall","src":"258:35:19"},"nodeType":"YulIf","src":"255:55:19"},{"nodeType":"YulAssignment","src":"319:30:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"342:6:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"329:12:19"},"nodeType":"YulFunctionCall","src":"329:20:19"},"variableNames":[{"name":"length","nodeType":"YulIdentifier","src":"319:6:19"}]},{"body":{"nodeType":"YulBlock","src":"392:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"401:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"404:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"394:6:19"},"nodeType":"YulFunctionCall","src":"394:12:19"},"nodeType":"YulExpressionStatement","src":"394:12:19"}]},"condition":{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"364:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"372:18:19","type":"","value":"0xffffffffffffffff"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"361:2:19"},"nodeType":"YulFunctionCall","src":"361:30:19"},"nodeType":"YulIf","src":"358:50:19"},{"nodeType":"YulAssignment","src":"417:29:19","value":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"433:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"441:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"429:3:19"},"nodeType":"YulFunctionCall","src":"429:17:19"},"variableNames":[{"name":"arrayPos","nodeType":"YulIdentifier","src":"417:8:19"}]},{"body":{"nodeType":"YulBlock","src":"498:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"507:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"510:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"500:6:19"},"nodeType":"YulFunctionCall","src":"500:12:19"},"nodeType":"YulExpressionStatement","src":"500:12:19"}]},"condition":{"arguments":[{"arguments":[{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"469:6:19"},{"name":"length","nodeType":"YulIdentifier","src":"477:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"465:3:19"},"nodeType":"YulFunctionCall","src":"465:19:19"},{"kind":"number","nodeType":"YulLiteral","src":"486:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"461:3:19"},"nodeType":"YulFunctionCall","src":"461:30:19"},{"name":"end","nodeType":"YulIdentifier","src":"493:3:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"458:2:19"},"nodeType":"YulFunctionCall","src":"458:39:19"},"nodeType":"YulIf","src":"455:59:19"}]},"name":"abi_decode_bytes_calldata","nodeType":"YulFunctionDefinition","parameters":[{"name":"offset","nodeType":"YulTypedName","src":"208:6:19","type":""},{"name":"end","nodeType":"YulTypedName","src":"216:3:19","type":""}],"returnVariables":[{"name":"arrayPos","nodeType":"YulTypedName","src":"224:8:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"234:6:19","type":""}],"src":"173:347:19"},{"body":{"nodeType":"YulBlock","src":"667:710:19","statements":[{"body":{"nodeType":"YulBlock","src":"713:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"722:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"725:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"715:6:19"},"nodeType":"YulFunctionCall","src":"715:12:19"},"nodeType":"YulExpressionStatement","src":"715:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"688:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"697:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"684:3:19"},"nodeType":"YulFunctionCall","src":"684:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"709:2:19","type":"","value":"96"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"680:3:19"},"nodeType":"YulFunctionCall","src":"680:32:19"},"nodeType":"YulIf","src":"677:52:19"},{"nodeType":"YulVariableDeclaration","src":"738:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"764:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"751:12:19"},"nodeType":"YulFunctionCall","src":"751:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"742:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"808:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"783:24:19"},"nodeType":"YulFunctionCall","src":"783:31:19"},"nodeType":"YulExpressionStatement","src":"783:31:19"},{"nodeType":"YulAssignment","src":"823:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"833:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"823:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"847:46:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"878:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"889:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"874:3:19"},"nodeType":"YulFunctionCall","src":"874:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"861:12:19"},"nodeType":"YulFunctionCall","src":"861:32:19"},"variables":[{"name":"offset","nodeType":"YulTypedName","src":"851:6:19","type":""}]},{"nodeType":"YulVariableDeclaration","src":"902:28:19","value":{"kind":"number","nodeType":"YulLiteral","src":"912:18:19","type":"","value":"0xffffffffffffffff"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"906:2:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"957:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"966:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"969:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"959:6:19"},"nodeType":"YulFunctionCall","src":"959:12:19"},"nodeType":"YulExpressionStatement","src":"959:12:19"}]},"condition":{"arguments":[{"name":"offset","nodeType":"YulIdentifier","src":"945:6:19"},{"name":"_1","nodeType":"YulIdentifier","src":"953:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"942:2:19"},"nodeType":"YulFunctionCall","src":"942:14:19"},"nodeType":"YulIf","src":"939:34:19"},{"nodeType":"YulVariableDeclaration","src":"982:84:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1038:9:19"},{"name":"offset","nodeType":"YulIdentifier","src":"1049:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1034:3:19"},"nodeType":"YulFunctionCall","src":"1034:22:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1058:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1008:25:19"},"nodeType":"YulFunctionCall","src":"1008:58:19"},"variables":[{"name":"value1_1","nodeType":"YulTypedName","src":"986:8:19","type":""},{"name":"value2_1","nodeType":"YulTypedName","src":"996:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1075:18:19","value":{"name":"value1_1","nodeType":"YulIdentifier","src":"1085:8:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"1075:6:19"}]},{"nodeType":"YulAssignment","src":"1102:18:19","value":{"name":"value2_1","nodeType":"YulIdentifier","src":"1112:8:19"},"variableNames":[{"name":"value2","nodeType":"YulIdentifier","src":"1102:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"1129:48:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1162:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"1173:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1158:3:19"},"nodeType":"YulFunctionCall","src":"1158:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1145:12:19"},"nodeType":"YulFunctionCall","src":"1145:32:19"},"variables":[{"name":"offset_1","nodeType":"YulTypedName","src":"1133:8:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"1206:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1215:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1218:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1208:6:19"},"nodeType":"YulFunctionCall","src":"1208:12:19"},"nodeType":"YulExpressionStatement","src":"1208:12:19"}]},"condition":{"arguments":[{"name":"offset_1","nodeType":"YulIdentifier","src":"1192:8:19"},{"name":"_1","nodeType":"YulIdentifier","src":"1202:2:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"1189:2:19"},"nodeType":"YulFunctionCall","src":"1189:16:19"},"nodeType":"YulIf","src":"1186:36:19"},{"nodeType":"YulVariableDeclaration","src":"1231:86:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1287:9:19"},{"name":"offset_1","nodeType":"YulIdentifier","src":"1298:8:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"1283:3:19"},"nodeType":"YulFunctionCall","src":"1283:24:19"},{"name":"dataEnd","nodeType":"YulIdentifier","src":"1309:7:19"}],"functionName":{"name":"abi_decode_bytes_calldata","nodeType":"YulIdentifier","src":"1257:25:19"},"nodeType":"YulFunctionCall","src":"1257:60:19"},"variables":[{"name":"value3_1","nodeType":"YulTypedName","src":"1235:8:19","type":""},{"name":"value4_1","nodeType":"YulTypedName","src":"1245:8:19","type":""}]},{"nodeType":"YulAssignment","src":"1326:18:19","value":{"name":"value3_1","nodeType":"YulIdentifier","src":"1336:8:19"},"variableNames":[{"name":"value3","nodeType":"YulIdentifier","src":"1326:6:19"}]},{"nodeType":"YulAssignment","src":"1353:18:19","value":{"name":"value4_1","nodeType":"YulIdentifier","src":"1363:8:19"},"variableNames":[{"name":"value4","nodeType":"YulIdentifier","src":"1353:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"601:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"612:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"624:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"632:6:19","type":""},{"name":"value2","nodeType":"YulTypedName","src":"640:6:19","type":""},{"name":"value3","nodeType":"YulTypedName","src":"648:6:19","type":""},{"name":"value4","nodeType":"YulTypedName","src":"656:6:19","type":""}],"src":"525:852:19"},{"body":{"nodeType":"YulBlock","src":"1452:177:19","statements":[{"body":{"nodeType":"YulBlock","src":"1498:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1507:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1510:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1500:6:19"},"nodeType":"YulFunctionCall","src":"1500:12:19"},"nodeType":"YulExpressionStatement","src":"1500:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1473:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1482:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1469:3:19"},"nodeType":"YulFunctionCall","src":"1469:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1494:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1465:3:19"},"nodeType":"YulFunctionCall","src":"1465:32:19"},"nodeType":"YulIf","src":"1462:52:19"},{"nodeType":"YulVariableDeclaration","src":"1523:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1549:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1536:12:19"},"nodeType":"YulFunctionCall","src":"1536:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1527:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"1593:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"1568:24:19"},"nodeType":"YulFunctionCall","src":"1568:31:19"},"nodeType":"YulExpressionStatement","src":"1568:31:19"},{"nodeType":"YulAssignment","src":"1608:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"1618:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1608:6:19"}]}]},"name":"abi_decode_tuple_t_address","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1418:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1429:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1441:6:19","type":""}],"src":"1382:247:19"},{"body":{"nodeType":"YulBlock","src":"1704:110:19","statements":[{"body":{"nodeType":"YulBlock","src":"1750:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1759:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1762:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1752:6:19"},"nodeType":"YulFunctionCall","src":"1752:12:19"},"nodeType":"YulExpressionStatement","src":"1752:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1725:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1734:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1721:3:19"},"nodeType":"YulFunctionCall","src":"1721:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1746:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1717:3:19"},"nodeType":"YulFunctionCall","src":"1717:32:19"},"nodeType":"YulIf","src":"1714:52:19"},{"nodeType":"YulAssignment","src":"1775:33:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"1798:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1785:12:19"},"nodeType":"YulFunctionCall","src":"1785:23:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"1775:6:19"}]}]},"name":"abi_decode_tuple_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1670:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1681:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1693:6:19","type":""}],"src":"1634:180:19"},{"body":{"nodeType":"YulBlock","src":"1903:332:19","statements":[{"body":{"nodeType":"YulBlock","src":"1949:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"1958:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"1961:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"1951:6:19"},"nodeType":"YulFunctionCall","src":"1951:12:19"},"nodeType":"YulExpressionStatement","src":"1951:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"1924:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"1933:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"1920:3:19"},"nodeType":"YulFunctionCall","src":"1920:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"1945:2:19","type":"","value":"64"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"1916:3:19"},"nodeType":"YulFunctionCall","src":"1916:32:19"},"nodeType":"YulIf","src":"1913:52:19"},{"nodeType":"YulVariableDeclaration","src":"1974:36:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2000:9:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"1987:12:19"},"nodeType":"YulFunctionCall","src":"1987:23:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"1978:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"2044:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"2019:24:19"},"nodeType":"YulFunctionCall","src":"2019:31:19"},"nodeType":"YulExpressionStatement","src":"2019:31:19"},{"nodeType":"YulAssignment","src":"2059:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"2069:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"2059:6:19"}]},{"nodeType":"YulVariableDeclaration","src":"2083:47:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2115:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2126:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2111:3:19"},"nodeType":"YulFunctionCall","src":"2111:18:19"}],"functionName":{"name":"calldataload","nodeType":"YulIdentifier","src":"2098:12:19"},"nodeType":"YulFunctionCall","src":"2098:32:19"},"variables":[{"name":"value_1","nodeType":"YulTypedName","src":"2087:7:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"2187:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2196:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2199:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2189:6:19"},"nodeType":"YulFunctionCall","src":"2189:12:19"},"nodeType":"YulExpressionStatement","src":"2189:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2152:7:19"},{"arguments":[{"arguments":[{"name":"value_1","nodeType":"YulIdentifier","src":"2175:7:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2168:6:19"},"nodeType":"YulFunctionCall","src":"2168:15:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2161:6:19"},"nodeType":"YulFunctionCall","src":"2161:23:19"}],"functionName":{"name":"eq","nodeType":"YulIdentifier","src":"2149:2:19"},"nodeType":"YulFunctionCall","src":"2149:36:19"}],"functionName":{"name":"iszero","nodeType":"YulIdentifier","src":"2142:6:19"},"nodeType":"YulFunctionCall","src":"2142:44:19"},"nodeType":"YulIf","src":"2139:64:19"},{"nodeType":"YulAssignment","src":"2212:17:19","value":{"name":"value_1","nodeType":"YulIdentifier","src":"2222:7:19"},"variableNames":[{"name":"value1","nodeType":"YulIdentifier","src":"2212:6:19"}]}]},"name":"abi_decode_tuple_t_addresst_bool","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"1861:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"1872:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"1884:6:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"1892:6:19","type":""}],"src":"1819:416:19"},{"body":{"nodeType":"YulBlock","src":"2341:125:19","statements":[{"nodeType":"YulAssignment","src":"2351:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2363:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2374:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2359:3:19"},"nodeType":"YulFunctionCall","src":"2359:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2351:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2393:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"2408:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"2416:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2404:3:19"},"nodeType":"YulFunctionCall","src":"2404:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2386:6:19"},"nodeType":"YulFunctionCall","src":"2386:74:19"},"nodeType":"YulExpressionStatement","src":"2386:74:19"}]},"name":"abi_encode_tuple_t_address__to_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2310:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2321:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2332:4:19","type":""}],"src":"2240:226:19"},{"body":{"nodeType":"YulBlock","src":"2520:233:19","statements":[{"nodeType":"YulAssignment","src":"2530:17:19","value":{"arguments":[{"name":"x","nodeType":"YulIdentifier","src":"2542:1:19"},{"name":"y","nodeType":"YulIdentifier","src":"2545:1:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"2538:3:19"},"nodeType":"YulFunctionCall","src":"2538:9:19"},"variableNames":[{"name":"diff","nodeType":"YulIdentifier","src":"2530:4:19"}]},{"body":{"nodeType":"YulBlock","src":"2579:168:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2600:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2603:77:19","type":"","value":"35408467139433450592217433187231851964531694900788300625387963629091585785856"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2593:6:19"},"nodeType":"YulFunctionCall","src":"2593:88:19"},"nodeType":"YulExpressionStatement","src":"2593:88:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2701:1:19","type":"","value":"4"},{"kind":"number","nodeType":"YulLiteral","src":"2704:4:19","type":"","value":"0x11"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2694:6:19"},"nodeType":"YulFunctionCall","src":"2694:15:19"},"nodeType":"YulExpressionStatement","src":"2694:15:19"},{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"2729:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"2732:4:19","type":"","value":"0x24"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"2722:6:19"},"nodeType":"YulFunctionCall","src":"2722:15:19"},"nodeType":"YulExpressionStatement","src":"2722:15:19"}]},"condition":{"arguments":[{"name":"diff","nodeType":"YulIdentifier","src":"2562:4:19"},{"name":"x","nodeType":"YulIdentifier","src":"2568:1:19"}],"functionName":{"name":"gt","nodeType":"YulIdentifier","src":"2559:2:19"},"nodeType":"YulFunctionCall","src":"2559:11:19"},"nodeType":"YulIf","src":"2556:191:19"}]},"name":"checked_sub_t_uint256","nodeType":"YulFunctionDefinition","parameters":[{"name":"x","nodeType":"YulTypedName","src":"2502:1:19","type":""},{"name":"y","nodeType":"YulTypedName","src":"2505:1:19","type":""}],"returnVariables":[{"name":"diff","nodeType":"YulTypedName","src":"2511:4:19","type":""}],"src":"2471:282:19"},{"body":{"nodeType":"YulBlock","src":"2887:168:19","statements":[{"nodeType":"YulAssignment","src":"2897:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2909:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2920:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2905:3:19"},"nodeType":"YulFunctionCall","src":"2905:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"2897:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2939:9:19"},{"name":"value0","nodeType":"YulIdentifier","src":"2950:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2932:6:19"},"nodeType":"YulFunctionCall","src":"2932:25:19"},"nodeType":"YulExpressionStatement","src":"2932:25:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"2977:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"2988:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"2973:3:19"},"nodeType":"YulFunctionCall","src":"2973:18:19"},{"arguments":[{"name":"value1","nodeType":"YulIdentifier","src":"2997:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"3005:42:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffff"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"2993:3:19"},"nodeType":"YulFunctionCall","src":"2993:55:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"2966:6:19"},"nodeType":"YulFunctionCall","src":"2966:83:19"},"nodeType":"YulExpressionStatement","src":"2966:83:19"}]},"name":"abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"2848:9:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"2859:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"2867:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"2878:4:19","type":""}],"src":"2758:297:19"},{"body":{"nodeType":"YulBlock","src":"3234:232:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3251:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3262:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3244:6:19"},"nodeType":"YulFunctionCall","src":"3244:21:19"},"nodeType":"YulExpressionStatement","src":"3244:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3285:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3296:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3281:3:19"},"nodeType":"YulFunctionCall","src":"3281:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3301:2:19","type":"","value":"42"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3274:6:19"},"nodeType":"YulFunctionCall","src":"3274:30:19"},"nodeType":"YulExpressionStatement","src":"3274:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3324:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3335:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3320:3:19"},"nodeType":"YulFunctionCall","src":"3320:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420617070726f7665642056","kind":"string","nodeType":"YulLiteral","src":"3340:34:19","type":"","value":"FirewallConsumer: Not approved V"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3313:6:19"},"nodeType":"YulFunctionCall","src":"3313:62:19"},"nodeType":"YulExpressionStatement","src":"3313:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3395:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3406:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3391:3:19"},"nodeType":"YulFunctionCall","src":"3391:18:19"},{"hexValue":"656e6e20706f6c696379","kind":"string","nodeType":"YulLiteral","src":"3411:12:19","type":"","value":"enn policy"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3384:6:19"},"nodeType":"YulFunctionCall","src":"3384:40:19"},"nodeType":"YulExpressionStatement","src":"3384:40:19"},{"nodeType":"YulAssignment","src":"3433:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3445:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3456:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3441:3:19"},"nodeType":"YulFunctionCall","src":"3441:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3433:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3211:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3225:4:19","type":""}],"src":"3060:406:19"},{"body":{"nodeType":"YulBlock","src":"3645:230:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3662:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3673:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3655:6:19"},"nodeType":"YulFunctionCall","src":"3655:21:19"},"nodeType":"YulExpressionStatement","src":"3655:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3696:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3707:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3692:3:19"},"nodeType":"YulFunctionCall","src":"3692:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"3712:2:19","type":"","value":"40"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3685:6:19"},"nodeType":"YulFunctionCall","src":"3685:30:19"},"nodeType":"YulExpressionStatement","src":"3685:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3735:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3746:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3731:3:19"},"nodeType":"YulFunctionCall","src":"3731:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f7420656e6f75676820455448","kind":"string","nodeType":"YulLiteral","src":"3751:34:19","type":"","value":"FirewallConsumer: Not enough ETH"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3724:6:19"},"nodeType":"YulFunctionCall","src":"3724:62:19"},"nodeType":"YulExpressionStatement","src":"3724:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3806:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3817:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3802:3:19"},"nodeType":"YulFunctionCall","src":"3802:18:19"},{"hexValue":"20666f7220666565","kind":"string","nodeType":"YulLiteral","src":"3822:10:19","type":"","value":" for fee"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"3795:6:19"},"nodeType":"YulFunctionCall","src":"3795:38:19"},"nodeType":"YulExpressionStatement","src":"3795:38:19"},{"nodeType":"YulAssignment","src":"3842:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"3854:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"3865:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"3850:3:19"},"nodeType":"YulFunctionCall","src":"3850:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"3842:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"3622:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"3636:4:19","type":""}],"src":"3471:404:19"},{"body":{"nodeType":"YulBlock","src":"4027:124:19","statements":[{"expression":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4050:3:19"},{"name":"value0","nodeType":"YulIdentifier","src":"4055:6:19"},{"name":"value1","nodeType":"YulIdentifier","src":"4063:6:19"}],"functionName":{"name":"calldatacopy","nodeType":"YulIdentifier","src":"4037:12:19"},"nodeType":"YulFunctionCall","src":"4037:33:19"},"nodeType":"YulExpressionStatement","src":"4037:33:19"},{"nodeType":"YulVariableDeclaration","src":"4079:26:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"4093:3:19"},{"name":"value1","nodeType":"YulIdentifier","src":"4098:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4089:3:19"},"nodeType":"YulFunctionCall","src":"4089:16:19"},"variables":[{"name":"_1","nodeType":"YulTypedName","src":"4083:2:19","type":""}]},{"expression":{"arguments":[{"name":"_1","nodeType":"YulIdentifier","src":"4121:2:19"},{"kind":"number","nodeType":"YulLiteral","src":"4125:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4114:6:19"},"nodeType":"YulFunctionCall","src":"4114:13:19"},"nodeType":"YulExpressionStatement","src":"4114:13:19"},{"nodeType":"YulAssignment","src":"4136:9:19","value":{"name":"_1","nodeType":"YulIdentifier","src":"4143:2:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"4136:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"3995:3:19","type":""},{"name":"value1","nodeType":"YulTypedName","src":"4000:6:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"4008:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"4019:3:19","type":""}],"src":"3880:271:19"},{"body":{"nodeType":"YulBlock","src":"4330:228:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4347:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4358:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4340:6:19"},"nodeType":"YulFunctionCall","src":"4340:21:19"},"nodeType":"YulExpressionStatement","src":"4340:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4381:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4392:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4377:3:19"},"nodeType":"YulFunctionCall","src":"4377:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4397:2:19","type":"","value":"38"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4370:6:19"},"nodeType":"YulFunctionCall","src":"4370:30:19"},"nodeType":"YulExpressionStatement","src":"4370:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4420:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4431:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4416:3:19"},"nodeType":"YulFunctionCall","src":"4416:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a204e6f206d657461207472616e7361","kind":"string","nodeType":"YulLiteral","src":"4436:34:19","type":"","value":"FirewallConsumer: No meta transa"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4409:6:19"},"nodeType":"YulFunctionCall","src":"4409:62:19"},"nodeType":"YulExpressionStatement","src":"4409:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4491:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4502:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4487:3:19"},"nodeType":"YulFunctionCall","src":"4487:18:19"},{"hexValue":"6374696f6e73","kind":"string","nodeType":"YulLiteral","src":"4507:8:19","type":"","value":"ctions"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4480:6:19"},"nodeType":"YulFunctionCall","src":"4480:36:19"},"nodeType":"YulExpressionStatement","src":"4480:36:19"},{"nodeType":"YulAssignment","src":"4525:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4537:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4548:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4533:3:19"},"nodeType":"YulFunctionCall","src":"4533:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4525:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4307:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4321:4:19","type":""}],"src":"4156:402:19"},{"body":{"nodeType":"YulBlock","src":"4737:226:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4754:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4765:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4747:6:19"},"nodeType":"YulFunctionCall","src":"4747:21:19"},"nodeType":"YulExpressionStatement","src":"4747:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4788:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4799:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4784:3:19"},"nodeType":"YulFunctionCall","src":"4784:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"4804:2:19","type":"","value":"36"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4777:6:19"},"nodeType":"YulFunctionCall","src":"4777:30:19"},"nodeType":"YulExpressionStatement","src":"4777:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4827:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4838:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4823:3:19"},"nodeType":"YulFunctionCall","src":"4823:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c2061","kind":"string","nodeType":"YulLiteral","src":"4843:34:19","type":"","value":"FirewallConsumer: not firewall a"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4816:6:19"},"nodeType":"YulFunctionCall","src":"4816:62:19"},"nodeType":"YulExpressionStatement","src":"4816:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4898:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4909:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4894:3:19"},"nodeType":"YulFunctionCall","src":"4894:18:19"},{"hexValue":"646d696e","kind":"string","nodeType":"YulLiteral","src":"4914:6:19","type":"","value":"dmin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"4887:6:19"},"nodeType":"YulFunctionCall","src":"4887:34:19"},"nodeType":"YulExpressionStatement","src":"4887:34:19"},{"nodeType":"YulAssignment","src":"4930:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"4942:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"4953:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"4938:3:19"},"nodeType":"YulFunctionCall","src":"4938:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"4930:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"4714:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"4728:4:19","type":""}],"src":"4563:400:19"},{"body":{"nodeType":"YulBlock","src":"5142:180:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5159:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5170:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5152:6:19"},"nodeType":"YulFunctionCall","src":"5152:21:19"},"nodeType":"YulExpressionStatement","src":"5152:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5193:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5204:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5189:3:19"},"nodeType":"YulFunctionCall","src":"5189:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5209:2:19","type":"","value":"30"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5182:6:19"},"nodeType":"YulFunctionCall","src":"5182:30:19"},"nodeType":"YulExpressionStatement","src":"5182:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5232:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5243:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5228:3:19"},"nodeType":"YulFunctionCall","src":"5228:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a207a65726f2061646472657373","kind":"string","nodeType":"YulLiteral","src":"5248:32:19","type":"","value":"FirewallConsumer: zero address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5221:6:19"},"nodeType":"YulFunctionCall","src":"5221:60:19"},"nodeType":"YulExpressionStatement","src":"5221:60:19"},{"nodeType":"YulAssignment","src":"5290:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5302:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5313:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5298:3:19"},"nodeType":"YulFunctionCall","src":"5298:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5290:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5119:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5133:4:19","type":""}],"src":"4968:354:19"},{"body":{"nodeType":"YulBlock","src":"5501:181:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5518:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5529:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5511:6:19"},"nodeType":"YulFunctionCall","src":"5511:21:19"},"nodeType":"YulExpressionStatement","src":"5511:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5552:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5563:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5548:3:19"},"nodeType":"YulFunctionCall","src":"5548:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"5568:2:19","type":"","value":"31"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5541:6:19"},"nodeType":"YulFunctionCall","src":"5541:30:19"},"nodeType":"YulExpressionStatement","src":"5541:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5591:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5602:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5587:3:19"},"nodeType":"YulFunctionCall","src":"5587:18:19"},{"hexValue":"4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e","kind":"string","nodeType":"YulLiteral","src":"5607:33:19","type":"","value":"FirewallConsumer: not new admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"5580:6:19"},"nodeType":"YulFunctionCall","src":"5580:61:19"},"nodeType":"YulExpressionStatement","src":"5580:61:19"},{"nodeType":"YulAssignment","src":"5650:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5662:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"5673:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"5658:3:19"},"nodeType":"YulFunctionCall","src":"5658:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"5650:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5478:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"5492:4:19","type":""}],"src":"5327:355:19"},{"body":{"nodeType":"YulBlock","src":"5768:170:19","statements":[{"body":{"nodeType":"YulBlock","src":"5814:16:19","statements":[{"expression":{"arguments":[{"kind":"number","nodeType":"YulLiteral","src":"5823:1:19","type":"","value":"0"},{"kind":"number","nodeType":"YulLiteral","src":"5826:1:19","type":"","value":"0"}],"functionName":{"name":"revert","nodeType":"YulIdentifier","src":"5816:6:19"},"nodeType":"YulFunctionCall","src":"5816:12:19"},"nodeType":"YulExpressionStatement","src":"5816:12:19"}]},"condition":{"arguments":[{"arguments":[{"name":"dataEnd","nodeType":"YulIdentifier","src":"5789:7:19"},{"name":"headStart","nodeType":"YulIdentifier","src":"5798:9:19"}],"functionName":{"name":"sub","nodeType":"YulIdentifier","src":"5785:3:19"},"nodeType":"YulFunctionCall","src":"5785:23:19"},{"kind":"number","nodeType":"YulLiteral","src":"5810:2:19","type":"","value":"32"}],"functionName":{"name":"slt","nodeType":"YulIdentifier","src":"5781:3:19"},"nodeType":"YulFunctionCall","src":"5781:32:19"},"nodeType":"YulIf","src":"5778:52:19"},{"nodeType":"YulVariableDeclaration","src":"5839:29:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"5858:9:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"5852:5:19"},"nodeType":"YulFunctionCall","src":"5852:16:19"},"variables":[{"name":"value","nodeType":"YulTypedName","src":"5843:5:19","type":""}]},{"expression":{"arguments":[{"name":"value","nodeType":"YulIdentifier","src":"5902:5:19"}],"functionName":{"name":"validator_revert_address","nodeType":"YulIdentifier","src":"5877:24:19"},"nodeType":"YulFunctionCall","src":"5877:31:19"},"nodeType":"YulExpressionStatement","src":"5877:31:19"},{"nodeType":"YulAssignment","src":"5917:15:19","value":{"name":"value","nodeType":"YulIdentifier","src":"5927:5:19"},"variableNames":[{"name":"value0","nodeType":"YulIdentifier","src":"5917:6:19"}]}]},"name":"abi_decode_tuple_t_address_fromMemory","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"5734:9:19","type":""},{"name":"dataEnd","nodeType":"YulTypedName","src":"5745:7:19","type":""}],"returnVariables":[{"name":"value0","nodeType":"YulTypedName","src":"5757:6:19","type":""}],"src":"5687:251:19"},{"body":{"nodeType":"YulBlock","src":"6117:238:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6134:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6145:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6127:6:19"},"nodeType":"YulFunctionCall","src":"6127:21:19"},"nodeType":"YulExpressionStatement","src":"6127:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6168:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6179:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6164:3:19"},"nodeType":"YulFunctionCall","src":"6164:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6184:2:19","type":"","value":"48"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6157:6:19"},"nodeType":"YulFunctionCall","src":"6157:30:19"},"nodeType":"YulExpressionStatement","src":"6157:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6207:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6218:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6203:3:19"},"nodeType":"YulFunctionCall","src":"6203:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2073656e6465","kind":"string","nodeType":"YulLiteral","src":"6223:34:19","type":"","value":"ProxyFirewallConsumerBase: sende"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6196:6:19"},"nodeType":"YulFunctionCall","src":"6196:62:19"},"nodeType":"YulExpressionStatement","src":"6196:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6278:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6289:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6274:3:19"},"nodeType":"YulFunctionCall","src":"6274:18:19"},{"hexValue":"72206973206e6f7420616c6c6f776564","kind":"string","nodeType":"YulLiteral","src":"6294:18:19","type":"","value":"r is not allowed"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6267:6:19"},"nodeType":"YulFunctionCall","src":"6267:46:19"},"nodeType":"YulExpressionStatement","src":"6267:46:19"},{"nodeType":"YulAssignment","src":"6322:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6334:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6345:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6330:3:19"},"nodeType":"YulFunctionCall","src":"6330:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6322:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6094:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6108:4:19","type":""}],"src":"5943:412:19"},{"body":{"nodeType":"YulBlock","src":"6459:149:19","statements":[{"nodeType":"YulAssignment","src":"6469:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6481:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6492:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6477:3:19"},"nodeType":"YulFunctionCall","src":"6477:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6469:4:19"}]},{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6511:9:19"},{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"6526:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"6534:66:19","type":"","value":"0xffffffff00000000000000000000000000000000000000000000000000000000"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"6522:3:19"},"nodeType":"YulFunctionCall","src":"6522:79:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6504:6:19"},"nodeType":"YulFunctionCall","src":"6504:98:19"},"nodeType":"YulExpressionStatement","src":"6504:98:19"}]},"name":"abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6428:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"6439:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6450:4:19","type":""}],"src":"6360:248:19"},{"body":{"nodeType":"YulBlock","src":"6787:229:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6804:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6815:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6797:6:19"},"nodeType":"YulFunctionCall","src":"6797:21:19"},"nodeType":"YulExpressionStatement","src":"6797:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6838:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6849:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6834:3:19"},"nodeType":"YulFunctionCall","src":"6834:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"6854:2:19","type":"","value":"39"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6827:6:19"},"nodeType":"YulFunctionCall","src":"6827:30:19"},"nodeType":"YulExpressionStatement","src":"6827:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6877:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6888:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6873:3:19"},"nodeType":"YulFunctionCall","src":"6873:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f20","kind":"string","nodeType":"YulLiteral","src":"6893:34:19","type":"","value":"ProxyFirewallConsumerBase: zero "}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6866:6:19"},"nodeType":"YulFunctionCall","src":"6866:62:19"},"nodeType":"YulExpressionStatement","src":"6866:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6948:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"6959:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6944:3:19"},"nodeType":"YulFunctionCall","src":"6944:18:19"},{"hexValue":"61646472657373","kind":"string","nodeType":"YulLiteral","src":"6964:9:19","type":"","value":"address"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"6937:6:19"},"nodeType":"YulFunctionCall","src":"6937:37:19"},"nodeType":"YulExpressionStatement","src":"6937:37:19"},{"nodeType":"YulAssignment","src":"6983:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"6995:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7006:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"6991:3:19"},"nodeType":"YulFunctionCall","src":"6991:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"6983:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"6764:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"6778:4:19","type":""}],"src":"6613:403:19"},{"body":{"nodeType":"YulBlock","src":"7195:234:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7212:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7223:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7205:6:19"},"nodeType":"YulFunctionCall","src":"7205:21:19"},"nodeType":"YulExpressionStatement","src":"7205:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7246:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7257:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7242:3:19"},"nodeType":"YulFunctionCall","src":"7242:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"7262:2:19","type":"","value":"44"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7235:6:19"},"nodeType":"YulFunctionCall","src":"7235:30:19"},"nodeType":"YulExpressionStatement","src":"7235:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7285:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7296:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7281:3:19"},"nodeType":"YulFunctionCall","src":"7281:18:19"},{"hexValue":"50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e","kind":"string","nodeType":"YulLiteral","src":"7301:34:19","type":"","value":"ProxyFirewallConsumerBase: admin"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7274:6:19"},"nodeType":"YulFunctionCall","src":"7274:62:19"},"nodeType":"YulExpressionStatement","src":"7274:62:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7356:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7367:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7352:3:19"},"nodeType":"YulFunctionCall","src":"7352:18:19"},{"hexValue":"20616c726561647920736574","kind":"string","nodeType":"YulLiteral","src":"7372:14:19","type":"","value":" already set"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7345:6:19"},"nodeType":"YulFunctionCall","src":"7345:42:19"},"nodeType":"YulExpressionStatement","src":"7345:42:19"},{"nodeType":"YulAssignment","src":"7396:27:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"7408:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"7419:3:19","type":"","value":"128"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7404:3:19"},"nodeType":"YulFunctionCall","src":"7404:19:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"7396:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"7172:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"7186:4:19","type":""}],"src":"7021:408:19"},{"body":{"nodeType":"YulBlock","src":"7500:184:19","statements":[{"nodeType":"YulVariableDeclaration","src":"7510:10:19","value":{"kind":"number","nodeType":"YulLiteral","src":"7519:1:19","type":"","value":"0"},"variables":[{"name":"i","nodeType":"YulTypedName","src":"7514:1:19","type":""}]},{"body":{"nodeType":"YulBlock","src":"7579:63:19","statements":[{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7604:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"7609:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7600:3:19"},"nodeType":"YulFunctionCall","src":"7600:11:19"},{"arguments":[{"arguments":[{"name":"src","nodeType":"YulIdentifier","src":"7623:3:19"},{"name":"i","nodeType":"YulIdentifier","src":"7628:1:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7619:3:19"},"nodeType":"YulFunctionCall","src":"7619:11:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7613:5:19"},"nodeType":"YulFunctionCall","src":"7613:18:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7593:6:19"},"nodeType":"YulFunctionCall","src":"7593:39:19"},"nodeType":"YulExpressionStatement","src":"7593:39:19"}]},"condition":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7540:1:19"},{"name":"length","nodeType":"YulIdentifier","src":"7543:6:19"}],"functionName":{"name":"lt","nodeType":"YulIdentifier","src":"7537:2:19"},"nodeType":"YulFunctionCall","src":"7537:13:19"},"nodeType":"YulForLoop","post":{"nodeType":"YulBlock","src":"7551:19:19","statements":[{"nodeType":"YulAssignment","src":"7553:15:19","value":{"arguments":[{"name":"i","nodeType":"YulIdentifier","src":"7562:1:19"},{"kind":"number","nodeType":"YulLiteral","src":"7565:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7558:3:19"},"nodeType":"YulFunctionCall","src":"7558:10:19"},"variableNames":[{"name":"i","nodeType":"YulIdentifier","src":"7553:1:19"}]}]},"pre":{"nodeType":"YulBlock","src":"7533:3:19","statements":[]},"src":"7529:113:19"},{"expression":{"arguments":[{"arguments":[{"name":"dst","nodeType":"YulIdentifier","src":"7662:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7667:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7658:3:19"},"nodeType":"YulFunctionCall","src":"7658:16:19"},{"kind":"number","nodeType":"YulLiteral","src":"7676:1:19","type":"","value":"0"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"7651:6:19"},"nodeType":"YulFunctionCall","src":"7651:27:19"},"nodeType":"YulExpressionStatement","src":"7651:27:19"}]},"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulFunctionDefinition","parameters":[{"name":"src","nodeType":"YulTypedName","src":"7478:3:19","type":""},{"name":"dst","nodeType":"YulTypedName","src":"7483:3:19","type":""},{"name":"length","nodeType":"YulTypedName","src":"7488:6:19","type":""}],"src":"7434:250:19"},{"body":{"nodeType":"YulBlock","src":"7826:150:19","statements":[{"nodeType":"YulVariableDeclaration","src":"7836:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7856:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"7850:5:19"},"nodeType":"YulFunctionCall","src":"7850:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"7840:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"7911:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"7919:4:19","type":"","value":"0x20"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7907:3:19"},"nodeType":"YulFunctionCall","src":"7907:17:19"},{"name":"pos","nodeType":"YulIdentifier","src":"7926:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7931:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"7872:34:19"},"nodeType":"YulFunctionCall","src":"7872:66:19"},"nodeType":"YulExpressionStatement","src":"7872:66:19"},{"nodeType":"YulAssignment","src":"7947:23:19","value":{"arguments":[{"name":"pos","nodeType":"YulIdentifier","src":"7958:3:19"},{"name":"length","nodeType":"YulIdentifier","src":"7963:6:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"7954:3:19"},"nodeType":"YulFunctionCall","src":"7954:16:19"},"variableNames":[{"name":"end","nodeType":"YulIdentifier","src":"7947:3:19"}]}]},"name":"abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"pos","nodeType":"YulTypedName","src":"7802:3:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"7807:6:19","type":""}],"returnVariables":[{"name":"end","nodeType":"YulTypedName","src":"7818:3:19","type":""}],"src":"7689:287:19"},{"body":{"nodeType":"YulBlock","src":"8155:179:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8172:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8183:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8165:6:19"},"nodeType":"YulFunctionCall","src":"8165:21:19"},"nodeType":"YulExpressionStatement","src":"8165:21:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8206:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8217:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8202:3:19"},"nodeType":"YulFunctionCall","src":"8202:18:19"},{"kind":"number","nodeType":"YulLiteral","src":"8222:2:19","type":"","value":"29"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8195:6:19"},"nodeType":"YulFunctionCall","src":"8195:30:19"},"nodeType":"YulExpressionStatement","src":"8195:30:19"},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8245:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8256:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8241:3:19"},"nodeType":"YulFunctionCall","src":"8241:18:19"},{"hexValue":"416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374","kind":"string","nodeType":"YulLiteral","src":"8261:31:19","type":"","value":"Address: call to non-contract"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8234:6:19"},"nodeType":"YulFunctionCall","src":"8234:59:19"},"nodeType":"YulExpressionStatement","src":"8234:59:19"},{"nodeType":"YulAssignment","src":"8302:26:19","value":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8314:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8325:2:19","type":"","value":"96"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8310:3:19"},"nodeType":"YulFunctionCall","src":"8310:18:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8302:4:19"}]}]},"name":"abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8132:9:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8146:4:19","type":""}],"src":"7981:353:19"},{"body":{"nodeType":"YulBlock","src":"8460:334:19","statements":[{"expression":{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8477:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8488:2:19","type":"","value":"32"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8470:6:19"},"nodeType":"YulFunctionCall","src":"8470:21:19"},"nodeType":"YulExpressionStatement","src":"8470:21:19"},{"nodeType":"YulVariableDeclaration","src":"8500:27:19","value":{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8520:6:19"}],"functionName":{"name":"mload","nodeType":"YulIdentifier","src":"8514:5:19"},"nodeType":"YulFunctionCall","src":"8514:13:19"},"variables":[{"name":"length","nodeType":"YulTypedName","src":"8504:6:19","type":""}]},{"expression":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8547:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8558:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8543:3:19"},"nodeType":"YulFunctionCall","src":"8543:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"8563:6:19"}],"functionName":{"name":"mstore","nodeType":"YulIdentifier","src":"8536:6:19"},"nodeType":"YulFunctionCall","src":"8536:34:19"},"nodeType":"YulExpressionStatement","src":"8536:34:19"},{"expression":{"arguments":[{"arguments":[{"name":"value0","nodeType":"YulIdentifier","src":"8618:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"8626:2:19","type":"","value":"32"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8614:3:19"},"nodeType":"YulFunctionCall","src":"8614:15:19"},{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8635:9:19"},{"kind":"number","nodeType":"YulLiteral","src":"8646:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8631:3:19"},"nodeType":"YulFunctionCall","src":"8631:18:19"},{"name":"length","nodeType":"YulIdentifier","src":"8651:6:19"}],"functionName":{"name":"copy_memory_to_memory_with_cleanup","nodeType":"YulIdentifier","src":"8579:34:19"},"nodeType":"YulFunctionCall","src":"8579:79:19"},"nodeType":"YulExpressionStatement","src":"8579:79:19"},{"nodeType":"YulAssignment","src":"8667:121:19","value":{"arguments":[{"arguments":[{"name":"headStart","nodeType":"YulIdentifier","src":"8683:9:19"},{"arguments":[{"arguments":[{"name":"length","nodeType":"YulIdentifier","src":"8702:6:19"},{"kind":"number","nodeType":"YulLiteral","src":"8710:2:19","type":"","value":"31"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8698:3:19"},"nodeType":"YulFunctionCall","src":"8698:15:19"},{"kind":"number","nodeType":"YulLiteral","src":"8715:66:19","type":"","value":"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0"}],"functionName":{"name":"and","nodeType":"YulIdentifier","src":"8694:3:19"},"nodeType":"YulFunctionCall","src":"8694:88:19"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8679:3:19"},"nodeType":"YulFunctionCall","src":"8679:104:19"},{"kind":"number","nodeType":"YulLiteral","src":"8785:2:19","type":"","value":"64"}],"functionName":{"name":"add","nodeType":"YulIdentifier","src":"8675:3:19"},"nodeType":"YulFunctionCall","src":"8675:113:19"},"variableNames":[{"name":"tail","nodeType":"YulIdentifier","src":"8667:4:19"}]}]},"name":"abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed","nodeType":"YulFunctionDefinition","parameters":[{"name":"headStart","nodeType":"YulTypedName","src":"8429:9:19","type":""},{"name":"value0","nodeType":"YulTypedName","src":"8440:6:19","type":""}],"returnVariables":[{"name":"tail","nodeType":"YulTypedName","src":"8451:4:19","type":""}],"src":"8339:455:19"}]},"contents":"{\n    { }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, 0xffffffffffffffffffffffffffffffffffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_bytes_calldata(offset, end) -> arrayPos, length\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { revert(0, 0) }\n        arrayPos := add(offset, 0x20)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_addresst_bytes_calldata_ptrt_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(0, 0) }\n        let value1_1, value2_1 := abi_decode_bytes_calldata(add(headStart, offset), dataEnd)\n        value1 := value1_1\n        value2 := value2_1\n        let offset_1 := calldataload(add(headStart, 64))\n        if gt(offset_1, _1) { revert(0, 0) }\n        let value3_1, value4_1 := abi_decode_bytes_calldata(add(headStart, offset_1), dataEnd)\n        value3 := value3_1\n        value4 := value4_1\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_decode_tuple_t_addresst_bool(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, iszero(iszero(value_1)))) { revert(0, 0) }\n        value1 := value_1\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function checked_sub_t_uint256(x, y) -> diff\n    {\n        diff := sub(x, y)\n        if gt(diff, x)\n        {\n            mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xffffffffffffffffffffffffffffffffffffffff))\n    }\n    function abi_encode_tuple_t_stringliteral_a8e9a354e8bf5fa9564b21363d764acae81058ed7c98611e3d87c8cc03490700__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 42)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not approved V\")\n        mstore(add(headStart, 96), \"enn policy\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_6b8bd37d7c89112ebdd7f61df1dab525873cafe961f15cdb9f10e93c526a1a18__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 40)\n        mstore(add(headStart, 64), \"FirewallConsumer: Not enough ETH\")\n        mstore(add(headStart, 96), \" for fee\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes_calldata_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value1, value0) -> end\n    {\n        calldatacopy(pos, value0, value1)\n        let _1 := add(pos, value1)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_fee8a7012042af748d7b1c62a6443e5a8b221a45e23e93ac5a52c6bcaa874eef__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 38)\n        mstore(add(headStart, 64), \"FirewallConsumer: No meta transa\")\n        mstore(add(headStart, 96), \"ctions\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_b9c102b9f92d181384ba1561339921e7965cab0c2ebb2f35b70e9bead2697bda__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 36)\n        mstore(add(headStart, 64), \"FirewallConsumer: not firewall a\")\n        mstore(add(headStart, 96), \"dmin\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_4bfc61228601d3d624385c8fe55628df9ea689f38bb127aa93bb6c7e3ce1e949__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"FirewallConsumer: zero address\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_91780bb648990ed5314d3bfc3d2981c6414be77da4bf5bbbf731c9a2f848f427__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"FirewallConsumer: not new admin\")\n        tail := add(headStart, 96)\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_273a1d695564a09f57e995e4bf45d2951f4ed06a17244b8dc25b3853feb147e8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 48)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: sende\")\n        mstore(add(headStart, 96), \"r is not allowed\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_bytes4__to_t_bytes4__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xffffffff00000000000000000000000000000000000000000000000000000000))\n    }\n    function abi_encode_tuple_t_stringliteral_534439cecec4ecc3ca669dbb343ff72cca754b499540a5234bdf992bd4f90afa__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 39)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: zero \")\n        mstore(add(headStart, 96), \"address\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_c011dee81c3e33f33f5277857049cf89b90840e5d67495f85496e6bbdb3f0a47__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 44)\n        mstore(add(headStart, 64), \"ProxyFirewallConsumerBase: admin\")\n        mstore(add(headStart, 96), \" already set\")\n        tail := add(headStart, 128)\n    }\n    function copy_memory_to_memory_with_cleanup(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        mstore(add(dst, length), 0)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory_with_cleanup(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 29)\n        mstore(add(headStart, 64), \"Address: call to non-contract\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        let length := mload(value0)\n        mstore(add(headStart, 32), length)\n        copy_memory_to_memory_with_cleanup(add(value0, 32), add(headStart, 64), length)\n        tail := add(add(headStart, and(add(length, 31), 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0)), 64)\n    }\n}","id":19,"language":"Yul","name":"#utility.yul"}],"immutableReferences":{},"linkReferences":{},"object":"60806040526004361061007b5760003560e01c80638c36d02d1161004e5780638c36d02d146100ea578063acef61061461010a578063efc2e7031461012a578063f05c85821461014a57600080fd5b80631a8828f414610080578063734b7198146100955780637c65c38b146100b55780637eba9471146100ca575b600080fd5b61009361008e36600461103e565b610188565b005b3480156100a157600080fd5b506100936100b03660046110c1565b6104f1565b3480156100c157600080fd5b50610093610657565b3480156100d657600080fd5b506100936100e53660046110c1565b610762565b3480156100f657600080fd5b506100936101053660046110c1565b61089c565b34801561011657600080fd5b506100936101253660046110de565b6109e3565b34801561013657600080fd5b506100936101453660046110f7565b610ade565b34801561015657600080fd5b5061015f610c22565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b8460006101b660017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff84169082015260600160405160208183030381529060405280519060200120905060008060001b610206835490565b14159050806102825760405162461bcd60e51b815260206004820152602a60248201527f4669726577616c6c436f6e73756d65723a204e6f7420617070726f766564205660448201527f656e6e20706f6c6963790000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6102ac837f0c908cff00000000000000000000000000000000000000000000000000000000610c57565b6102b557600080fd5b60006102e96102e560017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b5490565b9050348111156103615760405162461bcd60e51b815260206004820152602860248201527f4669726577616c6c436f6e73756d65723a204e6f7420656e6f7567682045544860448201527f20666f72206665650000000000000000000000000000000000000000000000006064820152608401610279565b61039461038f60017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b339055565b6103c86103c260017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b60029055565b60008973ffffffffffffffffffffffffffffffffffffffff16828a8a6040516103f292919061116f565b60006040518083038185875af1925050503d806000811461042f576040519150601f19603f3d011682016040523d82523d6000602084013e610434565b606091505b505090508061044257600080fd5b6104823088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610d2892505050565b506104b76104b160017f471011fb6f6f818490c7275a3f5781bd5ea022cb5a243dd8f2d009d0882c74a3611135565b60019055565b6104e56104b160017f649dd3ecd011e05f7b661f5786e7205a54d2201cb71ede57000d4047776e2040611135565b50505050505050505050565b61051f6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105be5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b73ffffffffffffffffffffffffffffffffffffffff81166106215760405162461bcd60e51b815260206004820152601e60248201527f4669726577616c6c436f6e73756d65723a207a65726f206164647265737300006044820152606401610279565b61065461064f60017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b829055565b50565b6106856102e560017f8583d637b7eb6415d11ef26648cf0702cf161a357dfe51b6ff7a332110d4bdd3611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106ff5760405162461bcd60e51b815260206004820152601f60248201527f4669726577616c6c436f6e73756d65723a206e6f74206e65772061646d696e006044820152606401610279565b61072d61038f60017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b6040513381527f2763a008a9a724a5da2f35346041f5c552001ab556d786252e1ff4ff798dfc1b9060200160405180910390a1565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103600061078d825490565b905060008173ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156107dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610800919061117f565b90503373ffffffffffffffffffffffffffffffffffffffff82161461088d5760405162461bcd60e51b815260206004820152603060248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2073656e646560448201527f72206973206e6f7420616c6c6f776564000000000000000000000000000000006064820152608401610279565b61089684610d54565b50505050565b6108ca6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146109695760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61099761064f60017f5dd2e3b890564a8f99f7f203f226a27a8aa59aee19a4ece5cf5eaa77ab91f662611135565b60405173ffffffffffffffffffffffffffffffffffffffff821681527f60c1452966d777aab347837b9ceeaa613af32925b5aab43918e878fd036086709060200160405180910390a150565b610a116102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ab05760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b61065461064f60017ff313666cbe82d6ed38ebc95c800c2b3beb64c78c4f1ce31a7b38a023ff4ec4f8611135565b610b0c6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bab5760405162461bcd60e51b8152602060048201526024808201527f4669726577616c6c436f6e73756d65723a206e6f74206669726577616c6c206160448201527f646d696e000000000000000000000000000000000000000000000000000000006064820152608401610279565b6000610bd860017f6782ca2e76fbed2f777ca33e218789cca19c2f6a133e95d845003afe7a328fab611135565b60408051602081019290925273ffffffffffffffffffffffffffffffffffffffff851690820152606001604051602081830303815290604052805190602001209050818155505050565b6000610c526102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b905090565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015610d0f575060208210155b8015610d1b5750600081115b9450505050505b92915050565b6060610d4d838360405180606001604052806027815260200161122e60279139610e96565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8116610ddd5760405162461bcd60e51b815260206004820152602760248201527f50726f78794669726577616c6c436f6e73756d6572426173653a207a65726f2060448201527f61646472657373000000000000000000000000000000000000000000000000006064820152608401610279565b6000610e0d6102e560017f29982a6ac507a2a707ced6dee5d76285dd49725db977de83d9702c628c974136611135565b73ffffffffffffffffffffffffffffffffffffffff16146106215760405162461bcd60e51b815260206004820152602c60248201527f50726f78794669726577616c6c436f6e73756d6572426173653a2061646d696e60448201527f20616c72656164792073657400000000000000000000000000000000000000006064820152608401610279565b60606000808573ffffffffffffffffffffffffffffffffffffffff1685604051610ec091906111c0565b600060405180830381855af49150503d8060008114610efb576040519150601f19603f3d011682016040523d82523d6000602084013e610f00565b606091505b5091509150610f1186838387610f1b565b9695505050505050565b60608315610f97578251600003610f905773ffffffffffffffffffffffffffffffffffffffff85163b610f905760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610279565b5081610fa1565b610fa18383610fa9565b949350505050565b815115610fb95781518083602001fd5b8060405162461bcd60e51b815260040161027991906111dc565b73ffffffffffffffffffffffffffffffffffffffff8116811461065457600080fd5b60008083601f84011261100757600080fd5b50813567ffffffffffffffff81111561101f57600080fd5b60208301915083602082850101111561103757600080fd5b9250929050565b60008060008060006060868803121561105657600080fd5b853561106181610fd3565b9450602086013567ffffffffffffffff8082111561107e57600080fd5b61108a89838a01610ff5565b909650945060408801359150808211156110a357600080fd5b506110b088828901610ff5565b969995985093965092949392505050565b6000602082840312156110d357600080fd5b8135610d4d81610fd3565b6000602082840312156110f057600080fd5b5035919050565b6000806040838503121561110a57600080fd5b823561111581610fd3565b91506020830135801515811461112a57600080fd5b809150509250929050565b81810381811115610d22577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8183823760009101908152919050565b60006020828403121561119157600080fd5b8151610d4d81610fd3565b60005b838110156111b757818101518382015260200161119f565b50506000910152565b600082516111d281846020870161119c565b9190910192915050565b60208152600082518060208401526111fb81604085016020870161119c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212203e5df9067f2a5e089337b55822a8bdccecc8897d994e964175dee28432e6cfe564736f6c63430008130033","opcodes":"PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8C36D02D GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x8C36D02D EQ PUSH2 0xEA JUMPI DUP1 PUSH4 0xACEF6106 EQ PUSH2 0x10A JUMPI DUP1 PUSH4 0xEFC2E703 EQ PUSH2 0x12A JUMPI DUP1 PUSH4 0xF05C8582 EQ PUSH2 0x14A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH4 0x1A8828F4 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x734B7198 EQ PUSH2 0x95 JUMPI DUP1 PUSH4 0x7C65C38B EQ PUSH2 0xB5 JUMPI DUP1 PUSH4 0x7EBA9471 EQ PUSH2 0xCA JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x93 PUSH2 0x8E CALLDATASIZE PUSH1 0x4 PUSH2 0x103E JUMP JUMPDEST PUSH2 0x188 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xB0 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x4F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x657 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xD6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0xE5 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x762 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x105 CALLDATASIZE PUSH1 0x4 PUSH2 0x10C1 JUMP JUMPDEST PUSH2 0x89C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x116 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x125 CALLDATASIZE PUSH1 0x4 PUSH2 0x10DE JUMP JUMPDEST PUSH2 0x9E3 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x136 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x93 PUSH2 0x145 CALLDATASIZE PUSH1 0x4 PUSH2 0x10F7 JUMP JUMPDEST PUSH2 0xADE JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x156 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x15F PUSH2 0xC22 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST DUP5 PUSH1 0x0 PUSH2 0x1B6 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SHL PUSH2 0x206 DUP4 SLOAD SWAP1 JUMP JUMPDEST EQ ISZERO SWAP1 POP DUP1 PUSH2 0x282 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2A PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420617070726F7665642056 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x656E6E20706F6C69637900000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x2AC DUP4 PUSH32 0xC908CFF00000000000000000000000000000000000000000000000000000000 PUSH2 0xC57 JUMP JUMPDEST PUSH2 0x2B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x2E9 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP CALLVALUE DUP2 GT ISZERO PUSH2 0x361 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x28 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A204E6F7420656E6F75676820455448 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20666F7220666565000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x394 PUSH2 0x38F PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST CALLER SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3C8 PUSH2 0x3C2 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x2 SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH2 0x3F2 SWAP3 SWAP2 SWAP1 PUSH2 0x116F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x42F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x434 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x442 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x482 ADDRESS DUP9 DUP9 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0xD28 SWAP3 POP POP POP JUMP JUMPDEST POP PUSH2 0x4B7 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x471011FB6F6F818490C7275A3F5781BD5EA022CB5A243DD8F2D009D0882C74A3 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x1 SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x4E5 PUSH2 0x4B1 PUSH1 0x1 PUSH32 0x649DD3ECD011E05F7B661F5786E7205A54D2201CB71EDE57000D4047776E2040 PUSH2 0x1135 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x51F PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x5BE JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A207A65726F20616464726573730000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST DUP3 SWAP1 SSTORE JUMP JUMPDEST POP JUMP JUMPDEST PUSH2 0x685 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x8583D637B7EB6415D11EF26648CF0702CF161A357DFE51B6FF7A332110D4BDD3 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x6FF JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206E65772061646D696E00 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x72D PUSH2 0x38F PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD CALLER DUP2 MSTORE PUSH32 0x2763A008A9A724A5DA2F35346041F5C552001AB556D786252E1FF4FF798DFC1B SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMP JUMPDEST PUSH32 0xB53127684A568B3173AE13B9F8A6016E243E63B6E8EE1178D6A717850B5D6103 PUSH1 0x0 PUSH2 0x78D DUP3 SLOAD SWAP1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8DA5CB5B PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7DC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x800 SWAP2 SWAP1 PUSH2 0x117F JUMP JUMPDEST SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND EQ PUSH2 0x88D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x30 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2073656E6465 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x72206973206E6F7420616C6C6F77656400000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x896 DUP5 PUSH2 0xD54 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH2 0x8CA PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x969 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x997 PUSH2 0x64F PUSH1 0x1 PUSH32 0x5DD2E3B890564A8F99F7F203F226A27A8AA59AEE19A4ECE5CF5EAA77AB91F662 PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND DUP2 MSTORE PUSH32 0x60C1452966D777AAB347837B9CEEAA613AF32925B5AAB43918E878FD03608670 SWAP1 PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH2 0xA11 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xAB0 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH2 0x654 PUSH2 0x64F PUSH1 0x1 PUSH32 0xF313666CBE82D6ED38EBC95C800C2B3BEB64C78C4F1CE31A7B38A023FF4EC4F8 PUSH2 0x1135 JUMP JUMPDEST PUSH2 0xB0C PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xBAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP1 DUP3 ADD MSTORE PUSH32 0x4669726577616C6C436F6E73756D65723A206E6F74206669726577616C6C2061 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x646D696E00000000000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xBD8 PUSH1 0x1 PUSH32 0x6782CA2E76FBED2F777CA33E218789CCA19C2F6A133E95D845003AFE7A328FAB PUSH2 0x1135 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 DUP3 ADD MSTORE PUSH1 0x60 ADD PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 SWAP1 POP DUP2 DUP2 SSTORE POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xC52 PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 DUP4 AND PUSH1 0x24 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x44 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x1FFC9A700000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE DUP3 MLOAD PUSH1 0x0 SWAP4 SWAP3 DUP5 SWAP3 DUP4 SWAP3 DUP4 SWAP3 SWAP2 DUP4 SWAP2 SWAP1 DUP11 PUSH2 0x7530 STATICCALL SWAP3 POP RETURNDATASIZE SWAP2 POP PUSH1 0x0 MLOAD SWAP1 POP DUP3 DUP1 ISZERO PUSH2 0xD0F JUMPI POP PUSH1 0x20 DUP3 LT ISZERO JUMPDEST DUP1 ISZERO PUSH2 0xD1B JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xD4D DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x27 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x122E PUSH1 0x27 SWAP2 CODECOPY PUSH2 0xE96 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0xDDD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x27 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A207A65726F20 PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x6164647265737300000000000000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE0D PUSH2 0x2E5 PUSH1 0x1 PUSH32 0x29982A6AC507A2A707CED6DEE5D76285DD49725DB977DE83D9702C628C974136 PUSH2 0x1135 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x621 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x2C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x50726F78794669726577616C6C436F6E73756D6572426173653A2061646D696E PUSH1 0x44 DUP3 ADD MSTORE PUSH32 0x20616C7265616479207365740000000000000000000000000000000000000000 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 ADD PUSH2 0x279 JUMP JUMPDEST PUSH1 0x60 PUSH1 0x0 DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH1 0x40 MLOAD PUSH2 0xEC0 SWAP2 SWAP1 PUSH2 0x11C0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xEFB JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xF00 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0xF11 DUP7 DUP4 DUP4 DUP8 PUSH2 0xF1B JUMP JUMPDEST SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0xF97 JUMPI DUP3 MLOAD PUSH1 0x0 SUB PUSH2 0xF90 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND EXTCODESIZE PUSH2 0xF90 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH2 0x279 JUMP JUMPDEST POP DUP2 PUSH2 0xFA1 JUMP JUMPDEST PUSH2 0xFA1 DUP4 DUP4 PUSH2 0xFA9 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xFB9 JUMPI DUP2 MLOAD DUP1 DUP4 PUSH1 0x20 ADD REVERT JUMPDEST DUP1 PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x279 SWAP2 SWAP1 PUSH2 0x11DC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x654 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1007 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x101F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP3 DUP6 ADD ADD GT ISZERO PUSH2 0x1037 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1056 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x1061 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP1 DUP3 GT ISZERO PUSH2 0x107E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x108A DUP10 DUP4 DUP11 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP1 SWAP7 POP SWAP5 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x10A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B0 DUP9 DUP3 DUP10 ADD PUSH2 0xFF5 JUMP JUMPDEST SWAP7 SWAP10 SWAP6 SWAP9 POP SWAP4 SWAP7 POP SWAP3 SWAP5 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x10F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x110A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 CALLDATALOAD PUSH2 0x1115 DUP2 PUSH2 0xFD3 JUMP JUMPDEST SWAP2 POP PUSH1 0x20 DUP4 ADD CALLDATALOAD DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x112A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP2 DUP2 SUB DUP2 DUP2 GT ISZERO PUSH2 0xD22 JUMPI PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST DUP2 DUP4 DUP3 CALLDATACOPY PUSH1 0x0 SWAP2 ADD SWAP1 DUP2 MSTORE SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH2 0xD4D DUP2 PUSH2 0xFD3 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x11B7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119F JUMP JUMPDEST POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x11D2 DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x20 DUP2 MSTORE PUSH1 0x0 DUP3 MLOAD DUP1 PUSH1 0x20 DUP5 ADD MSTORE PUSH2 0x11FB DUP2 PUSH1 0x40 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x119C JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x40 ADD SWAP3 SWAP2 POP POP JUMP INVALID COINBASE PUSH5 0x6472657373 GASPRICE KECCAK256 PUSH13 0x6F772D6C6576656C2064656C65 PUSH8 0x6174652063616C6C KECCAK256 PUSH7 0x61696C6564A264 PUSH10 0x706673582212203E5DF9 MOD PUSH32 0x2A5E089337B55822A8BDCCECC8897D994E964175DEE28432E6CFE564736F6C63 NUMBER STOP ADDMOD SGT STOP CALLER ","sourceMap":"595:852:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9358:843:7;;;;;;:::i;:::-;;:::i;:::-;;11651:241;;;;;;;;;;-1:-1:-1;11651:241:7;;;;;:::i;:::-;;:::i;11961:280::-;;;;;;;;;;;;;:::i;1283:162:18:-;;;;;;;;;;-1:-1:-1;1283:162:18;;;;;:::i;:::-;;:::i;11309:176:7:-;;;;;;;;;;-1:-1:-1;11309:176:7;;;;;:::i;:::-;;:::i;10809:142::-;;;;;;;;;;-1:-1:-1;10809:142:7;;;;;:::i;:::-;;:::i;10556:247::-;;;;;;;;;;-1:-1:-1;10556:247:7;;;;;:::i;:::-;;:::i;11022:127::-;;;;;;;;;;;;;:::i;:::-;;;2416:42:19;2404:55;;;2386:74;;2374:2;2359:18;11022:127:7;;;;;;;9358:843;9529:10;7759:13;1709:54;1762:1;1717:41;1709:54;:::i;:::-;7785:49;;;;;;2932:25:19;;;;3005:42;2993:55;;2973:18;;;2966:83;2905:18;;7785:49:7;;;;;;;;;;;;7775:60;;;;;;7759:76;;7845:25;7907:1;7899:10;;7873:22;7889:5;14478:12;;14356:150;7873:22;:36;;7845:64;;7927:20;7919:75;;;;-1:-1:-1;;;7919:75:7;;3262:2:19;7919:75:7;;;3244:21:19;3301:2;3281:18;;;3274:30;3340:34;3320:18;;;3313:62;3411:12;3391:18;;;3384:40;3441:19;;7919:75:7;;;;;;;;;8012:103;8059:10;1584:18;8012:46;:103::i;:::-;8004:112;;;;;;9551:11:::1;9573:46;1835:58;1892:1;1843:45;1835:58;:::i;:::-;14478:12:::0;;14356:150;9573:46:::1;9565:55:::0;-1:-1:-1;9638:9:7::1;:16:::0;-1:-1:-1;9638:16:7::1;9630:69;;;::::0;-1:-1:-1;;;9630:69:7;;3673:2:19;9630:69:7::1;::::0;::::1;3655:21:19::0;3712:2;3692:18;;;3685:30;3751:34;3731:18;;;3724:62;3822:10;3802:18;;;3795:38;3850:19;;9630:69:7::1;3471:404:19::0;9630:69:7::1;9709:56;1961:54;2014:1;1969:41;1961:54;:::i;:::-;9754:10;13673:23:::0;;13571:141;9709:56:::1;9775:48;2086:57;2142:1;2094:44;2086:57;:::i;:::-;9821:1;13673:23:::0;;13571:141;9775:48:::1;9834:12;9852:10;:15;;9875:3;9880:17;;9852:46;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9833:65;;;9916:7;9908:16;;;::::0;::::1;;10021:49;10058:4;10065;;10021:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;10021:28:7::1;::::0;-1:-1:-1;;;10021:49:7:i:1;:::-;-1:-1:-1::0;10080:56:7::1;1961:54;2014:1;1969:41;1961:54;:::i;:::-;10133:1;13673:23:::0;;13571:141;10080:56:::1;10146:48;2086:57;2142:1;2094:44;2086:57;:::i;10146:48::-;9541:660;;7479:655:::0;;9358:843;;;;;;:::o;11651:241::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;11746:28:::1;::::0;::::1;11738:71;;;::::0;-1:-1:-1;;;11738:71:7;;5170:2:19;11738:71:7::1;::::0;::::1;5152:21:19::0;5209:2;5189:18;;;5182:30;5248:32;5228:18;;;5221:60;5298:18;;11738:71:7::1;4968:354:19::0;11738:71:7::1;11819:66;1455:52;1506:1;1463:39;1455:52;:::i;:::-;11870:14:::0;13673:23;;13571:141;11819:66:::1;11651:241:::0;:::o;11961:280::-;12033:50;1455:52;1506:1;1463:39;1455:52;:::i;12033:50::-;12019:64;;:10;:64;;;12011:108;;;;-1:-1:-1;;;12011:108:7;;5529:2:19;12011:108:7;;;5511:21:19;5568:2;5548:18;;;5541:30;5607:33;5587:18;;;5580:61;5658:18;;12011:108:7;5327:355:19;12011:108:7;12129:58;1245:48;1292:1;1253:35;1245:48;:::i;12129:58::-;12202:32;;12223:10;2386:74:19;;12202:32:7;;2374:2:19;2359:18;12202:32:7;;;;;;;11961:280::o;1283:162:18:-;792:66;1361:16;1103:37:17;792:66:18;14478:12:7;;14356:150;1103:37:17;1074:66;;1150:24;1186:18;1177:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1150:63;-1:-1:-1;1231:10:17;:30;;;;1223:91;;;;-1:-1:-1;;;1223:91:17;;6145:2:19;1223:91:17;;;6127:21:19;6184:2;6164:18;;;6157:30;6223:34;6203:18;;;6196:62;6294:18;6274;;;6267:46;6330:19;;1223:91:17;5943:412:19;1223:91:17;1398:40:18::1;1423:14;1398:24;:40::i;:::-;1064:268:17::0;;1283:162:18;;:::o;11309:176:7:-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;11386:51:::1;1071:42;1112:1;1079:29;1071:42;:::i;11386:51::-;11452:26;::::0;2416:42:19;2404:55;;2386:74;;11452:26:7::1;::::0;2374:2:19;2359:18;11452:26:7::1;;;;;;;11309:176:::0;:::o;10809:142::-;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;10893:51:::1;1835:58;1892:1;1843:45;1835:58;:::i;10556:247::-:0;8288:46;1245:48;1292:1;1253:35;1245:48;:::i;8288:46::-;8274:60;;:10;:60;;;8266:109;;;;-1:-1:-1;;;8266:109:7;;4765:2:19;8266:109:7;;;4747:21:19;4804:2;4784:18;;;4777:30;4843:34;4823:18;;;4816:62;4914:6;4894:18;;;4887:34;4938:19;;8266:109:7;4563:400:19;8266:109:7;10657:13:::1;1709:54;1762:1;1717:41;1709:54;:::i;:::-;10683:49;::::0;;::::1;::::0;::::1;2932:25:19::0;;;;3005:42;2993:55;;2973:18;;;2966:83;2905:18;;10683:49:7::1;;;;;;;;;;;;10673:60;;;;;;10657:76;;10780:6;10773:5;10766:21;10752:45;10556:247:::0;;:::o;11022:127::-;11070:7;11096:46;1245:48;1292:1;1253:35;1245:48;:::i;11096:46::-;11089:53;;11022:127;:::o;4421:647:4:-;4592:71;;;6534:66:19;6522:79;;4592:71:4;;;;6504:98:19;;;;4592:71:4;;;;;;;;;;6477:18:19;;;;4592:71:4;;;;;;;;;;;4615:34;4592:71;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;;;;;;4421:647;;;;;:::o;6674:198:2:-;6757:12;6788:77;6809:6;6817:4;6788:77;;;;;;;;;;;;;;;;;:20;:77::i;:::-;6781:84;6674:198;-1:-1:-1;;;6674:198:2:o;1770:368:17:-;1855:28;;;1847:80;;;;-1:-1:-1;;;1847:80:17;;6815:2:19;1847:80:17;;;6797:21:19;6854:2;6834:18;;;6827:30;6893:34;6873:18;;;6866:62;6964:9;6944:18;;;6937:37;6991:19;;1847:80:17;6613:403:19;1847:80:17;2003:1;1945:46;736:48;783:1;744:35;736:48;:::i;1945:46::-;:60;;;1937:117;;;;-1:-1:-1;;;1937:117:17;;7223:2:19;1937:117:17;;;7205:21:19;7262:2;7242:18;;;7235:30;7301:34;7281:18;;;7274:62;7372:14;7352:18;;;7345:42;7404:19;;1937:117:17;7021:408:19;7058:325:2;7199:12;7224;7238:23;7265:6;:19;;7285:4;7265:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7223:67;;;;7307:69;7334:6;7342:7;7351:10;7363:12;7307:26;:69::i;:::-;7300:76;7058:325;-1:-1:-1;;;;;;7058:325:2:o;7671:628::-;7851:12;7879:7;7875:418;;;7906:10;:17;7927:1;7906:22;7902:286;;1702:19;;;;8113:60;;;;-1:-1:-1;;;8113:60:2;;8183:2:19;8113:60:2;;;8165:21:19;8222:2;8202:18;;;8195:30;8261:31;8241:18;;;8234:59;8310:18;;8113:60:2;7981:353:19;8113:60:2;-1:-1:-1;8208:10:2;8201:17;;7875:418;8249:33;8257:10;8269:12;8249:7;:33::i;:::-;7671:628;;;;;;:::o;8821:540::-;8980:17;;:21;8976:379;;9208:10;9202:17;9264:15;9251:10;9247:2;9243:19;9236:44;8976:379;9331:12;9324:20;;-1:-1:-1;;;9324:20:2;;;;;;;;:::i;14:154:19:-;100:42;93:5;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:347;224:8;234:6;288:3;281:4;273:6;269:17;265:27;255:55;;306:1;303;296:12;255:55;-1:-1:-1;329:20:19;;372:18;361:30;;358:50;;;404:1;401;394:12;358:50;441:4;433:6;429:17;417:29;;493:3;486:4;477:6;469;465:19;461:30;458:39;455:59;;;510:1;507;500:12;455:59;173:347;;;;;:::o;525:852::-;624:6;632;640;648;656;709:2;697:9;688:7;684:23;680:32;677:52;;;725:1;722;715:12;677:52;764:9;751:23;783:31;808:5;783:31;:::i;:::-;833:5;-1:-1:-1;889:2:19;874:18;;861:32;912:18;942:14;;;939:34;;;969:1;966;959:12;939:34;1008:58;1058:7;1049:6;1038:9;1034:22;1008:58;:::i;:::-;1085:8;;-1:-1:-1;982:84:19;-1:-1:-1;1173:2:19;1158:18;;1145:32;;-1:-1:-1;1189:16:19;;;1186:36;;;1218:1;1215;1208:12;1186:36;;1257:60;1309:7;1298:8;1287:9;1283:24;1257:60;:::i;:::-;525:852;;;;-1:-1:-1;525:852:19;;-1:-1:-1;1336:8:19;;1231:86;525:852;-1:-1:-1;;;525:852:19:o;1382:247::-;1441:6;1494:2;1482:9;1473:7;1469:23;1465:32;1462:52;;;1510:1;1507;1500:12;1462:52;1549:9;1536:23;1568:31;1593:5;1568:31;:::i;1634:180::-;1693:6;1746:2;1734:9;1725:7;1721:23;1717:32;1714:52;;;1762:1;1759;1752:12;1714:52;-1:-1:-1;1785:23:19;;1634:180;-1:-1:-1;1634:180:19:o;1819:416::-;1884:6;1892;1945:2;1933:9;1924:7;1920:23;1916:32;1913:52;;;1961:1;1958;1951:12;1913:52;2000:9;1987:23;2019:31;2044:5;2019:31;:::i;:::-;2069:5;-1:-1:-1;2126:2:19;2111:18;;2098:32;2168:15;;2161:23;2149:36;;2139:64;;2199:1;2196;2189:12;2139:64;2222:7;2212:17;;;1819:416;;;;;:::o;2471:282::-;2538:9;;;2559:11;;;2556:191;;;2603:77;2600:1;2593:88;2704:4;2701:1;2694:15;2732:4;2729:1;2722:15;3880:271;4063:6;4055;4050:3;4037:33;4019:3;4089:16;;4114:13;;;4089:16;3880:271;-1:-1:-1;3880:271:19:o;5687:251::-;5757:6;5810:2;5798:9;5789:7;5785:23;5781:32;5778:52;;;5826:1;5823;5816:12;5778:52;5858:9;5852:16;5877:31;5902:5;5877:31;:::i;7434:250::-;7519:1;7529:113;7543:6;7540:1;7537:13;7529:113;;;7619:11;;;7613:18;7600:11;;;7593:39;7565:2;7558:10;7529:113;;;-1:-1:-1;;7676:1:19;7658:16;;7651:27;7434:250::o;7689:287::-;7818:3;7856:6;7850:13;7872:66;7931:6;7926:3;7919:4;7911:6;7907:17;7872:66;:::i;:::-;7954:16;;;;;7689:287;-1:-1:-1;;7689:287:19:o;8339:455::-;8488:2;8477:9;8470:21;8451:4;8520:6;8514:13;8563:6;8558:2;8547:9;8543:18;8536:34;8579:79;8651:6;8646:2;8635:9;8631:18;8626:2;8618:6;8614:15;8579:79;:::i;:::-;8710:2;8698:15;8715:66;8694:88;8679:104;;;;8785:2;8675:113;;8339:455;-1:-1:-1;;8339:455:19:o"},"methodIdentifiers":{"acceptFirewallAdmin()":"7c65c38b","firewallAdmin()":"f05c8582","initializeFirewallAdmin(address)":"7eba9471","safeFunctionCall(address,bytes,bytes)":"1a8828f4","setApprovedVennPolicy(address,bool)":"efc2e703","setApprovedVennPolicyFee(uint256)":"acef6106","setFirewall(address)":"8c36d02d","setFirewallAdmin(address)":"734b7198"}},"metadata":"{\"compiler\":{\"version\":\"0.8.19+commit.7dd6d404\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"FirewallAdminUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newFirewall\",\"type\":\"address\"}],\"name\":\"FirewallUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"firewallAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"initializeFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"vennPolicyPayload\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeFunctionCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"vennPolicy\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"status\",\"type\":\"bool\"}],\"name\":\"setApprovedVennPolicy\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"setApprovedVennPolicyFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewall\",\"type\":\"address\"}],\"name\":\"setFirewall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_firewallAdmin\",\"type\":\"address\"}],\"name\":\"setFirewallAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"acceptFirewallAdmin()\":{\"details\":\"Accept the role as firewall admin.\"},\"firewallAdmin()\":{\"details\":\"View function for the firewall admin\"},\"initializeFirewallAdmin(address)\":{\"details\":\"Proxy Admin only function, allows the Proxy Admin to initialize the firewall admin in the following cases: - If the contract was originally deployed with a zero-address in the constructor (for various reasons) - Or, if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"params\":{\"_firewallAdmin\":\"address of the firewall admin\"}},\"safeFunctionCall(address,bytes,bytes)\":{\"details\":\"Allows calling an approved external Venn policy before executing a method. This can be used for multiple purposes, but the initial one is to call `approveCallsViaSignature` before executing a function, allowing synchronous transaction approvals.\",\"params\":{\"data\":\"data to be executed after the Venn policy call\",\"vennPolicy\":\"address of the Venn policy\",\"vennPolicyPayload\":\"payload to be sent to the Venn policy\"}},\"setApprovedVennPolicy(address,bool)\":{\"details\":\"Allows firewall admin to set approved Venn policies. IMPORTANT: Only set approved Venn policy if you know what you're doing. Anyone can cause this contract to send any data to an approved Venn policy.\",\"params\":{\"status\":\"status of the Venn policy\",\"vennPolicy\":\"address of the Venn policy\"}},\"setFirewall(address)\":{\"details\":\"Admin only function allowing the consumers admin to set the firewall address.\",\"params\":{\"_firewall\":\"address of the firewall\"}},\"setFirewallAdmin(address)\":{\"details\":\"Admin only function, sets new firewall admin. New admin must accept.\",\"params\":{\"_firewallAdmin\":\"address of the new firewall admin\"}}},\"title\":\"TransparentProxyFirewallConsumer\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"For proxies that implement ERC1967 with an admin slot, this extension allows the Proxy Admin to initialize the firewall admin even when the contract was originally deployed with a zero-address in the constructor or if the contract is upgradeable and the proxy was initialized before this implementation was deployed\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/proxies/TransparentProxyFirewallConsumer.sol\":\"TransparentProxyFirewallConsumer\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"contracts/FirewallConsumerBase.sol\":{\"keccak256\":\"0xeea5ac84823e36dddb5e629ae033650f8debcbacde6a2b8f54d57b93cd5017ef\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec4dbce3d0356a23e65a4a89be4f771e1d3fb1747e7efa4ce3453337b7dd749b\",\"dweb:/ipfs/QmZtxxDQvoWaLp5hx7Dzxur3YkxGQ6G9KAQDvF7PwwLqhy\"]},\"contracts/interfaces/IFirewall.sol\":{\"keccak256\":\"0xcd6d1f41482cc0b87ea70d460bccb5fa55569f724b56d67ccaa4fc1ff7f12d98\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0a18cc1dc87816acc869e3b997fa3621f7a35b8a39b2a629e005ddaf6a01c332\",\"dweb:/ipfs/QmTsz2MrsMctUfH9G6XUQ7afxudXAPWh4LbEqFJ4MCcYWf\"]},\"contracts/interfaces/IFirewallConsumer.sol\":{\"keccak256\":\"0x1740f678dc4abd112bdec06f27b13b9984bc07a2df2134f5862d31e6436cd67b\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://380ab5aa19f4494fc72d4ef33ce6928a4cac4351e5dfa1b48d5ab9fed49921f7\",\"dweb:/ipfs/QmbNCygeWjkf32QzrRP2mS2gF83jaFQYMBWdSCvaGCpKNf\"]},\"contracts/interfaces/IOwnable.sol\":{\"keccak256\":\"0x45b2b806b3c3f90bf684380d722f23d9de67651f3fb6715d1dc2c36812e36768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4fd01f222df5446d79f2438f2c310dbdf96db0783164248b2bab5dfaa078e068\",\"dweb:/ipfs/QmYuDWuE1Ke1oiaErbeBhiqFptinyKWt9GhJtstwhiw8dt\"]},\"contracts/proxies/ProxyFirewallConsumerBase.sol\":{\"keccak256\":\"0x37ee68fa975fba14161dfc225c468236d25d927dcbe25271b6e3f86ca1357d49\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://ec8807ff82d2eb410e0079e41bc7566cb220183f759a2eef438dae3e201fffa8\",\"dweb:/ipfs/QmZnM8kCF8yCvVS8uMoz8zyitV11t5LEwD1ypi65E4wj8P\"]},\"contracts/proxies/TransparentProxyFirewallConsumer.sol\":{\"keccak256\":\"0x8c91c4b157c2a6285a2522bb26e716c5b16dfd2f1b2fef1f388c5cb58c239976\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://c536275509beaccf334eef309f91de8b93bade6f5ccf9f7cf2f5f620a1d0f877\",\"dweb:/ipfs/QmYGnNfgtVvZKJANWDGrkF22bdEFufPCoJYQtdeW2p4oYm\"]}},\"version\":1}","storageLayout":{"storage":[],"types":null}}}}}}