{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"1cbe0c09-ce4f-4428-a5ce-a6017c520bad","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"824e96d2c752c4ac89e068706ea02b6d5de6f181fc070651909e8dce638fd8f4","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"b6503de65ad02f845827887c23da4c3b56ccc5df7a459db263bae6e549d92f7f","skillId":"build-contract-project","state":"accepted"}],"objective":"Adapt our fee system to make it pass the audits. You can modify anything you need.\n\nWho can call what: fixed fees\nNumbers the contracts enforce: - SI Token: Plain ERC-20 (OpenZeppelin), non-upgradeable, non-pausable, 100% supply minted to deployer at constructor.    - SI Hook (Uniswap v4): Dynamic/fixed 2% hook fee. Buys (80% Vault / 20% Creator), Sells (50% Burn / 50% Vault). Must fail-safe / non-blocking.    - SI Community Vault: Immutable sink, no withdrawal or admin functions.\nUpgrades and pausing: NO owner, NO administrative powers, NO upgradeability, NO pause mechanism. Completely immutable.\nOutside contracts: Uniswap v4 Core & Periphery libraries only.","parentJobId":"019d5d85-5f0a-4d6a-aeae-93163ae147fb","planHash":"18d065df196b66326b94a707e453d01aa39ed9ef90f381d495b12e9fe771fb95","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"019d5d85-5f0a-4d6a-aeae-93163ae147fb","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-826-swarm-inu"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51496","feedbackHash":"78e628a674302f0170f94088b3de20f52e7627f752ddf7b5191fc343ac4d5adf","nodeKey":"build_contract_project","submissionHash":"824e96d2c752c4ac89e068706ea02b6d5de6f181fc070651909e8dce638fd8f4","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"ce0110f60c6c3b00f5abc996c720ba2aefcdc3bfaa3c9499f85f2fee3c9eebd5","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"055f4db9716d5ab61d96861fec8a32c98f84d82b01fa10b310c80ed112a9f8d6","device":"b3e0a28d5c3d1a63","findings":[],"hash":"824e96d2c752c4ac89e068706ea02b6d5de6f181fc070651909e8dce638fd8f4","nodeId":"dc7a398b-0d83-47f2-a3aa-1ecb19351e35","outcome":"completed","summary":"Implemented the fee-system hardening: OpenZeppelin ERC-20 source, fixed 2% splits, non-blocking deferred payouts, bounded retries, and no privileged hook initializer. Added deployment planning that reuses the existing token and vault.\n\nPassed with Solidity 0.8.26:\n\n- `forge build`\n- `forge test` — 69 passed\n- `forge fmt --check`\n\nDeployment assumptions and responsibilities are documented. Protected files were untouched. Nothing was deployed or re-minted; independent audit and production address/factory verification remain outstanding.","treeHash":"dabca5add0c7b0cf80ccdc239469bfba53806d96","usage":{"cachedInputTokens":1724544,"inputTokens":120791,"model":"gpt-6-astra","outputTokens":20276,"runtime":"codex","turns":7,"wallClockMs":543049}}],"verification":[{"checks":[{"durationMs":4974,"exitCode":0,"name":"build","output":"Compiling 90 files with Solc 0.8.26\nSolc 0.8.26 finished in 4.76s\nCompiler run successful!\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:25:33\n   │\n25 │           (BalanceDelta delta,) = manager.modifyLiquidity(\n   │ ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n26 │ ┃             seed.key,\n27 │ ┃             ModifyLiquidityParams(seed.tickLower, seed.tickUpper, int256(uint256(seed.liquidity)), bytes32(0)),\n28 │ ┃             \"\"\n29 │ ┃         );\n   │ ┗━━━━━━━━━┛\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/LaunchLiquidity.sol:36:51\n   │\n36 │             manager.take(currency, address(this), uint256(int256(delta)));\n   │                                                   ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/LaunchLiquidity.sol:38:28\n   │\n38 │             uint256 owed = uint256(-int256(delta));\n   │                            ━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:40:17\n   │\n40 │                 manager.settle{value: owed}();\n   │                 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[unused-return]: return value of an external call is not used\n   ╭▸ src/LaunchLiquidity.sol:44:17\n   │\n44 │                 manager.settle();\n   │                 ━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:61:9\n   │\n61 │         address partialFillRouter_\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:58:9\n   │\n58 │         address imd_,\n   │         ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/SIFeeHook.sol:57:9\n   │\n57 │         address si_,\n   │         ━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[reentrancy-no-eth]: external call can be reentered before `activePayer` is updated\n   ╭▸ src/SISwapRouter.sol:70:13\n   │\n70 │             poolManager.unlock(abi.encode(Request(key, params, maxInput, minOutput, recipient))), (BalanceDelta)\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[block-timestamp]: usage of `block.timestamp` in a comparison may be manipulated by validators\n   ╭▸ src/SISwapRouter.sol:62:13\n   │\n62 │         if (block.timestamp > deadline) revert DeadlineExpired();\n   │             ━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/block-timestamp\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SISwapRouter.sol:112:9\n    │\n112 │         emit SwapExecuted(payer, request.recipient, Currency.unwrap(input), inputAmount, outputAmount, refund);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:89:59\n   │\n89 │         if (inputDelta > 0 || outputDelta < 0 || refund > uint256(-inputDelta)) revert InvalidSwapDelta();\n   │                                                           ━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:94:27\n   │\n94 │             inputDelta += int256(refund);\n   │                           ━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int256' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:96:34\n   │\n96 │                 ? toBalanceDelta(int128(inputDelta), int128(outputDelta))\n   │                                  ━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:96:54\n   │\n96 │                 ? toBalanceDelta(int128(inputDelta), int128(outputDelta))\n   │                                                      ━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:97:34\n   │\n97 │                 : toBalanceDelta(int128(outputDelta), int128(inputDelta));\n   │                                  ━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/SISwapRouter.sol:97:55\n   │\n97 │                 : toBalanceDelta(int128(outputDelta), int128(inputDelta));\n   │                                                       ━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'int128' is safe because [explain why]\n   │       // forge-lint: disable-next-line(unsafe-typecast)\n   │       \n   │       \n   ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SISwapRouter.sol:100:31\n    │\n100 │         uint256 inputAmount = uint256(-inputDelta);\n    │                               ━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SISwapRouter.sol:101:32\n    │\n101 │         uint256 outputAmount = uint256(outputDelta);\n    │                                ━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:110:57\n    │\n110 │         uint256 reserved = params.amountSpecified < 0 ? uint256(-params.amountSpecified) / 50 : 0;\n    │                                                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:111:63\n    │\n111 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(reserved)), 0), 0);\n    │                                                               ━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:111:70\n    │\n111 │         return (IHooks.beforeSwap.selector, toBeforeSwapDelta(int128(int256(reserved)), 0), 0);\n    │                                                                      ━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-no-eth]: external call can be reentered before `swapping` is updated\n    ╭▸ src/SIFeeHook.sol:148:13\n    │\n148 │             poolManager.mint(sender, input.toId(), refund);\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[reentrancy-no-eth]: external call can be reentered before `swapping` is updated\n    ╭▸ src/SIFeeHook.sol:190:9\n    │\n190 │         poolManager.mint(address(this), currency.toId(), fee);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-no-eth\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:197:9\n    │\n197 │         emit FeeAccrued(token, fee);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:213:25\n    │\n213 │         if (!delivered) emit PayoutDeferred(Currency.unwrap(currency), recipient, amount);\n    │                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:125:28\n    │\n125 │         uint256 netInput = uint256(-int256(inputDelta));\n    │                            ━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:128:45\n    │\n128 │             ? _exactInputFee(sender, input, uint256(-params.amountSpecified), netInput)\n    │                                             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:130:59\n    │\n130 │         int128 returnedFee = params.amountSpecified > 0 ? int128(int256(fee)) : int128(0);\n    │                                                           ━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:130:66\n    │\n130 │         int128 returnedFee = params.amountSpecified > 0 ? int128(int256(fee)) : int128(0);\n    │                                                                  ━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'int256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:149:13\n    │\n149 │             emit InputRefund(sender, Currency.unwrap(input), refund);\n    │             ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:171:25\n    │\n171 │         if (!delivered) emit PayoutDeferred(currency, recipient, amount);\n    │                         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:157:78\n    │\n157 │         if (amount == 0 || amount > pending[currency][recipient] || amount > uint256(uint128(type(int128).max))) {\n    │                                                                              ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint256' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/SIFeeHook.sol:157:86\n    │\n157 │         if (amount == 0 || amount > pending[currency][recipient] || amount > uint256(uint128(type(int128).max))) {\n    │                                                                                      ━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint128' is safe because [explain why]\n    │       // forge-lint: disable-next-line(unsafe-typecast)\n    │       \n    │       \n    ╰ help: https://getfoundry.sh/forge/linting/unsafe-typecast\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/SIFeeHook.sol:223:9\n    │\n223 │         emit PayoutDelivered(Currency.unwrap(currency), recipient, amount);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\n","passed":true},{"durationMs":16704,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 11 tests for test/TokenVault.t.sol:TokenVaultTest\n[PASS] testFuzz_allowanceConsumptionAndRevocation(uint256,uint256) (runs: 256, μ: 204886, ~: 206508)\nLogs:\n  Bound result 4660\n  Bound result 1647\n\n[PASS] testFuzz_transferConservesSupplyAndDeliversExactAmount(uint256) (runs: 256, μ: 157976, ~: 158649)\nLogs:\n  Bound result 115014161232365823842787332\n\n[PASS] test_infiniteAllowanceStaysInfinite() (gas: 121498)\n[PASS] test_invalidZeroAddresses() (gas: 106415)\n[PASS] test_metadataAndConstructorMint() (gas: 80624)\n[PASS] test_noMintOrHolderControl() (gas: 268991)\n[PASS] test_rejectedTransfersPreserveBalancesAndAllowance() (gas: 222407)\n[PASS] test_vaultDirectDonationsAndBurnViews() (gas: 381979)\n[PASS] test_vaultHasNoExitOrApprovalAndCannotBeDrainedByDeployer() (gas: 342327)\n[PASS] test_vaultRejectsInvalidTokenConfiguration() (gas: 6024)\n[PASS] test_zeroAndSelfTransfers() (gas: 73098)\nSuite result: ok. 11 passed; 0 failed; 0 skipped; finished in 16.96ms (27.48ms CPU time)\n\nRan 6 tests for test/LaunchHelpers.t.sol:LaunchHelpersTest\n[PASS] testFuzz_hookFlagsRejectAdditionalPermissions(uint160,uint160) (runs: 256, μ: 3954, ~: 3954)\n[PASS] test_emptySeedRejected() (gas: 46027)\n[PASS] test_guardAllowsOnlyDeployerInitializationThroughManager() (gas: 100695051)\n[PASS] test_nativeSeedAndSwapSettlement() (gas: 548010)\n[PASS] test_seedAndSwapSettleActualManagerBalances() (gas: 545530)\n[PASS] test_seedFailsWithoutFundsAndLeavesPoolUnfunded() (gas: 251047)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 104.97ms (80.06ms CPU time)\n\nRan 9 tests for test/SIFeeHardening.t.sol:SIFeeHardeningTest\n[PASS] test_bothPayoutsCanExhaustGasWithoutBlockingBuyOrLaterSell() (gas: 953836)\n[PASS] test_creatorCannotBeAProtocolOrSinkAddress() (gas: 15586)\n[PASS] test_deployerAndStrangerCannotChangeFeesPauseUpgradeOrWithdraw() (gas: 1111182)\n[PASS] test_gasGriefRetryIsBoundedReturnsFalseAndReleasesGuard() (gas: 1243732)\n[PASS] test_insufficientRetryGasDefersWithoutLosingDebt() (gas: 557715)\n[PASS] test_lowGasSwapDefersPayoutsAndStillChargesTheFixedFee() (gas: 327908)\n[PASS] test_retryReentryCannotStealOtherDebtOrDoublePay() (gas: 787645)\n[PASS] test_retryReturnBombLeavesDebtBackedAndCanRecover() (gas: 865654)\n[PASS] test_trueReturnWithoutPaymentCannotDestroyRecipientEntitlements() (gas: 980348)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 104.99ms (8.91ms CPU time)\n\nRan 19 tests for test/SIFeeHook.t.sol:SIFeeHookTest\n[PASS] testFuzz_feeSplitsAndConservation(uint96,bool) (runs: 256, μ: 433896, ~: 431672)\nLogs:\n  Bound result 19087\n\n[PASS] test_alternateRouterFullFillWorksButPartialFillRollsBack() (gas: 623852)\n[PASS] test_callbacksAndDeliveryRejectUnauthorizedCallers() (gas: 182579)\n[PASS] test_emptyLiquidityRefundsEntireReservation() (gas: 744680)\n[PASS] test_exactInputBuysAndSellsChargeInputCurrency() (gas: 765279)\n[PASS] test_exactOutputBuysAndSellsChargeGrossInputFee() (gas: 773853)\n[PASS] test_existingRouterClaimsAreNotSpentByNextTrader() (gas: 404736)\n[PASS] test_failedRecipientsDoNotBrickAndFailedRetryIsAtomic() (gas: 1039852)\n[PASS] test_firstSingleSidedBuyDefersThenAnyoneCanFlush() (gas: 41591465)\n[PASS] test_flushCannotRedirectOrExceedFixedDebt() (gas: 518149)\n[PASS] test_gasGriefDeferredAndNoReturnSupported() (gas: 615317)\n[PASS] test_partialExactInputRefundsUnusedFeeClaims() (gas: 469145)\n[PASS] test_partialExactOutputHasFeeOnActualInputAndHonorsMinimum() (gas: 424204)\n[PASS] test_poolValidationAndPermissionlessInitialization() (gas: 81922)\n[PASS] test_reentryDuringPayoutCannotFlushOrCorruptAccounting() (gas: 680481)\n[PASS] test_reverseTokenOrdering() (gas: 6810199)\n[PASS] test_routerDeadlineRecipientAndAllowanceFailures() (gas: 539748)\n[PASS] test_routerLimitsRollbackAllFeeTransfers() (gas: 762625)\n[PASS] test_shortReturnAndReturnBombCannotBrickPayouts() (gas: 654675)\nSuite result: ok. 19 passed; 0 failed; 0 skipped; finished in 104.99ms (116.18ms CPU time)\n\nRan 13 tests for test/SIAdversarialBoundaries.t.sol:SIAdversarialBoundariesTest\n[PASS] testFuzz_exactOutputChargesOnlyInputCurrencyAndExactWalletSpend(uint256,bool) (runs: 1000, μ: 405786, ~: 415089)\nLogs:\n  Bound result 50000\n\n[PASS] testFuzz_transferFromSelfConsumesOnlyFiniteAllowance(uint256,uint256) (runs: 1000, μ: 140443, ~: 140754)\nLogs:\n  Bound result 275633301244691469284586\n  Bound result 115792089237316195423570985008687907853269984665640563763824282763221660355524\n\n[PASS] test_callbackStateMachineRejectsRepetitionAndRecovers() (gas: 633522)\n[PASS] test_everyPoolKeyComponentIsBoundToTheIntendedPool() (gas: 588221)\n[PASS] test_feeAndSplitRoundingAtOneWeiAndEachThreshold() (gas: 13881448)\n[PASS] test_hookConstructorRejectsMismatchedDependenciesAndMissingCode() (gas: 12640)\n[PASS] test_hookRejectsZeroAndOutOfInt128DomainBeforeAnyReservation() (gas: 612631)\n[PASS] test_maximumSupportedBudgetReservationDoesNotOverflow() (gas: 70114)\n[PASS] test_maximumTransferAndFailedDelegatedTransferPreserveState() (gas: 119353)\n[PASS] test_noReturnTransferFromWorksAndOutputGoesToChosenRecipient() (gas: 976762)\n[PASS] test_routerRejectsSelfAndManagerAsRecipientAndUnauthenticatedCallback() (gas: 106805)\n[PASS] test_settlementFailuresRollBackMutationsPayoutsAndFiniteAllowance() (gas: 4572833)\n[PASS] test_transferFromCallbackCannotStartNestedSwap() (gas: 1879323)\nSuite result: ok. 13 passed; 0 failed; 0 skipped; finished in 105.44ms (189.61ms CPU time)\n\nRan 5 tests for test/PrepareLaunch.t.sol:PrepareLaunchTest\n[PASS] test_feeOnlyPlanPreservesExistingTokenVaultAndAllowsAnyInitializer() (gas: 361879710)\n[PASS] test_feeOnlyPlanRejectsWrongVaultAndInvalidParameters() (gas: 122425)\n[PASS] test_planDeploysPredictedContractsAndPreservesSupply() (gas: 58747927)\n[PASS] test_pricesMatchIndependentIntegerReferenceForBothCurrencyOrders() (gas: 232730970)\n[PASS] test_rejectsMissingAddressesAndUnsupportedDecimals() (gas: 108565)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 138.34ms (320.76ms CPU time)\n\nRan 2 tests for test/invariant/SIFeeAccountingInvariant.t.sol:SIAsCurrencyOneInvariantTest\n[PASS]\nSIAsCurrencyOneInvariantTest invariants:\n[PASS] invariant_allTokensAreConservedAcrossTradersPoolAndSinks\n[PASS] invariant_deferredFeesAreFullyBackedAndRouterRetainsNoFunds\n[PASS] invariant_feesArePaidOrRemainOwedToExactlyTheIntendedRecipient\n SIAsCurrencyOneInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------------+-------------------+-------+---------+----------╮\n| Contract             | Selector          | Calls | Reverts | Discards |\n+=======================================================================+\n| SIFeeSequenceHandler | donateSI          | 2719  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | flush             | 2779  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | rejectedSwap      | 2725  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | roundTrip         | 2633  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | setPayoutBehavior | 2745  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | swap              | 2783  | 0       | 0        |\n╰----------------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 2010\n  Bound result 9441\n  Bound result 19159\n  Bound result 395\n  Bound result 400000\n  Bound result 16383\n  Bound result 7000000000000000000\n  Bound result 48879\n  Bound result 12648430\n  Bound result 18595\n  Bound result 48879\n  Bound result 9462\n  Bound result 16483\n  Bound result 35458790\n  Bound result 99999999999999999997\n  Bound result 99999999999999990000\n  Bound result 1015\n  Bound result 16383\n  Bound result 1000000000000000000\n  Bound result 794099255756234330979\n  Bound result 16112000000000203731\n  Bound result 15226939732624305264\n  Bound result 16856\n  Bound result 599372460296574130661\n  Bound result 1508\n  Bound result 11164\n  Bound result 7000000000000000000\n  Bound result 4660\n  Bound result 5\n  Bound result 60\n  Bound result 19534\n  Bound result 13\n  Bound result 14753\n  Bound result 8006\n  Bound result 1000000000000000000000\n  Bound result 111380182\n  Bound result 1000000000000000000000\n  Bound result 16383\n  Bound result 29\n  Bound result 341\n  Bound result 29490235671700737109\n  Bound result 724127418408017729156\n  Bound result 68599661043811757\n  Bound result 3212\n  Bound result 23508359988995276682\n  Bound result 1649910285828199856\n  Bound result 64548910933715646277\n  Bound result 51966\n  Bound result 17920\n  Bound result 210\n  Bound result 841468895930886295670\n  Bound result 60817588092102302714\n  Bound result 3365875583723578128\n\n[PASS] test_sequenceWitnessIncludesFailurePartialFillRecoveryAndRoundTrip() (gas: 3004214)\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 16163266782143934272\n  Bound result 300000000000000000000\n  Bound result 10000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.21s (9.21s CPU time)\n\nRan 2 tests for test/invariant/SIFeeAccountingInvariant.t.sol:SIAsCurrencyZeroInvariantTest\n[PASS]\nSIAsCurrencyZeroInvariantTest invariants:\n[PASS] invariant_allTokensAreConservedAcrossTradersPoolAndSinks\n[PASS] invariant_deferredFeesAreFullyBackedAndRouterRetainsNoFunds\n[PASS] invariant_feesArePaidOrRemainOwedToExactlyTheIntendedRecipient\n SIAsCurrencyZeroInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭----------------------+-------------------+-------+---------+----------╮\n| Contract             | Selector          | Calls | Reverts | Discards |\n+=======================================================================+\n| SIFeeSequenceHandler | donateSI          | 2719  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | flush             | 2779  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | rejectedSwap      | 2725  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | roundTrip         | 2633  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | setPayoutBehavior | 2745  | 0       | 0        |\n|----------------------+-------------------+-------+---------+----------|\n| SIFeeSequenceHandler | swap              | 2783  | 0       | 0        |\n╰----------------------+-------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 2180394325\n  Bound result 14274\n  Bound result 5232\n  Bound result 396\n  Bound result 400000\n  Bound result 16383\n  Bound result 7000000000000000000\n  Bound result 48879\n  Bound result 12648430\n  Bound result 4991\n  Bound result 48879\n  Bound result 9468\n  Bound result 1681\n  Bound result 521570653435304214169\n  Bound result 99999999999999999997\n  Bound result 147\n  Bound result 6013\n  Bound result 16383\n  Bound result 1000000000000000000\n  Bound result 794099255756234330979\n  Bound result 10068599661044211968\n  Bound result 21613103857985988860\n  Bound result 3514649356\n  Bound result 599372460296574130661\n  Bound result 1508\n  Bound result 11500\n  Bound result 7000000000000000000\n  Bound result 4660\n  Bound result 5\n  Bound result 60\n  Bound result 19579\n  Bound result 13\n  Bound result 622\n  Bound result 12908\n  Bound result 1000000000000000000000\n  Bound result 111380182\n  Bound result 1000000000000000000000\n  Bound result 16383\n  Bound result 15887\n  Bound result 1383437906\n  Bound result 29490235671700737109\n  Bound result 724127418408017729156\n  Bound result 20753249925110604425\n  Bound result 3277\n  Bound result 23508359988995276682\n  Bound result 1649910285828199856\n  Bound result 64548910933715646277\n  Bound result 51966\n  Bound result 210\n  Bound result 841468895930886295670\n  Bound result 82653212921873250498\n  Bound result 3365875583723579610\n\n[PASS] test_sequenceWitnessIncludesFailurePartialFillRecoveryAndRoundTrip() (gas: 3005200)\nLogs:\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000000\n  Bound result 100000000000000000000\n  Bound result 16163265149476112832\n  Bound result 300000000000000000000\n  Bound result 10000000000000000000\n  Bound result 10000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.27s (9.25s CPU time)\n\nRan 2 tests for test/invariant/TokenVaultInvariant.t.sol:TokenVaultInvariantTest\n[PASS]\nTokenVaultInvariantTest invariants:\n[PASS] invariant_balancesAndAllowancesMatchIndependentLedger\n[PASS] invariant_vaultViewsIncludeAllDonationsAndBurnsForever\n TokenVaultInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭-------------------+-----------------------+-------+---------+----------╮\n| Contract          | Selector              | Calls | Reverts | Discards |\n+========================================================================+\n| TokenVaultHandler | approve               | 2671  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | attemptEscape         | 2672  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | invalidTransfer       | 2797  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | revokeAndAttemptSpend | 2743  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | transfer              | 2754  | 0       | 0        |\n|-------------------+-----------------------+-------+---------+----------|\n| TokenVaultHandler | transferFrom          | 2747  | 0       | 0        |\n╰-------------------+-----------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 9877\n  Bound result 0\n  Bound result 381\n  Bound result 9230\n  Bound result 4326\n  Bound result 0\n  Bound result 299118372\n  Bound result 51\n  Bound result 60\n  Bound result 1000000000\n  Bound result 0\n  Bound result 1\n  Bound result 5\n  Bound result 4230\n  Bound result 0\n  Bound result 8800\n  Bound result 33968295687303035319369163\n  Bound result 0\n  Bound result 0\n  Bound result 2\n  Bound result 469\n  Bound result 0\n  Bound result 0\n  Bound result 2290\n  Bound result 0\n  Bound result 202080282\n  Bound result 50\n  Bound result 96053106\n  Bound result 0\n  Bound result 172143792320156005586863699\n  Bound result 9028\n  Bound result 0\n  Bound result 0\n  Bound result 302927866\n  Bound result 60\n  Bound result 191038651\n  Bound result 4097\n  Bound result 138110906\n  Bound result 0\n  Bound result 205927433488253191767019361\n\n[PASS] test_handlerExercisesFullBalanceInfiniteApprovalAndRejection() (gas: 2373985)\nLogs:\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 249999999000000000000000000\n  Bound result 249999999000000000000000000\n  Bound result 315360000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 16.54s (16.54s CPU time)\n\nRan 9 test suites in 16.55s (35.60s CPU time): 69 tests passed, 0 failed, 0 skipped (69 total tests)\n","passed":true},{"durationMs":67,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIFeeHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIFeeHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"SIFeeHook.deliver(address,address,uint256)\",\"SIFeeHook.flush(address,address,uint256)\",\"SIFeeHook.unlockCallback(bytes)\",\"SISwapRouter.swap((address,address,uint24,int24,address),(bool,int256,uint160),uint256,uint256,address,uint256)\",\"SISwapRouter.unlockCallback(bytes)\",\"SwarmInu.approve(address,uint256)\",\"SwarmInu.transfer(address,uint256)\",\"SwarmInu.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":4,\"DEPENDENCIES.md\":17,\"README.md\":121,\"VALIDATION.md\":19,\"foundry.toml\":16,\"launch.json\":28,\"remappings.txt\":3,\"script/PrepareLaunch.s.sol\":215,\"src/HookFlags.sol\":16,\"src/LaunchLiquidity.sol\":48,\"src/PoolInitializationGuard.sol\":29,\"src/SICommunityVault.sol\":34,\"src/SIFeeHook.sol\":235,\"src/SISwapRouter.sol\":129,\"src/SwarmInu.sol\":12,\"src/interfaces/IERC20.sol\":14,\"src/vendor/openzeppelin/LICENSE\":22,\"src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol\":161,\"src/vendor/openzeppelin/contracts/token/ERC20/ERC20.sol\":316,\"src/vendor/openzeppelin/contracts/token/ERC20/IERC20.sol\":79,\"src/vendor/openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":26,\"src/vendor/openzeppelin/contracts/utils/Context.sol\":28,\"test/LaunchHelpers.t.sol\":163,\"test/PrepareLaunch.t.sol\":190,\"test/SIAdversarialBoundaries.t.sol\":303,\"test/SIFeeHardening.t.sol\":178,\"test/SIFeeHook.t.sol\":425,\"test/TESTING.md\":26,\"test/TokenVault.t.sol\":196,\"test/helpers/SIIntegrationFixture.sol\":81,\"test/invariant/SIFeeAccountingInvariant.t.sol\":381,\"test/invariant/TokenVaultInvariant.t.sol\":210,\"test/mocks/AdversarialIMD.sol\":89,\"test/mocks/SettlementIMD.sol\":65},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1324,"exitCode":0,"name":"slither","output":"[medium/medium] reentrancy-no-eth at src/SISwapRouter.sol:53: Reentrancy in SISwapRouter.swap(PoolKey,SwapParams,uint256,uint256,address,uint256) (src/SISwapRouter.sol#53-73):\n[medium/medium] reentrancy-no-eth at src/SIFeeHook.sol:114: Reentrancy in SIFeeHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/SIFeeHook.sol#114-134):\n[medium/medium] unused-return at src/LaunchLiquidity.sol:34: LaunchLiquidity.settle(IPoolManager,Currency,int128) (src/LaunchLiquidity.sol#34-47) ignores return value by manager.settle{value: owed}() (src/LaunchLiquidity.sol#40)\n[medium/medium] unused-return at src/LaunchLiquidity.sol:22: LaunchLiquidity.settleSeed(IPoolManager,bytes) (src/LaunchLiquidity.sol#22-32) ignores return value by (delta,None) = manager.modifyLiquidity(seed.key,ModifyLiquidityParams(seed.tickLower,seed.tickUpper,int256(uint256(seed.liquidity)),bytes32(0)),) (src/LaunchLiquidity.sol#25-29)\n[medium/medium] unused-return at src/LaunchLiquidity.sol:34: LaunchLiquidity.settle(IPoolManager,Currency,int128) (src/LaunchLiquidity.sol#34-47) ignores return value by manager.settle() (src/LaunchLiquidity.sol#44)\n[low/medium] reentrancy-benign at src/SIFeeHook.sol:188: Reentrancy in SIFeeHook._distribute(Currency,uint256) (src/SIFeeHook.sol#188-200):\n[low/medium] reentrancy-events at src/SISwapRouter.sol:76: Reentrancy in SISwapRouter.unlockCallback(bytes) (src/SISwapRouter.sol#76-114):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:216: Reentrancy in SIFeeHook._deliver(Currency,address,uint256) (src/SIFeeHook.sol#216-224):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:188: Reentrancy in SIFeeHook._distribute(Currency,uint256) (src/SIFeeHook.sol#188-200):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:136: Reentrancy in SIFeeHook._exactInputFee(address,Currency,uint256,uint256) (src/SIFeeHook.sol#136-151):\n[low/medium] reentrancy-events at src/SIFeeHook.sol:114: Reentrancy in SIFeeHook.afterSwap(address,PoolKey,SwapParams,BalanceDelta,bytes) (src/SIFeeHook.sol#114-134):\n[low/medium] timestamp at src/SISwapRouter.sol:53: SISwapRouter.swap(PoolKey,SwapParams,uint256,uint256,address,uint256) (src/SISwapRouter.sol#53-73) uses timestamp for comparisons","passed":true},{"durationMs":387,"exitCode":0,"name":"aderyn","output":"[high] reentrancy-state-change at src/SIFeeHook.sol:75: Reentrancy: State change after external call (3 places)\n[high] reused-contract-name at src/interfaces/IERC20.sol:4: Contract Name Reused in Different Files (2 places)\n[low] large-numeric-literal at src/SIFeeHook.sol:26: Large Numeric Literal (5 places)\n[low] literal-instead-of-constant at src/SIFeeHook.sol:110: Literal Instead of Constant (4 places)\n[low] missing-inheritance at src/PoolInitializationGuard.sol:10: Missing Inheritance\n[low] push-zero-opcode at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:3: PUSH0 Opcode (5 places)\n[low] state-change-without-event at src/SIFeeHook.sol:97: State Change Without Event (2 places)\n[low] unchecked-return at src/LaunchLiquidity.sol:44: Unchecked Return\n[low] unsafe-erc20-operation at src/LaunchLiquidity.sol:43: Unsafe ERC20 Operation (2 places)\n[low] unspecific-solidity-pragma at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:3: Unspecific Solidity Pragma (5 places)\n[low] unused-error at src/vendor/openzeppelin/contracts/interfaces/draft-IERC6093.sol:61: Unused Error (15 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"824e96d2c752c4ac89e068706ea02b6d5de6f181fc070651909e8dce638fd8f4","verifiedTreeHash":"dabca5add0c7b0cf80ccdc239469bfba53806d96","verifierVersion":"0.1.0+94826a22"}]}