{"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":"aff8157e-1558-4f13-9ab6-6095f6a491ab","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"3014f1ea5961918ca059453a484bf4c8bcbbfc2248dbe31d94ac7c5cdf8f50bd","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":"92dd677a83c3185fe40f102063b03f2b10b604d6041e7a56f7526e62b3597f0e","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"587567a5ef71546b5973ceaf6ef1dbbd590f49503b5ac9a6973ed86b89584857","skillId":"build-contract-project","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["build_contract_project","write_foundry_tests"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"failed"},{"acceptedSubmissionHash":"6cf9865a83a36b453a665afee1bd9b330fb7586565ec1fa64fb4734a28f3d331","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"73431852439ad3a343f3d2b7db1c43cd363b9f48f9bb51497374a0cf6d50b223","skillId":"write-foundry-tests","state":"accepted"}],"objective":"[SIMD-LAUNCH]\nThe SIMDTEST token is a fixed supply ERC-20 token with 1,000,000,000 units and 18 decimals, minted once and paired with IMD. The project serves as a SIMD Launchpad preset test focused on liquidity growth for the Identity.md ecosystem. The SIMDTESTHook contract implements the univ4_hook interface on Ethereum and acts during swap callbacks (swapE, swapF, swapG, swapH). The hook logic charges an additional fee on top of the Uniswap v4 pool’s 1.25% fee as follows: during the first 10 blocks after pool creation, an anti-snipe fee starts at 30% and linearly decays to 0% at block 11; this fee applies only during swaps and is donated directly back to the pool's in-range liquidity via PoolManager's donate function, ensuring neither the launched token nor paired currency is burned. In addition, every swap takes a constant 0.5% fee dedicated to liquidity growth, also donated to the pool's in-range liquidity. Both fees cumulatively support deeper liquidity without extracting value from traders or holders. No tokens remain undistributed since 90% of total supply seeds the pool initially. The hook is immutable with no owner, no upgradeability, and no pausing capabilities, ensuring consistent automated behavior. Testing must cover early swap attempts during the anti-snipe period checking correct fee application and decay, swaps post-anti-snipe for the 0.5% liquidity growth fee, and that the donated fees correctly increase the pool liquidity without burning tokens or the paired currency. The hook must maintain total additional fees below 3% after block 10 for balanced trading incentives. This mechanism respects the SIMD rules of 1% creator fee split off-chain and does not implement those fees as they are handled by the fee splitter outside the hook.\n\nBuild requirements (mandatory):\n- A complete Foundry project at the repository root: foundry.toml with solc 0.8.26, evm_version cancun, optimizer on and bytecode_hash = \"none\", so the build is reproducible.\n- Contracts: SIMDTESTHook. The hook is the hook of this launch's pool; keep its creation code within the EIP-3860 size limit.\n- No selfdestruct and no delegatecall anywhere in runtime code. No proxies, no owner, no upgradeability.","parentJobId":null,"planHash":"bcf685982ca0362567d1469b55d5e7b5e3f9690c244d2e13719a82085213ab59","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"aff8157e-1558-4f13-9ab6-6095f6a491ab","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-964-simd-launch-simdtest-token-fixed"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51526","feedbackHash":"94199cc6ba61a85f852ef19077e74bcc7c3d2402681c63de7b82674048aaf855","nodeKey":"build_contract_project","submissionHash":"7f749a4509d6a20c7bd25d4884f12c1120094e09f1fc9284d6c0af02939cbfea","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51503","feedbackHash":"ce59cac781085129f88c47cb55cd62391bd324c72dcccb10deec50f1be71df8b","nodeKey":"build_contract_project","submissionHash":"92dd677a83c3185fe40f102063b03f2b10b604d6041e7a56f7526e62b3597f0e","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51073","feedbackHash":"0f97347bd31a56aa1017951b4f7efd36d0f8de551f8dd6e68d06985ff10aa23d","nodeKey":"write_foundry_tests","submissionHash":"6cf9865a83a36b453a665afee1bd9b330fb7586565ec1fa64fb4734a28f3d331","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51734","feedbackHash":"048e00ffb9bfcd7b19c2fcc0f2965c55bfb006717f61d33a88c0789fdda9ea63","nodeKey":"write_foundry_tests","submissionHash":"c0e4d03bd1769980ae75512ac75f196dfe5930be04d996660195b731e35c6b77","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"c12b0200eba07a0f41411679587b91932078ee47489290d0c2daa493e455fdfb","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"827152cce766ca0d","findings":[],"hash":"3d19dd8e793c10ac2445174dc064d7b4848abe0ab67bccc88d21fa1e6200cd41","nodeId":"79869c64-2055-47ea-b2f8-a90edd48c6ab","outcome":"failed","summary":"runtime reported <synthetic>, not the required premium model claude-opus-5-5","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"<synthetic>","outputTokens":0,"runtime":"claude","turns":1,"wallClockMs":2914}},{"artifacts":[],"attempt":1,"bundleHash":"4e394946aa756082b109a9cd52139270667ea5091728fc4bad5c60534952bfef","device":"43eaeedfc1287bf1","findings":[],"hash":"6cf9865a83a36b453a665afee1bd9b330fb7586565ec1fa64fb4734a28f3d331","nodeId":"ad046759-5a9f-445d-9749-48e4ceb38090","outcome":"completed","summary":"Added tests under `test/` covering fee boundaries, callback failures, settlement rollback, donation sharing, and token conservation.\n\nValidation passed: **52 tests**, 1,000 runs per fuzz property, and **16,384 invariant calls** with no unexpected reverts. `forge build` passed.\n\nLive-fork and external factory distribution checks remain outstanding; documented in `test/COVERAGE.md`.","treeHash":"b8d4c01481a37bcdea9d16d93231cf5a9ba68b3b","usage":{"cachedInputTokens":736128,"inputTokens":81919,"model":"gpt-6-astra","outputTokens":15650,"runtime":"codex","turns":6,"wallClockMs":506467}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"403561621f0b349a","findings":[],"hash":"7975551f6536a5a21e92bdfecf94add3043d73295e1f7c09d04e1de00b1ef24c","nodeId":"ad046759-5a9f-445d-9749-48e4ceb38090","outcome":"failed","summary":"could not restore accepted work: accepted work conflicts with a dependency, which plan validation should have prevented: ","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":null,"outputTokens":0,"runtime":"codex","turns":0,"wallClockMs":482}},{"artifacts":[],"attempt":1,"bundleHash":"c01a6d5513b95d0134005370cd5e3404d6c3909c458ee64030f15c00921c4022","device":"2ad55d105b02faa2","findings":[],"hash":"7f749a4509d6a20c7bd25d4884f12c1120094e09f1fc9284d6c0af02939cbfea","nodeId":"a7eee7ae-ffce-43ba-b75f-a41a1cf6df7a","outcome":"completed","summary":"Implemented SIMDTEST, the immutable hook, vendored dependencies, and [deployment documentation](/home/imd-worker/.identitymd/work/aff8157e-1558-4f13-9ab6-6095f6a491ab/a7eee7ae-ffce-43ba-b75f-a41a1cf6df7a/README.md).\n\nVerified:\n- `forge build` passes.\n- All 33 tests pass.\n- `forge fmt --check` passes.\n- Hook initcode is 5,479 bytes, below EIP-3860’s limit.\n\nDonations accrue LP fees; active liquidity increases through LP reinvestment. Factory seeding and distribution responsibilities are documented.","treeHash":"5c80e535cf6d6a80bb7b6558a2cef0a51dbcb832","usage":{"cachedInputTokens":1507968,"inputTokens":95240,"model":"gpt-6-astra","outputTokens":25599,"runtime":"codex","turns":6,"wallClockMs":718649}},{"artifacts":[],"attempt":1,"bundleHash":"ff324edeb37d44c1823525343f4ba808eb01750733c5d6a24275c52f898434e1","device":"c1fc321231608a52","findings":[],"hash":"92dd677a83c3185fe40f102063b03f2b10b604d6041e7a56f7526e62b3597f0e","nodeId":"a7eee7ae-ffce-43ba-b75f-a41a1cf6df7a","outcome":"completed","summary":"Fixed the reproduced boundary-fill revert. Fees remain as PoolManager claims when liquidity is empty and are donated on a later swap with active liquidity.\n\nAdded regression tests, updated documentation, and recorded the finding as fixed in `.imd-responses.json`.\n\nVerified: `forge build`, all 40 project tests plus the supplied proof, and `forge fmt --check` pass.","treeHash":"ba3edaf54bf187bc1fe40f1efd95c0f98f23e7c5","usage":{"cachedInputTokens":807168,"inputTokens":91444,"model":"gpt-6-astra","outputTokens":12347,"runtime":"codex","turns":5,"wallClockMs":392325}},{"artifacts":[],"attempt":2,"bundleHash":null,"device":"83ee8122d8d8744c","findings":[],"hash":"be004429a1253a5f0e5d16bdf892990752d7c954d56ddf551d6a01146e24f7ad","nodeId":"79869c64-2055-47ea-b2f8-a90edd48c6ab","outcome":"failed","summary":"needs input: The launch's pool.initialPrice (decimal sqrtPriceX96) and pool.tickSpacing are unspecified. The hook accepts these at initialization, and the repository provides only local test fixtures, not approved launch values. Both fields are mandatory in launch.json and have no supported placeholders. — What decimal sqrtPriceX96 initial price and integer tick spacing should be used for the SIMDTEST/IMD launch pool?","treeHash":null,"usage":{"cachedInputTokens":333184,"inputTokens":25436,"model":"gpt-6-astra","outputTokens":1753,"runtime":"codex","turns":3,"wallClockMs":74258}},{"artifacts":[],"attempt":1,"bundleHash":"29e22536d617a262d7ad20210ead547cff35f851c88786ed3c7f3da85656bf71","device":"a68191e8efe5b6e4","findings":[{"description":"afterSwap unconditionally donates every nonzero additional fee against the post-swap active liquidity. A valid swap can execute against the last funded range and cross its final tick, leaving zero active liquidity. PoolManager.donate then reverts with NoLiquidityToReceiveFees, rolling back the entire trade even though tokens were available and the price limit permits the partial fill. The constant 0.5% growth fee makes this persist after the anti-snipe period. This blocks trades ending at or beyond the last funded tick (and trades ending in gaps), but does not permanently freeze smaller in-range swaps or LP withdrawals. The existing test expecting this revert was removed rather than treating the availability defect as correct behavior.","line":126,"path":"src/SIMDTESTHook.sol","proof":"// SPDX-License-Identifier: MIT\npragma solidity 0.8.26;\n\nimport {SIMDTEST} from \"src/SIMDTEST.sol\";\nimport {SIMDTESTHook} from \"src/SIMDTESTHook.sol\";\nimport {PoolManager} from \"v4-core/src/PoolManager.sol\";\nimport {IPoolManager} from \"v4-core/src/interfaces/IPoolManager.sol\";\nimport {IHooks} from \"v4-core/src/interfaces/IHooks.sol\";\nimport {IUnlockCallback} from \"v4-core/src/interfaces/callback/IUnlockCallback.sol\";\nimport {IERC20} from \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport {Hooks} from \"v4-core/src/libraries/Hooks.sol\";\nimport {TickMath} from \"v4-core/src/libraries/TickMath.sol\";\nimport {StateLibrary} from \"v4-core/src/libraries/StateLibrary.sol\";\nimport {TransientStateLibrary} from \"v4-core/src/libraries/TransientStateLibrary.sol\";\nimport {PoolKey} from \"v4-core/src/types/PoolKey.sol\";\nimport {PoolIdLibrary} from \"v4-core/src/types/PoolId.sol\";\nimport {Currency} from \"v4-core/src/types/Currency.sol\";\nimport {BalanceDelta} from \"v4-core/src/types/BalanceDelta.sol\";\n\ninterface ProofVm { function roll(uint256) external; }\n\n// Self-contained: no imports from the submitted test suite or external test libraries.\ncontract EmptyRangeProofTest is IUnlockCallback {\n    using StateLibrary for IPoolManager;\n    using TransientStateLibrary for IPoolManager;\n    using PoolIdLibrary for PoolKey;\n\n    ProofVm constant vm = ProofVm(address(uint160(uint256(keccak256(\"hevm cheat code\")))));\n    IPoolManager manager;\n    SIMDTESTHook hook;\n    PoolKey hooked;\n    PoolKey control;\n\n    function setUp() public {\n        vm.roll(100);\n        manager = IPoolManager(address(new PoolManager(address(this))));\n        SIMDTEST token = new SIMDTEST();\n        SIMDTEST localPair = new SIMDTEST();\n        bytes32 initHash = keccak256(abi.encodePacked(\n            type(SIMDTESTHook).creationCode, abi.encode(manager, address(token), address(this))\n        ));\n        bool deployed;\n        for (uint256 salt; salt < 1_000_000; ++salt) {\n            address candidate = address(uint160(uint256(keccak256(abi.encodePacked(\n                bytes1(0xff), address(this), bytes32(salt), initHash\n            )))));\n            if ((uint160(candidate) & Hooks.ALL_HOOK_MASK) == 0x2044) {\n                hook = new SIMDTESTHook{salt: bytes32(salt)}(manager, address(token), address(this));\n                deployed = true;\n                break;\n            }\n        }\n        require(deployed, \"salt search failed\");\n        (address a, address b) = address(token) < address(localPair)\n            ? (address(token), address(localPair)) : (address(localPair), address(token));\n        hooked = PoolKey(Currency.wrap(a), Currency.wrap(b), 12500, 60, IHooks(address(hook)));\n        control = PoolKey(Currency.wrap(a), Currency.wrap(b), 12500, 60, IHooks(address(0)));\n        manager.initialize(hooked, uint160(1 << 96));\n        manager.initialize(control, uint160(1 << 96));\n        manager.unlock(abi.encode(true, control));\n        manager.unlock(abi.encode(true, hooked));\n    }\n\n    function testPartialFillAtLastTickMustRemainExecutable() public {\n        vm.roll(110); // The constant growth fee alone is sufficient to trigger the defect.\n        BalanceDelta withoutHook = abi.decode(manager.unlock(abi.encode(false, control)), (BalanceDelta));\n        require(withoutHook.amount0() < 0 && withoutHook.amount1() > 0, \"control swap did not execute\");\n        require(uint256(-int256(withoutHook.amount0())) < 100_000 ether, \"expected a partial fill\");\n        require(manager.getLiquidity(control.toId()) == 0, \"control did not cross final tick\");\n\n        // Expected: the same valid partial fill executes with applicable hook fees.\n        // Actual: donate() sees zero post-swap liquidity and raises NoLiquidityToReceiveFees.\n        BalanceDelta withHook = abi.decode(manager.unlock(abi.encode(false, hooked)), (BalanceDelta));\n        require(withHook.amount0() < 0 && withHook.amount1() > 0, \"hooked partial fill did not execute\");\n        require(uint256(-int256(withHook.amount0())) <= 100_000 ether, \"input budget exceeded\");\n    }\n\n    function unlockCallback(bytes calldata data) external returns (bytes memory) {\n        require(msg.sender == address(manager), \"manager only\");\n        (bool addLiquidity, PoolKey memory key) = abi.decode(data, (bool, PoolKey));\n        BalanceDelta delta;\n        if (addLiquidity) {\n            (delta,) = manager.modifyLiquidity(\n                key, IPoolManager.ModifyLiquidityParams(-600, 600, int256(1_000_000 ether), bytes32(0)), \"\"\n            );\n        } else {\n            delta = manager.swap(\n                key,\n                IPoolManager.SwapParams(true, -int256(100_000 ether), TickMath.getSqrtPriceAtTick(-600)),\n                \"\"\n            );\n        }\n        _settle(key.currency0);\n        _settle(key.currency1);\n        return abi.encode(delta);\n    }\n\n    function _settle(Currency currency) private {\n        int256 delta = manager.currencyDelta(address(this), currency);\n        if (delta < 0) {\n            manager.sync(currency);\n            require(IERC20(Currency.unwrap(currency)).transfer(address(manager), uint256(-delta)), \"payment failed\");\n            manager.settle();\n        } else if (delta > 0) {\n            manager.take(currency, address(this), uint256(delta));\n        }\n    }\n}","reproduction":"Run the self-contained proof as a .t.sol file with forge test --match-path <file> -vvv. At block 100 initialize two local v4 pools at sqrtPriceX96=2^96 with fee=12500 and tickSpacing=60, one with SIMDTESTHook and one without. Seed each with liquidity=1_000_000e18 over ticks [-600,600]. At block 110 swap zeroForOne=true, amountSpecified=-100_000e18, sqrtPriceLimitX96=TickMath.getSqrtPriceAtTick(-600)=76886731765546235930195592750. Expected: both pools execute the allowed partial fill, with applicable hook fee settlement. Actual: the control successfully consumes 30838469241430640163516 units and returns 29553010879137169680827 units, reaching tick -601 and liquidity 0; the hooked pool computes a growth donation of 147765054395685848404 output units, then reverts with WrappedError containing NoLiquidityToReceiveFees (0xa74f97ab). Confirmed locally with forge test --match-path test/scratch/EmptyRangeProof.t.sol -vvv: 0 passed, 1 failed for this exact reason.","severity":"medium","title":"Donation reverts valid partial fills at the final liquidity boundary"}],"hash":"c0e4d03bd1769980ae75512ac75f196dfe5930be04d996660195b731e35c6b77","nodeId":"ad046759-5a9f-445d-9749-48e4ceb38090","outcome":"completed","summary":"Added fee edge cases, failure-path tests, and randomized invariants.\n\n`forge build` and `forge test` pass: **50 tests**, including **16,384 invariant calls**.\n\nReported one medium defect with a reproduced failing proof in `.imd-findings.json`: valid partial swaps revert when they cross the final liquidity boundary.\n\nAll verification ran offline; live fork validation remains outstanding.","treeHash":"600ceef6e21a60dc8485af94bae830c07390044e","usage":{"cachedInputTokens":642816,"inputTokens":77443,"model":"gpt-6-astra","outputTokens":17994,"runtime":"codex","turns":5,"wallClockMs":534910}}],"verification":[{"checks":[{"durationMs":1813,"exitCode":0,"name":"build","output":"Compiling 59 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.70s\nCompiler run successful!\n","passed":true},{"durationMs":4147,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/SIMDTEST.t.sol:SIMDTESTTest\n[PASS] testFuzzTransfersConserveSupply(uint96) (runs: 1000, μ: 146098, ~: 146706)\n[PASS] testNoMintOrAdministration() (gas: 72786)\n[PASS] testRejectBurnAndInsufficientBalanceAndAllowance() (gas: 140125)\n[PASS] testSupplyAndMetadata() (gas: 44668)\n[PASS] testTransferAndAllowance() (gas: 194663)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 11.64ms (11.92ms CPU time)\n\nRan 45 tests for test/SIMDTESTHook.t.sol:SIMDTESTHookTest\n[PASS] testAllEarlyBlocksDecayAndBoundary() (gas: 4980188)\n[PASS] testAllModesAfterAntiSnipe() (gas: 1579623)\n[PASS] testClaimedFeesCanBeReinvestedByLP() (gas: 899262)\n[PASS] testCreationAndRuntimeSizes() (gas: 15963)\n[PASS] testDeferredClaimsCannotBeTakenByThirdParty() (gas: 635179)\n[PASS] testDeferredFeesInBothCurrenciesAreDonatedAndClaimableOnRecovery() (gas: 2008160)\n[PASS] testDelayedFirstSwapCannotRestartAntiSnipe() (gas: 421174)\n[PASS] testDisabledCallbackReverts() (gas: 19024)\n[PASS] testDonationsAreClaimableByInRangeLP() (gas: 768936)\n[PASS] testDustRoundsDownWithoutCreatingDebt() (gas: 375979)\n[PASS] testEmptyGapWithoutFillPreservesPendingFees() (gas: 1040252)\n[PASS] testEveryDisabledCallbackRejectsManagerAndOutsider() (gas: 577838)\n[PASS] testFactoryOnlyAndNoRebinding() (gas: 22864763)\n[PASS] testFuzzDustFeeBoundaries(uint16,uint8,bool,bool) (runs: 1000, μ: 406366, ~: 395405)\n[PASS] testFuzzEmptyRangePartialFills(uint8,bool,bool,bool) (runs: 1000, μ: 542457, ~: 457992)\n[PASS] testFuzzFailedAllowanceRollsBackSwap(bool,bool,uint8) (runs: 1000, μ: 540709, ~: 545099)\n[PASS] testFuzzRealSwaps(uint8,bool,bool,uint80) (runs: 1000, μ: 412825, ~: 429091)\n[PASS] testInitializationAndPermissions() (gas: 60708)\n[PASS] testInvalidConstructorAndAddressFlags() (gas: 6216)\n[PASS] testInvalidPoolInitializationRollsBackBinding() (gas: 22811924)\n[PASS] testLeavingAllLiquidityDefersDonationAndSettlesSwap() (gas: 457010)\n[PASS] testLiquidityAdditionAlonePreservesDeferredFees() (gas: 1057387)\n[PASS] testLiquidityOperationsDoNotChargeFees() (gas: 309532)\n[PASS] testMaximumSpecifiedAmountsChargeOnlyTheExecutedPartialFill() (gas: 1310645)\n[PASS] testOutOfRangePositionGetsNoDonation() (gas: 667527)\n[PASS] testOverRemovalOfLiquidityRevertsWithoutChangingBalances() (gas: 393672)\n[PASS] testPartialExactOutputUsesExecutedAmounts() (gas: 389536)\n[PASS] testPartialFillUsesExecutedAmounts() (gas: 435922)\n[PASS] testPredictedPoolCannotInitializeBeforeHookDeployment() (gas: 22723884)\n[PASS] testRecoveryTransferFailureRestoresDonationAndDeferredClaims() (gas: 1469391)\n[PASS] testRejectDifferentPoolAndUninitializedSwap() (gas: 22731340)\n[PASS] testRejectInvalidFeeAndMissingLaunchToken() (gas: 23396054)\n[PASS] testRouterSlippageIncludesHookFee() (gas: 291915)\n[PASS] testRuntimeContainsNoForbiddenOpcodes() (gas: 1691334)\n[PASS] testSameBlockSwapsDoNotAccelerateDecay() (gas: 2026437)\n[PASS] testSwapE_ExactInputZeroForOne() (gas: 435675)\n[PASS] testSwapF_ExactInputOneForZero() (gas: 428909)\n[PASS] testSwapG_ExactOutputZeroForOne() (gas: 394830)\n[PASS] testSwapH_ExactOutputOneForZero() (gas: 389980)\n[PASS] testTwoInRangeLPPositionsShareDonationProportionally() (gas: 877782)\n[PASS] testUnauthorizedCallbacks() (gas: 70522)\n[PASS] testUnsettledBoundarySwapRollsBackDeferredFees() (gas: 360667)\n[PASS] testUnsettledRecoveryRollsBackClaimRedemptionAndDonation() (gas: 836263)\n[PASS] testUnsettledSwapRevertsAtomically() (gas: 346551)\n[PASS] testZeroAndInvalidPriceSwapsRevertAtomically() (gas: 475454)\nSuite result: ok. 45 passed; 0 failed; 0 skipped; finished in 144.13ms (747.18ms CPU time)\n\nRan 2 tests for test/SIMDTESTInvariant.t.sol:SIMDTESTInvariantTest\n[PASS] invariant_SupplySettlementAndEveryChargedFeeAreConserved() (runs: 256, calls: 16384, reverts: 0)\n\n╭-----------------------+---------------------+-------+---------+----------╮\n| Contract              | Selector            | Calls | Reverts | Discards |\n+==========================================================================+\n| LaunchSequenceHandler | advanceBlocks       | 2740  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| LaunchSequenceHandler | changeLiquidity     | 2700  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| LaunchSequenceHandler | collect             | 2752  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| LaunchSequenceHandler | rejectUnsettledSwap | 2772  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| LaunchSequenceHandler | swap                | 2746  | 0       | 0        |\n|-----------------------+---------------------+-------+---------+----------|\n| LaunchSequenceHandler | transferTokens      | 2674  | 0       | 0        |\n╰-----------------------+---------------------+-------+---------+----------╯\n\n[PASS] testHandlerExercisesDeferralRecoveryAndFailures() (gas: 3830286)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 4.09s (4.09s CPU time)\n\nRan 3 test suites in 4.09s (4.24s CPU time): 52 tests passed, 0 failed, 0 skipped (52 total tests)\n","passed":true},{"durationMs":54,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIMDTEST.approve(address,uint256)\",\"SIMDTEST.transfer(address,uint256)\",\"SIMDTEST.transferFrom(address,address,uint256)\",\"SIMDTESTHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIMDTESTHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":11,\"DEPENDENCIES.sha256\":55,\"README.md\":119,\"foundry.toml\":21,\"src/SIMDTEST.sol\":11,\"src/SIMDTESTHook.sol\":239,\"test/COVERAGE.md\":47,\"test/SIMDTEST.t.sol\":65,\"test/SIMDTESTHook.t.sol\":797,\"test/SIMDTESTInvariant.t.sol\":79,\"test/helpers/LaunchSequenceHandler.sol\":334,\"test/helpers/PoolRouter.sol\":74,\"test/helpers/TestBase.sol\":40},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"6cf9865a83a36b453a665afee1bd9b330fb7586565ec1fa64fb4734a28f3d331","verifiedTreeHash":"b8d4c01481a37bcdea9d16d93231cf5a9ba68b3b","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":1388,"exitCode":0,"name":"build","output":"Compiling 57 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.29s\nCompiler run successful!\n","passed":true},{"durationMs":174,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/SIMDTEST.t.sol:SIMDTESTTest\n[PASS] testFuzzTransfersConserveSupply(uint96) (runs: 256, μ: 146208, ~: 146658)\n[PASS] testNoMintOrAdministration() (gas: 72786)\n[PASS] testRejectBurnAndInsufficientBalanceAndAllowance() (gas: 140125)\n[PASS] testSupplyAndMetadata() (gas: 44668)\n[PASS] testTransferAndAllowance() (gas: 194663)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 4.23ms (4.44ms CPU time)\n\nRan 28 tests for test/SIMDTESTHook.t.sol:SIMDTESTHookTest\n[PASS] testAllEarlyBlocksDecayAndBoundary() (gas: 4870455)\n[PASS] testAllModesAfterAntiSnipe() (gas: 1543259)\n[PASS] testClaimedFeesCanBeReinvestedByLP() (gas: 890162)\n[PASS] testCreationAndRuntimeSizes() (gas: 15118)\n[PASS] testDisabledCallbackReverts() (gas: 18947)\n[PASS] testDonationsAreClaimableByInRangeLP() (gas: 759690)\n[PASS] testDustRoundsDownWithoutCreatingDebt() (gas: 367457)\n[PASS] testFactoryOnlyAndNoRebinding() (gas: 70538104)\n[PASS] testFuzzRealSwaps(uint8,bool,bool,uint80) (runs: 256, μ: 403937, ~: 419922)\n[PASS] testInitializationAndPermissions() (gas: 60708)\n[PASS] testInvalidConstructorAndAddressFlags() (gas: 6150)\n[PASS] testInvalidPoolInitializationRollsBackBinding() (gas: 70405430)\n[PASS] testLeavingAllLiquidityRevertsDonationAndSwap() (gas: 654530)\n[PASS] testLiquidityOperationsDoNotChargeFees() (gas: 307219)\n[PASS] testOutOfRangePositionGetsNoDonation() (gas: 658379)\n[PASS] testPartialExactOutputUsesExecutedAmounts() (gas: 380448)\n[PASS] testPartialFillUsesExecutedAmounts() (gas: 426744)\n[PASS] testPredictedPoolCannotInitializeBeforeHookDeployment() (gas: 70318316)\n[PASS] testRejectDifferentPoolAndUninitializedSwap() (gas: 70410977)\n[PASS] testRejectInvalidFeeAndMissingLaunchToken() (gas: 71149373)\n[PASS] testRouterSlippageIncludesHookFee() (gas: 283856)\n[PASS] testRuntimeContainsNoForbiddenOpcodes() (gas: 1372601)\n[PASS] testSwapE_ExactInputZeroForOne() (gas: 426564)\n[PASS] testSwapF_ExactInputOneForZero() (gas: 419776)\n[PASS] testSwapG_ExactOutputZeroForOne() (gas: 385697)\n[PASS] testSwapH_ExactOutputOneForZero() (gas: 380914)\n[PASS] testUnauthorizedCallbacks() (gas: 70525)\n[PASS] testUnsettledSwapRevertsAtomically() (gas: 338548)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 108.15ms (328.99ms CPU time)\n\nRan 2 test suites in 108.82ms (112.38ms CPU time): 33 tests passed, 0 failed, 0 skipped (33 total tests)\n","passed":true},{"durationMs":49,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIMDTEST.approve(address,uint256)\",\"SIMDTEST.transfer(address,uint256)\",\"SIMDTEST.transferFrom(address,address,uint256)\",\"SIMDTESTHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIMDTESTHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":11,\"DEPENDENCIES.sha256\":55,\"README.md\":115,\"foundry.toml\":21,\"src/SIMDTEST.sol\":11,\"src/SIMDTESTHook.sol\":204,\"test/SIMDTEST.t.sol\":64,\"test/SIMDTESTHook.t.sol\":472,\"test/helpers/PoolRouter.sol\":74,\"test/helpers/TestBase.sol\":40},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":1011,"exitCode":0,"name":"slither","output":"[medium/medium] unused-return at src/SIMDTESTHook.sol:102: SIMDTESTHook.afterSwap(address,PoolKey,IPoolManager.SwapParams,BalanceDelta,bytes) (src/SIMDTESTHook.sol#102-131) ignores return value by poolManager.donate(key,0,totalFee,) (src/SIMDTESTHook.sol#126)\n[medium/medium] unused-return at src/SIMDTESTHook.sol:102: SIMDTESTHook.afterSwap(address,PoolKey,IPoolManager.SwapParams,BalanceDelta,bytes) (src/SIMDTESTHook.sol#102-131) ignores return value by poolManager.donate(key,totalFee,0,) (src/SIMDTESTHook.sol#126)","passed":true},{"durationMs":368,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SIMDTEST.sol:9: Large Numeric Literal (2 places)\n[low] unchecked-return at src/SIMDTESTHook.sol:126: Unchecked Return","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"7f749a4509d6a20c7bd25d4884f12c1120094e09f1fc9284d6c0af02939cbfea","verifiedTreeHash":"5c80e535cf6d6a80bb7b6558a2cef0a51dbcb832","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":1136,"exitCode":0,"name":"build","output":"Compiling 57 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.04s\nCompiler run successful!\n","passed":true},{"durationMs":99,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/SIMDTEST.t.sol:SIMDTESTTest\n[PASS] testFuzzTransfersConserveSupply(uint96) (runs: 256, μ: 145403, ~: 146634)\n[PASS] testNoMintOrAdministration() (gas: 72786)\n[PASS] testRejectBurnAndInsufficientBalanceAndAllowance() (gas: 140125)\n[PASS] testSupplyAndMetadata() (gas: 44668)\n[PASS] testTransferAndAllowance() (gas: 194663)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 3.26ms (3.63ms CPU time)\n\nRan 35 tests for test/SIMDTESTHook.t.sol:SIMDTESTHookTest\n[PASS] testAllEarlyBlocksDecayAndBoundary() (gas: 4979674)\n[PASS] testAllModesAfterAntiSnipe() (gas: 1579436)\n[PASS] testClaimedFeesCanBeReinvestedByLP() (gas: 899245)\n[PASS] testCreationAndRuntimeSizes() (gas: 15941)\n[PASS] testDeferredClaimsCannotBeTakenByThirdParty() (gas: 635153)\n[PASS] testDeferredFeesInBothCurrenciesAreDonatedAndClaimableOnRecovery() (gas: 2008029)\n[PASS] testDisabledCallbackReverts() (gas: 18969)\n[PASS] testDonationsAreClaimableByInRangeLP() (gas: 768784)\n[PASS] testDustRoundsDownWithoutCreatingDebt() (gas: 375916)\n[PASS] testEmptyGapWithoutFillPreservesPendingFees() (gas: 1040193)\n[PASS] testFactoryOnlyAndNoRebinding() (gas: 22864697)\n[PASS] testFuzzEmptyRangePartialFills(uint8,bool,bool,bool) (runs: 256, μ: 550910, ~: 633731)\n[PASS] testFuzzRealSwaps(uint8,bool,bool,uint80) (runs: 256, μ: 411524, ~: 395306)\n[PASS] testInitializationAndPermissions() (gas: 60708)\n[PASS] testInvalidConstructorAndAddressFlags() (gas: 6150)\n[PASS] testInvalidPoolInitializationRollsBackBinding() (gas: 22811946)\n[PASS] testLeavingAllLiquidityDefersDonationAndSettlesSwap() (gas: 456948)\n[PASS] testLiquidityAdditionAlonePreservesDeferredFees() (gas: 1057333)\n[PASS] testLiquidityOperationsDoNotChargeFees() (gas: 309496)\n[PASS] testOutOfRangePositionGetsNoDonation() (gas: 667428)\n[PASS] testPartialExactOutputUsesExecutedAmounts() (gas: 389495)\n[PASS] testPartialFillUsesExecutedAmounts() (gas: 435770)\n[PASS] testPredictedPoolCannotInitializeBeforeHookDeployment() (gas: 22723928)\n[PASS] testRejectDifferentPoolAndUninitializedSwap() (gas: 22731235)\n[PASS] testRejectInvalidFeeAndMissingLaunchToken() (gas: 23396031)\n[PASS] testRouterSlippageIncludesHookFee() (gas: 291851)\n[PASS] testRuntimeContainsNoForbiddenOpcodes() (gas: 1691289)\n[PASS] testSwapE_ExactInputZeroForOne() (gas: 435612)\n[PASS] testSwapF_ExactInputOneForZero() (gas: 428846)\n[PASS] testSwapG_ExactOutputZeroForOne() (gas: 394744)\n[PASS] testSwapH_ExactOutputOneForZero() (gas: 389983)\n[PASS] testUnauthorizedCallbacks() (gas: 70503)\n[PASS] testUnsettledBoundarySwapRollsBackDeferredFees() (gas: 360561)\n[PASS] testUnsettledRecoveryRollsBackClaimRedemptionAndDonation() (gas: 836096)\n[PASS] testUnsettledSwapRevertsAtomically() (gas: 346554)\nSuite result: ok. 35 passed; 0 failed; 0 skipped; finished in 47.66ms (204.81ms CPU time)\n\nRan 2 test suites in 48.40ms (50.92ms CPU time): 40 tests passed, 0 failed, 0 skipped (40 total tests)\n","passed":true},{"durationMs":29,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIMDTEST.approve(address,uint256)\",\"SIMDTEST.transfer(address,uint256)\",\"SIMDTEST.transferFrom(address,address,uint256)\",\"SIMDTESTHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIMDTESTHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":11,\"DEPENDENCIES.sha256\":55,\"README.md\":119,\"foundry.toml\":21,\"src/SIMDTEST.sol\":11,\"src/SIMDTESTHook.sol\":239,\"test/SIMDTEST.t.sol\":64,\"test/SIMDTESTHook.t.sol\":617,\"test/helpers/PoolRouter.sol\":74,\"test/helpers/TestBase.sol\":40},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":968,"exitCode":0,"name":"slither","output":"[medium/medium] unused-return at src/SIMDTESTHook.sol:150: SIMDTESTHook._donateDeferredFees(PoolKey) (src/SIMDTESTHook.sol#150-166) ignores return value by poolManager.donate(key,amount0,amount1,) (src/SIMDTESTHook.sol#165)\n[medium/medium] unused-return at src/SIMDTESTHook.sol:107: SIMDTESTHook.afterSwap(address,PoolKey,IPoolManager.SwapParams,BalanceDelta,bytes) (src/SIMDTESTHook.sol#107-146) ignores return value by poolManager.donate(key,0,totalFee,) (src/SIMDTESTHook.sol#139)\n[medium/medium] unused-return at src/SIMDTESTHook.sol:107: SIMDTESTHook.afterSwap(address,PoolKey,IPoolManager.SwapParams,BalanceDelta,bytes) (src/SIMDTESTHook.sol#107-146) ignores return value by poolManager.donate(key,totalFee,0,) (src/SIMDTESTHook.sol#139)\n[low/medium] reentrancy-events at src/SIMDTESTHook.sol:107: Reentrancy in SIMDTESTHook.afterSwap(address,PoolKey,IPoolManager.SwapParams,BalanceDelta,bytes) (src/SIMDTESTHook.sol#107-146):","passed":true},{"durationMs":309,"exitCode":0,"name":"aderyn","output":"[low] large-numeric-literal at src/SIMDTEST.sol:9: Large Numeric Literal (2 places)\n[low] unchecked-return at src/SIMDTESTHook.sol:139: Unchecked Return (2 places)","passed":true},{"durationMs":886,"exitCode":0,"name":"proof 3474436e727a","output":"Compiling 56 files with Solc 0.8.26\nSolc 0.8.26 finished in 752.15ms\nCompiler run successful!\n\nRan 1 test for test/imd-proof-0e0c1c69/Proof_3474436e727a.t.sol:EmptyRangeProofTest\n[PASS] testPartialFillAtLastTickMustRemainExecutable() (gas: 379988)\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 13.73ms (285.70µs CPU time)\n\nRan 1 test suite in 14.42ms (13.73ms CPU time): 1 tests passed, 0 failed, 0 skipped (1 total tests)\n","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"92dd677a83c3185fe40f102063b03f2b10b604d6041e7a56f7526e62b3597f0e","verifiedTreeHash":"ba3edaf54bf187bc1fe40f1efd95c0f98f23e7c5","verifierVersion":"0.1.0+ad90ce4c"},{"checks":[{"durationMs":1846,"exitCode":0,"name":"build","output":"Compiling 61 files with Solc 0.8.26\nSolc 0.8.26 finished in 1.75s\nCompiler run successful!\n","passed":true},{"durationMs":3688,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/SIMDTEST.t.sol:SIMDTESTTest\n[PASS] testFuzzTransfersConserveSupply(uint96) (runs: 1000, μ: 146069, ~: 146646)\n[PASS] testNoMintOrAdministration() (gas: 72786)\n[PASS] testRejectBurnAndInsufficientBalanceAndAllowance() (gas: 140125)\n[PASS] testSupplyAndMetadata() (gas: 44668)\n[PASS] testTransferAndAllowance() (gas: 194663)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 9.54ms (9.86ms CPU time)\n\nRan 3 tests for test/SIMDTESTHookMath.t.sol:SIMDTESTHookMathTest\n[PASS] testFuzzFeeRoundingAndCurrency(uint128,uint8,bool,bool) (runs: 1000, μ: 192719, ~: 208994)\n[PASS] testMinimumAndMaximumInt128DoNotOverflow() (gas: 490791)\n[PASS] testRoundingThresholdsAndZeroDonation() (gas: 872333)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 72.40ms (25.11ms CPU time)\n\nRan 14 tests for test/SIMDTESTHookEdges.t.sol:SIMDTESTHookEdgesTest\n[PASS] testAllPoolKeyFieldsAreBound() (gas: 189158)\n[PASS] testConstructorRejectsCodeLessManagerAndToken() (gas: 8794)\n[PASS] testDonationIsSharedProportionallyBetweenActivePositions() (gas: 802753)\n[PASS] testEveryCallbackAuthenticatesCaller() (gas: 420875)\n[PASS] testEveryDisabledCallbackRejectsManager() (gas: 236120)\n[PASS] testFactoryCannotResetCreationBlock() (gas: 64397)\n[PASS] testFeeCollectionCannotBeRepeated() (gas: 783413)\n[PASS] testFullWithdrawalPaysFeesAndCannotBeRepeated() (gas: 720438)\n[PASS] testFuzzLateFirstSwapNeverRestartsAntiSnipe(uint64,bool,bool) (runs: 1000, μ: 422535, ~: 439113)\n[PASS] testInsufficientAllowanceRollsBackDonationAndPoolState() (gas: 369644)\n[PASS] testInvalidPriceLimitRevertsAtomically() (gas: 189836)\n[PASS] testRejectNativeEOAAndDuplicateCurrenciesBeforeBinding() (gas: 70753604)\n[PASS] testUninitializedAdditionalFeeReverts() (gas: 69977404)\n[PASS] testZeroSwapRevertsWithoutChangingFeesOrPrice() (gas: 226987)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 100.49ms (158.10ms CPU time)\n\nRan 27 tests for test/SIMDTESTHook.t.sol:SIMDTESTHookTest\n[PASS] testAllEarlyBlocksDecayAndBoundary() (gas: 4870071)\n[PASS] testAllModesAfterAntiSnipe() (gas: 1543064)\n[PASS] testClaimedFeesCanBeReinvestedByLP() (gas: 890130)\n[PASS] testCreationAndRuntimeSizes() (gas: 15118)\n[PASS] testDisabledCallbackReverts() (gas: 18947)\n[PASS] testDonationsAreClaimableByInRangeLP() (gas: 759658)\n[PASS] testDustRoundsDownWithoutCreatingDebt() (gas: 367425)\n[PASS] testFactoryOnlyAndNoRebinding() (gas: 70538104)\n[PASS] testFuzzRealSwaps(uint8,bool,bool,uint80) (runs: 1000, μ: 403377, ~: 386504)\n[PASS] testInitializationAndPermissions() (gas: 60708)\n[PASS] testInvalidConstructorAndAddressFlags() (gas: 6150)\n[PASS] testInvalidPoolInitializationRollsBackBinding() (gas: 70405430)\n[PASS] testLiquidityOperationsDoNotChargeFees() (gas: 307155)\n[PASS] testOutOfRangePositionGetsNoDonation() (gas: 658347)\n[PASS] testPartialExactOutputUsesExecutedAmounts() (gas: 380416)\n[PASS] testPartialFillUsesExecutedAmounts() (gas: 426712)\n[PASS] testPredictedPoolCannotInitializeBeforeHookDeployment() (gas: 70318316)\n[PASS] testRejectDifferentPoolAndUninitializedSwap() (gas: 70410999)\n[PASS] testRejectInvalidFeeAndMissingLaunchToken() (gas: 71149395)\n[PASS] testRouterSlippageIncludesHookFee() (gas: 283878)\n[PASS] testRuntimeContainsNoForbiddenOpcodes() (gas: 1372601)\n[PASS] testSwapE_ExactInputZeroForOne() (gas: 426532)\n[PASS] testSwapF_ExactInputOneForZero() (gas: 419744)\n[PASS] testSwapG_ExactOutputZeroForOne() (gas: 385665)\n[PASS] testSwapH_ExactOutputOneForZero() (gas: 380882)\n[PASS] testUnauthorizedCallbacks() (gas: 70525)\n[PASS] testUnsettledSwapRevertsAtomically() (gas: 338548)\nSuite result: ok. 27 passed; 0 failed; 0 skipped; finished in 100.51ms (380.43ms CPU time)\n\nRan 1 test for test/SIMDTESTHook.invariant.t.sol:SIMDTESTHookInvariantTest\n[PASS] invariant_supplySettlementBindingAndFeeSchedule() (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------+-------------------+-------+---------+----------╮\n| Contract      | Selector          | Calls | Reverts | Discards |\n+================================================================+\n| LaunchHandler | advanceBlocks     | 3241  | 0       | 0        |\n|---------------+-------------------+-------+---------+----------|\n| LaunchHandler | changeLiquidity   | 3347  | 0       | 0        |\n|---------------+-------------------+-------+---------+----------|\n| LaunchHandler | collect           | 3236  | 0       | 0        |\n|---------------+-------------------+-------+---------+----------|\n| LaunchHandler | rejectInvalidCall | 3320  | 0       | 0        |\n|---------------+-------------------+-------+---------+----------|\n| LaunchHandler | swap              | 3240  | 0       | 0        |\n╰---------------+-------------------+-------+---------+----------╯\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 3.62s (3.58s CPU time)\n\nRan 5 test suites in 3.62s (3.90s CPU time): 50 tests passed, 0 failed, 0 skipped (50 total tests)\n","passed":true},{"durationMs":33,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"SIMDTEST.approve(address,uint256)\",\"SIMDTEST.transfer(address,uint256)\",\"SIMDTEST.transferFrom(address,address,uint256)\",\"SIMDTESTHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"SIMDTESTHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\"],\"files\":{\".gitignore\":3,\"DEPENDENCIES.md\":11,\"DEPENDENCIES.sha256\":55,\"README.md\":115,\"foundry.toml\":21,\"src/SIMDTEST.sol\":11,\"src/SIMDTESTHook.sol\":204,\"test/COVERAGE.md\":12,\"test/SIMDTEST.t.sol\":65,\"test/SIMDTESTHook.invariant.t.sol\":280,\"test/SIMDTESTHook.t.sol\":288,\"test/SIMDTESTHookEdges.t.sol\":200,\"test/SIMDTESTHookMath.t.sol\":112,\"test/helpers/PoolRouter.sol\":74,\"test/helpers/SIMDTESTHookFixture.sol\":203,\"test/helpers/TestBase.sol\":40},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"c0e4d03bd1769980ae75512ac75f196dfe5930be04d996660195b731e35c6b77","verifiedTreeHash":"600ceef6e21a60dc8485af94bae830c07390044e","verifierVersion":"0.1.0+ad90ce4c"}]}