{"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":"07a7e695-0647-407c-b552-86c88a47875e","kind":"skill:build-contract-project","nodes":[{"acceptedSubmissionHash":"a288c2b898bae9306f6085eede8b7b037279cbf6ee63a739cfd2e75a4b4fce63","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","tools":[]},"key":"build_contract_project","kind":"code","role":"implement","skillHash":"d59561da3b378461b7c749f6bd5084477d44993aa94972ddea90f542535751df","skillId":"build-contract-project","state":"accepted"}],"objective":"Name/label: imdbundler (so it can live at imdbundler.sites.imd.fun)\nTheme: pure black background (#000000) with lime green accents (#00FF00 / #39FF14). All text, buttons, borders, and highlights in lime green. Minimal, high-contrast, cyber/terminal aesthetic. No other colors except black and lime.\nFully client-side only. Private keys and seed phrases never leave the browser. No backend that ever sees keys.\nWallet generation: user can generate N wallets (e.g. 5–50) from a random seed or fresh keypairs. Show addresses, allow copy, encrypted local export (password-protected JSON or similar), and clear/reset.\nMulti-wallet management: list all generated wallets, show balances (via public RPC), fund distribution helpers (user signs from their own external wallet), and prepare individual or batched buy transactions for a target token or NFT contract address.\nSniping support: input target contract + amount, generate ready-to-sign buy transactions for each wallet (or a simple multi-wallet bundle prep). Support common chains the swarm can handle (Ethereum mainnet and any others currently supported).\nCritical requirement — no wallet connect conflicts: do NOT force a single persistent wallet connection that fights with the user’s main wallet or multiple generated wallets. Prefer pure client-side generation + external signing (user pastes tx or uses their own wallet extension only when they choose to fund/sign). If any connect is used, make it optional, isolated, and non-conflicting. Never assume one connected wallet controls everything.\nLightweight stack: static or Vite + React + TypeScript + viem (or equivalent). Fast, no heavy frameworks.\nPages/sections: Home (generate wallets), Manage (list + export + fund), Snipe (prepare buys), Token info (IMDB contract + hook address, links, supply, burn stats if available), and a short disclaimer that keys are client-side only and users are responsible for their own security.\nPepe visuals: include a bunch of Pepe the Frog images in different classic meme poses (thinking, smug, happy, sad, dancing, sunglasses, etc.) scattered tastefully across the site as decorative elements, buttons, backgrounds, or icons. Use public-domain or generated Pepe-style art that fits the lime-on-black theme.\nPepe P&L card: add a simple Pepe profit-and-loss card generator. User enters entry price, exit price, amount, or % gain/loss. It renders a shareable card with a Pepe pose matching the result (happy Pepe for profit, sad/thinking for loss), the numbers in lime green on black, and a download button (PNG) so people can share it on socials.\nHost the site (IPFS + sites.imd.fun), publish source to the launch GitHub repo, and include the live token and hook addresses once deployed.\nMake the UI extremely simple, fast, and mobile-friendly. Prioritize security (client-side keys) and zero wallet-connect conflicts above fancy features.","parentJobId":"3e287c7b-b983-4427-a05a-197320b17ccc","planHash":"2f7b3a3bfe33ba8cbb62230d5f8ef5ecec60143447d02df95b62c7689d36d6ac","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"3e287c7b-b983-4427-a05a-197320b17ccc","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2300-imdbundler"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52668","feedbackHash":"c386cfc077987d02c60347948b237df216862b2417310bb0451da665a80876a9","nodeKey":"build_contract_project","submissionHash":"a288c2b898bae9306f6085eede8b7b037279cbf6ee63a739cfd2e75a4b4fce63","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"2ef139e8fde0f5395c4d56bbfc24c87ac04c51777ea2144afbfe0193d65bf832","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"93efab180c07eb9ba4da3d8baa586379b34bd066b6850274d3123934c0e36c11","device":"ba7dd2832066bc23","findings":[],"hash":"a288c2b898bae9306f6085eede8b7b037279cbf6ee63a739cfd2e75a4b4fce63","nodeId":"0313f21c-7039-435e-bdc1-42da9c0eb3c9","outcome":"completed","summary":"Implemented and [packaged the site for IPFS](/home/seat/.identitymd/work/07a7e695-0647-407c-b552-86c88a47875e/0313f21c-7039-435e-bdc1-42da9c0eb3c9/release/imdbundler.car), including live contract addresses and safer isolated signing.\n\nPassed: `forge build`, 114 Foundry tests with both seeds, `forge fmt --check`, and 30 site tests. Protected files remain unchanged.\n\nPublishing to GitHub/IPFS/domain remains pending authorized publishing access. Chromium smoke testing was blocked by unavailable runtime libraries.","treeHash":"54c6093c0dfaeb52ce6f1c5c3a1955bd543f227d","usage":{"cachedInputTokens":4872576,"inputTokens":171034,"model":"gpt-6-astra","outputTokens":39617,"runtime":"codex","turns":8,"wallClockMs":1222963}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"95564acf8eeef549","findings":[],"hash":"eeacb02008c4a3299bbde2357f527bae7b8db1f8712927528f8060de0b514113","nodeId":"0313f21c-7039-435e-bdc1-42da9c0eb3c9","outcome":"failed","summary":"Selected model is at capacity. Please try a different model.","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"gpt-6-astra","outputTokens":0,"runtime":"codex","turns":5,"wallClockMs":732093}}],"verification":[{"checks":[{"durationMs":5630,"exitCode":0,"name":"build","output":"Compiling 86 files with Solc 0.8.26\nSolc 0.8.26 finished in 5.51s\nCompiler run successful!\n","passed":true},{"durationMs":1069,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 4 tests for test/IMDBToken.t.sol:IMDBTokenTest\n[PASS] testFuzz_transferAndBurn(uint256) (runs: 256, μ: 133993, ~: 134011)\nLogs:\n  Bound result 353611934014534643903332441\n\n[PASS] test_allowancesCannotStealOrBurnOthers() (gas: 223707)\n[PASS] test_invalidTransferAndAdminSelectorsFail() (gas: 232003)\n[PASS] test_supplyAndMetadata() (gas: 52806)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 4.82ms (4.95ms CPU time)\n\nRan 7 tests for test/IMDBHookRevision.t.sol:TokenFirstHookRevisionTest\n[PASS] testFuzz_midSyncPayerPaysExactlyTheSwapDeltas(bool,bool,bool,uint256,uint256) (runs: 256, μ: 1055407, ~: 1072871)\nLogs:\n  Bound result 4175\n  Bound result 200000000000000000000000\n\n[PASS] test_buyerWithTokenSyncedDefersBurnWithoutGain() (gas: 1145668)\n[PASS] test_deferredBurnStillRunsWithNoLiquidity() (gas: 1053468)\n[PASS] test_dustInRangeLiquidityBuybackStaysWithinBound() (gas: 1683522)\n[PASS] test_settleBeforeSwapClearsSyncAndBurnsInFlow() (gas: 826138)\n[PASS] test_twoSwapsInsideOneTokenSyncWindow() (gas: 1365509)\n[PASS] test_userSwapEndingInEmptyRangeKeepsFeePending() (gas: 828747)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 125.07ms (130.08ms CPU time)\n\nRan 7 tests for test/IMDBHookRevision.t.sol:PairFirstHookRevisionTest\n[PASS] testFuzz_midSyncPayerPaysExactlyTheSwapDeltas(bool,bool,bool,uint256,uint256) (runs: 256, μ: 1056914, ~: 1071243)\nLogs:\n  Bound result 131924626627131154716334\n  Bound result 512226186311885336714931\n\n[PASS] test_buyerWithTokenSyncedDefersBurnWithoutGain() (gas: 1158836)\n[PASS] test_deferredBurnStillRunsWithNoLiquidity() (gas: 1047455)\n[PASS] test_dustInRangeLiquidityBuybackStaysWithinBound() (gas: 1682796)\n[PASS] test_settleBeforeSwapClearsSyncAndBurnsInFlow() (gas: 821587)\n[PASS] test_twoSwapsInsideOneTokenSyncWindow() (gas: 1363656)\n[PASS] test_userSwapEndingInEmptyRangeKeepsFeePending() (gas: 840992)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 147.46ms (138.74ms CPU time)\n\nRan 28 tests for test/IMDBHook.t.sol:PairFirstHookTest\n[PASS] testFuzz_dustRounding(uint16,bool,bool) (runs: 256, μ: 709994, ~: 733456)\nLogs:\n  Bound result 1\n\n[PASS] testFuzz_feesOnSettledDeltas(bool,bool,uint96,bool) (runs: 256, μ: 825936, ~: 848471)\nLogs:\n  Bound result 99000000000000000013107\n\n[PASS] testFuzz_prepaidSellerPaysOnlyItsInput(uint96,bool) (runs: 256, μ: 1019263, ~: 995811)\nLogs:\n  Bound result 1488896120860534068072\n\n[PASS] test_boundedBuybackRetainsAndRetriesClaims() (gas: 1126174)\n[PASS] test_buyExactInput() (gas: 844426)\n[PASS] test_buyExactOutput() (gas: 782487)\n[PASS] test_everyEnabledCallbackRejectsForgedCallers() (gas: 167366)\n[PASS] test_factoryCanCollectAndRemoveLiquidity() (gas: 1016559)\n[PASS] test_failedSettlementRollsBackFeeAndBurn() (gas: 2157056)\n[PASS] test_freshTokenOnlyManager() (gas: 793585)\n[PASS] test_invalidConstructorParametersAndWrongAddressFlags() (gas: 6083)\n[PASS] test_invalidLimitAndExcessiveAmountRevert() (gas: 577546)\n[PASS] test_noAdministrativeEscapeHatches() (gas: 75230)\n[PASS] test_noLiquidityChargesNoFee() (gas: 968875)\n[PASS] test_partialFillBuyExactInput() (gas: 844063)\n[PASS] test_partialFillBuyExactOutput() (gas: 782869)\n[PASS] test_partialFillSellExactInput() (gas: 796084)\n[PASS] test_partialFillSellExactOutput() (gas: 851197)\n[PASS] test_permissionsAndInitialization() (gas: 128527)\n[PASS] test_prepaidBuyerStillBurnsInFlow() (gas: 834491)\n[PASS] test_prepaidSellerPaysOnlyItsInputAndBurnDefers() (gas: 1060612)\n[PASS] test_reentrantProcessingAndSwapCallbacksAreBlocked() (gas: 125870)\n[PASS] test_retryWithoutInRangeLiquidityLeavesPriceAlone() (gas: 1777216)\n[PASS] test_runtimeContainsNoUpgradeOrDestructionOpcodes() (gas: 4050730)\n[PASS] test_sellExactInput() (gas: 795702)\n[PASS] test_sellExactOutput() (gas: 852335)\n[PASS] test_sellerSettledBeforeSwapBurnsInFlow() (gas: 775486)\n[PASS] test_tokenBurnDefersUntilSellerSettles() (gas: 960929)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 147.75ms (293.54ms CPU time)\n\nRan 28 tests for test/IMDBHook.t.sol:TokenFirstHookTest\n[PASS] testFuzz_dustRounding(uint16,bool,bool) (runs: 256, μ: 707300, ~: 729135)\nLogs:\n  Bound result 3492\n\n[PASS] testFuzz_feesOnSettledDeltas(bool,bool,uint96,bool) (runs: 256, μ: 825275, ~: 837707)\nLogs:\n  Bound result 99000000128410190143855\n\n[PASS] testFuzz_prepaidSellerPaysOnlyItsInput(uint96,bool) (runs: 256, μ: 1027019, ~: 1001742)\nLogs:\n  Bound result 99999990522194713604338\n\n[PASS] test_boundedBuybackRetainsAndRetriesClaims() (gas: 1113689)\n[PASS] test_buyExactInput() (gas: 833638)\n[PASS] test_buyExactOutput() (gas: 777941)\n[PASS] test_everyEnabledCallbackRejectsForgedCallers() (gas: 167932)\n[PASS] test_factoryCanCollectAndRemoveLiquidity() (gas: 1005792)\n[PASS] test_failedSettlementRollsBackFeeAndBurn() (gas: 2171383)\n[PASS] test_freshTokenOnlyManager() (gas: 774041)\n[PASS] test_invalidConstructorParametersAndWrongAddressFlags() (gas: 6083)\n[PASS] test_invalidLimitAndExcessiveAmountRevert() (gas: 577797)\n[PASS] test_noAdministrativeEscapeHatches() (gas: 75230)\n[PASS] test_noLiquidityChargesNoFee() (gas: 955795)\n[PASS] test_partialFillBuyExactInput() (gas: 833909)\n[PASS] test_partialFillBuyExactOutput() (gas: 777629)\n[PASS] test_partialFillSellExactInput() (gas: 800392)\n[PASS] test_partialFillSellExactOutput() (gas: 860120)\n[PASS] test_permissionsAndInitialization() (gas: 128583)\n[PASS] test_prepaidBuyerStillBurnsInFlow() (gas: 823704)\n[PASS] test_prepaidSellerPaysOnlyItsInputAndBurnDefers() (gas: 1066318)\n[PASS] test_reentrantProcessingAndSwapCallbacksAreBlocked() (gas: 125998)\n[PASS] test_retryWithoutInRangeLiquidityLeavesPriceAlone() (gas: 1764803)\n[PASS] test_runtimeContainsNoUpgradeOrDestructionOpcodes() (gas: 4050730)\n[PASS] test_sellExactInput() (gas: 800253)\n[PASS] test_sellExactOutput() (gas: 860015)\n[PASS] test_sellerSettledBeforeSwapBurnsInFlow() (gas: 780037)\n[PASS] test_tokenBurnDefersUntilSellerSettles() (gas: 972183)\nSuite result: ok. 28 passed; 0 failed; 0 skipped; finished in 150.15ms (399.11ms CPU time)\n\nRan 17 tests for test/IMDBHookEdges.t.sol:TokenFirstHookEdgeTest\n[PASS] testFuzz_exactInputBuyNeverDebitsMoreThanBudget(uint256) (runs: 256, μ: 794322, ~: 806884)\nLogs:\n  Bound result 299\n\n[PASS] testFuzz_exactOutputSellDeliversRequestedNet(uint256) (runs: 256, μ: 821084, ~: 833136)\nLogs:\n  Bound result 299\n\n[PASS] testFuzz_protocolFeeDoesNotBreakFeeAccounting(bool,bool,uint256,uint256) (runs: 256, μ: 924106, ~: 911035)\nLogs:\n  Bound result 299999000000000000000150\n  Bound result 6133\n\n[PASS] testFuzz_randomPriceLimitsNeverMischargeOrRevert(bool,bool,uint256,uint256) (runs: 256, μ: 812460, ~: 806365)\nLogs:\n  Bound result 3606363795772736427103226\n  Bound result 3677\n\n[PASS] test_buybackSkippedAtTerminalPriceRetainsClaimWithoutReverting() (gas: 1475121)\n[PASS] test_callbackPhaseGuards() (gas: 250013)\n[PASS] test_disabledCallbacksRevertEvenForManager() (gas: 125848)\n[PASS] test_donateToPoolSkipsHookAndChargesNothing() (gas: 453113)\n[PASS] test_donatedImdClaimsAreBoughtBackAndBurnedNotWithdrawable() (gas: 687207)\n[PASS] test_exactInputBuyRoundingBoundaries() (gas: 1877240)\n[PASS] test_freshManagerTokenOnlyPoolExactOutputBuy() (gas: 700844)\n[PASS] test_hookPinsTheLaunchConfiguration() (gas: 66055)\n[PASS] test_processFeesInsideAnotherUnlockReverts() (gas: 912270)\n[PASS] test_processFeesWithNothingPendingIsANoOpForAnyone() (gas: 500296)\n[PASS] test_specifiedAmountBounds() (gas: 225289)\n[PASS] test_twoOppositeSwapsInOneUnlockAreEachCharged() (gas: 1216098)\n[PASS] test_wrongPoolKeyRejectedEvenFromManager() (gas: 147868)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 150.21ms (550.47ms CPU time)\n\nRan 17 tests for test/IMDBHookEdges.t.sol:PairFirstHookEdgeTest\n[PASS] testFuzz_exactInputBuyNeverDebitsMoreThanBudget(uint256) (runs: 256, μ: 805351, ~: 818169)\nLogs:\n  Bound result 299\n\n[PASS] testFuzz_exactOutputSellDeliversRequestedNet(uint256) (runs: 256, μ: 812933, ~: 825652)\nLogs:\n  Bound result 1510\n\n[PASS] testFuzz_protocolFeeDoesNotBreakFeeAccounting(bool,bool,uint256,uint256) (runs: 256, μ: 923971, ~: 904924)\nLogs:\n  Bound result 6375795772736427103214\n  Bound result 508565\n\n[PASS] testFuzz_randomPriceLimitsNeverMischargeOrRevert(bool,bool,uint256,uint256) (runs: 256, μ: 812419, ~: 810926)\nLogs:\n  Bound result 3606363795772736427103226\n  Bound result 3677\n\n[PASS] test_buybackSkippedAtTerminalPriceRetainsClaimWithoutReverting() (gas: 1494623)\n[PASS] test_callbackPhaseGuards() (gas: 250749)\n[PASS] test_disabledCallbacksRevertEvenForManager() (gas: 125848)\n[PASS] test_donateToPoolSkipsHookAndChargesNothing() (gas: 453077)\n[PASS] test_donatedImdClaimsAreBoughtBackAndBurnedNotWithdrawable() (gas: 692566)\n[PASS] test_exactInputBuyRoundingBoundaries() (gas: 1901386)\n[PASS] test_freshManagerTokenOnlyPoolExactOutputBuy() (gas: 712126)\n[PASS] test_hookPinsTheLaunchConfiguration() (gas: 66035)\n[PASS] test_processFeesInsideAnotherUnlockReverts() (gas: 924430)\n[PASS] test_processFeesWithNothingPendingIsANoOpForAnyone() (gas: 500268)\n[PASS] test_specifiedAmountBounds() (gas: 225547)\n[PASS] test_twoOppositeSwapsInOneUnlockAreEachCharged() (gas: 1228603)\n[PASS] test_wrongPoolKeyRejectedEvenFromManager() (gas: 148550)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 150.32ms (386.44ms CPU time)\n\nRan 1 test for test/HookInvariant.t.sol:TokenFirstInvariantTest\n[PASS]\nTokenFirstInvariantTest invariants:\n[PASS] invariant_feesConservedAndBurnsMatchSupply\n[PASS] invariant_noTaxOrAdminBalancesAccumulate\n TokenFirstInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| TradeHandler | retry    | 1015  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TradeHandler | trade    | 1033  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 8796\n  Bound result 195584593970980344\n  Bound result 13984\n  Bound result 304708193860844607179\n  Bound result 1063\n  Bound result 3069270964\n  Bound result 98659582791171610360\n  Bound result 10916297646815844\n  Bound result 1609\n  Bound result 2313\n  Bound result 889\n  Bound result 369559835174105\n  Bound result 12906\n  Bound result 4\n  Bound result 2514000705\n  Bound result 1814806141\n  Bound result 13866\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 668.88ms (666.30ms CPU time)\n\nRan 1 test for test/HookInvariant.t.sol:PairFirstInvariantTest\n[PASS]\nPairFirstInvariantTest invariants:\n[PASS] invariant_feesConservedAndBurnsMatchSupply\n[PASS] invariant_noTaxOrAdminBalancesAccumulate\n PairFirstInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭--------------+----------+-------+---------+----------╮\n| Contract     | Selector | Calls | Reverts | Discards |\n+======================================================+\n| TradeHandler | retry    | 1015  | 0       | 0        |\n|--------------+----------+-------+---------+----------|\n| TradeHandler | trade    | 1033  | 0       | 0        |\n╰--------------+----------+-------+---------+----------╯\n\nLogs:\n  Bound result 12500\n  Bound result 195584593970980344\n  Bound result 328459093430327468984\n  Bound result 700279009390059923553\n  Bound result 2175\n  Bound result 3069270964\n  Bound result 4194303\n  Bound result 10916297646815844\n  Bound result 7438\n  Bound result 881\n  Bound result 4143\n  Bound result 369559835174105\n  Bound result 25\n  Bound result 4\n  Bound result 5470\n  Bound result 2832\n  Bound result 3512\n\nSuite result: ok. 1 passed; 0 failed; 0 skipped; finished in 716.46ms (703.90ms CPU time)\n\nRan 2 tests for test/HookStatefulInvariant.t.sol:PairFirstMultiActorInvariantTest\n[PASS]\nPairFirstMultiActorInvariantTest invariants:\n[PASS] invariant_hookHoldsNoErc20AndCountersOnlyGrow\n[PASS] invariant_imdClaimsConserved\n[PASS] invariant_managerBacksHookClaimsAtRest\n[PASS] invariant_supplyFallsOnlyByHookBurns\n PairFirstMultiActorInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-------------------+-----------------+-------+---------+----------╮\n| Contract          | Selector        | Calls | Reverts | Discards |\n+==================================================================+\n| MultiActorHandler | addLiquidity    | 286   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | batchTrade      | 322   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | donateClaim     | 272   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | midSyncTrade    | 309   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | process         | 285   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | removeLiquidity | 274   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | trade           | 300   | 0       | 0        |\n╰-------------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 45054907600487971676103\n  Bound result 2447\n  Bound result 19\n  Bound result 95\n  Bound result 4999999999999995\n  Bound result 36\n  Bound result 200\n  Bound result 1\n  Bound result 100\n  Bound result 74\n  Bound result 9999999000000000006092\n  Bound result 18\n  Bound result 95\n  Bound result 9999999000000000001463\n  Bound result 95\n  Bound result 4\n  Bound result 1\n  Bound result 61166851444257674191429\n  Bound result 5676\n  Bound result 39692058013454131539810\n  Bound result 200\n  Bound result 3571\n  Bound result 70\n  Bound result 4296\n  Bound result 87994341158995389561748\n  Bound result 5998\n  Bound result 3175\n  Bound result 11652\n  Bound result 2396\n  Bound result 10513\n  Bound result 33853236537865576610823\n  Bound result 1\n  Bound result 2475989205226037408636\n  Bound result 966298195903971068191\n  Bound result 242\n  Bound result 3590\n  Bound result 8007\n  Bound result 1129\n  Bound result 484326174814286782777\n  Bound result 887220\n  Bound result 100000000000000000000\n  Bound result 5\n  Bound result 54\n  Bound result 88\n  Bound result 9999999000000000000010\n  Bound result 5757\n  Bound result 419\n  Bound result 20000\n  Bound result 256\n  Bound result 2000\n  Bound result 1\n  Bound result 73\n  Bound result 2\n  Bound result 9999999000000000015572\n  Bound result 48879\n  Bound result 4384\n  Bound result 4096\n  Bound result 674\n  Bound result 16\n  Bound result 70\n\n[PASS] test_dustThenReverseTradeHasStrictPriceLimit() (gas: 880727)\nLogs:\n  Bound result 1\n  Bound result 419\n  Bound result 199999999999999999995501\n  Bound result 4478\n  Bound result 1\n  Bound result 15530\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 943.26ms (931.73ms CPU time)\n\nRan 2 tests for test/HookStatefulInvariant.t.sol:TokenFirstMultiActorInvariantTest\n[PASS]\nTokenFirstMultiActorInvariantTest invariants:\n[PASS] invariant_hookHoldsNoErc20AndCountersOnlyGrow\n[PASS] invariant_imdClaimsConserved\n[PASS] invariant_managerBacksHookClaimsAtRest\n[PASS] invariant_supplyFallsOnlyByHookBurns\n TokenFirstMultiActorInvariantTest invariants (runs: 64, calls: 2048, reverts: 0)\n\n╭-------------------+-----------------+-------+---------+----------╮\n| Contract          | Selector        | Calls | Reverts | Discards |\n+==================================================================+\n| MultiActorHandler | addLiquidity    | 286   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | batchTrade      | 322   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | donateClaim     | 272   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | midSyncTrade    | 309   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | process         | 285   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | removeLiquidity | 274   | 0       | 0        |\n|-------------------+-----------------+-------+---------+----------|\n| MultiActorHandler | trade           | 300   | 0       | 0        |\n╰-------------------+-----------------+-------+---------+----------╯\n\nLogs:\n  Bound result 45054907600487971676103\n  Bound result 2447\n  Bound result 4\n  Bound result 95\n  Bound result 4999999999999995\n  Bound result 36\n  Bound result 200\n  Bound result 1\n  Bound result 6\n  Bound result 77\n  Bound result 9999999000000000002889\n  Bound result 18\n  Bound result 64\n  Bound result 9999999000000000009974\n  Bound result 95\n  Bound result 4\n  Bound result 1\n  Bound result 61166851444257674191429\n  Bound result 5676\n  Bound result 39692058013454131539810\n  Bound result 200\n  Bound result 758\n  Bound result 70\n  Bound result 2584\n  Bound result 87994341158995389561748\n  Bound result 5998\n  Bound result 16522\n  Bound result 1692\n  Bound result 2396\n  Bound result 10710\n  Bound result 33853236537865576610823\n  Bound result 1\n  Bound result 2475989205226037408636\n  Bound result 966298195903971068191\n  Bound result 242\n  Bound result 12383\n  Bound result 5251\n  Bound result 3762\n  Bound result 591554263\n  Bound result 887220\n  Bound result 100000000000000000000\n  Bound result 5\n  Bound result 54\n  Bound result 33\n  Bound result 9999999000000000000010\n  Bound result 2805\n  Bound result 419\n  Bound result 20000\n  Bound result 256\n  Bound result 2000\n  Bound result 1\n  Bound result 168\n  Bound result 2\n  Bound result 9999999000000000008326\n  Bound result 48879\n  Bound result 4384\n  Bound result 4096\n  Bound result 4242\n  Bound result 16\n  Bound result 70\n\n[PASS] test_dustThenReverseTradeHasStrictPriceLimit() (gas: 764448)\nLogs:\n  Bound result 1\n  Bound result 419\n  Bound result 199999999999999999995501\n  Bound result 4478\n  Bound result 1\n  Bound result 15530\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 957.52ms (953.11ms CPU time)\n\nRan 11 test suites in 960.40ms (4.16s CPU time): 114 tests passed, 0 failed, 0 skipped (114 total tests)\n","passed":true},{"durationMs":83,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"IMDBHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"IMDBHook.beforeSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),bytes)\",\"IMDBHook.processFees()\",\"IMDBHook.quoteSwap((address,address,uint24,int24,address),(bool,int256,uint160))\",\"IMDBHook.unlockCallback(bytes)\",\"IMDBToken.approve(address,uint256)\",\"IMDBToken.burn(uint256)\",\"IMDBToken.transfer(address,uint256)\",\"IMDBToken.transferFrom(address,address,uint256)\"],\"files\":{\".gitignore\":5,\"LICENSE\":21,\"README.md\":102,\"checks/MainnetPairFork.sol.example\":53,\"docs/HOOK.md\":70,\"docs/OPERATIONS.md\":71,\"docs/SECURITY.md\":90,\"docs/dependencies.json\":152,\"docs/deployment-record.json\":37,\"foundry.toml\":22,\"launch.json\":30,\"package.json\":11,\"release/checksums.txt\":1,\"release/cid.txt\":1,\"release/imdbundler.car\":1150,\"remappings.txt\":4,\"scripts/configure-site.mjs\":8,\"scripts/draw-frogs.py\":43,\"scripts/mine-hook.mjs\":23,\"scripts/package-site.mjs\":72,\"scripts/serve.mjs\":19,\"site/LICENSE.txt\":21,\"site/_headers\":6,\"site/app.js\":391,\"site/assets/LICENSE.txt\":6,\"site/assets/pepe-dancing.svg\":7,\"site/assets/pepe-focused.svg\":7,\"site/assets/pepe-happy.svg\":7,\"site/assets/pepe-sad.svg\":7,\"site/assets/pepe-sleepy.svg\":7,\"site/assets/pepe-smug.svg\":7,\"site/assets/pepe-sunglasses.svg\":7,\"site/assets/pepe-thinking.svg\":7,\"site/chains.js\":12,\"site/deployment.js\":55,\"site/deployment.json\":7,\"site/index.html\":122,\"site/providers.js\":20,\"site/rpc.js\":59,\"site/style.css\":13,\"site/transactions.js\":75,\"site/vault.js\":98,\"site/vendor/ethers.LICENSE.md\":21,\"site/vendor/ethers.NOTICES.txt\":145,\"site/vendor/ethers.js\":1,\"src/HookBase.sol\":85,\"src/HookFlags.sol\":29,\"src/IMDBHook.sol\":267,\"src/IMDBToken.sol\":18,\"test/HookInvariant.t.sol\":87,\"test/HookStatefulInvariant.t.sol\":322,\"test/IMDBHook.t.sol\":444,\"test/IMDBHookEdges.t.sol\":365,\"test/IMDBHookRevision.t.sol\":250,\"test/IMDBToken.t.sol\":70,\"test/mocks/BatchRouter.sol\":86,\"test/mocks/MockERC20.sol\":13,\"test/mocks/ReentryProbeManager.sol\":33,\"test/mocks/TestRouter.sol\":95,\"test/site/core.test.mjs\":178,\"test/site/deployment.test.mjs\":79,\"test/site/dom.test.mjs\":187,\"test/site/providers.test.mjs\":83,\"test/site/release.test.mjs\":96,\"test/vendor/linkedom.LICENSE\":15,\"test/vendor/linkedom.NOTICES.txt\":248,\"test/vendor/linkedom.js\":12761},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"a288c2b898bae9306f6085eede8b7b037279cbf6ee63a739cfd2e75a4b4fce63","verifiedTreeHash":"54c6093c0dfaeb52ce6f1c5c3a1955bd543f227d","verifierVersion":"0.1.0+475a429a"}]}