{"assessments":[],"deployments":[{"attestationHash":"0ace72acef0345d7c66a641bb4f235e5a242790c1a435b5f5f78ceb05d0bfba3","chainId":4663,"contracts":[{"address":"0xb7c3ab1304513eb87699a33670cc79a3d7840517","blockNumber":81398566,"name":"ZeroToOne","role":"other","txHash":"0x2d0d92518cd6f258640dd64481979b11b35dc1079a6b7af1cc6ae6ecb99032eb"}],"id":"9be02b21-38b2-40b4-ae03-acefa2b11a75","manifestHash":"c8afd040248c294d43c88e950886144ab4f1d6a45940091aefef6be0aa571b60","status":"live"}],"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":"05e49fa8-b419-4c89-a9da-2b496a4dce9b","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"a776313ad405cfa505818387d2d78af423e09d1976e1afb6996a9a860d3f4d6a","dependsOn":["build_contract_project"],"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":"accepted"},{"acceptedSubmissionHash":"8594db47ef06736e7816bf508b1bc15b09f95263ab2f6485adda8384b4b4e0a8","dependsOn":["build_contract_project"],"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":"accepted"},{"acceptedSubmissionHash":"f5ac8a4aba635ca2d878e3b2a6d5fde0057f165108654dba824993b4cb6953ca","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":"accepted"},{"acceptedSubmissionHash":"7d96fe4b9e713f095e6e3d3dd84ea1b623258e78acbced3714b456af49f76ffb","dependsOn":["build_contract_project"],"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":"accepted"},{"acceptedSubmissionHash":"fb1991af70f8c7e855880839bce40c1d87da8684102ef101e84cc787c2af11e8","dependsOn":["build_contract_project"],"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":"accepted"},{"acceptedSubmissionHash":"39d44f8592cd07384820b3543d6960dfee09f25a5cde4cea934e21cf75005a36","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"},{"acceptedSubmissionHash":"f73f6c0836f3e403e2fd6871d230f7a06e25324d2b75e22f5f570625af233213","dependsOn":["build_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"accepted"},{"acceptedSubmissionHash":"00273fa495ec9775102eebf1cddde7a2bf0f1ca12e5b4eda3bcbbb9777d8c235","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":"The Robinhood end of a LayerZero V2 bridge for Zero To One (ZTO): an OFT named Zero To One, symbol ZTO, 18 decimals, with no supply at deployment. It mints only on a verified message from its one peer and burns on send. Its peer is fixed in the constructor: endpoint id 30101 (Ethereum), the OFT adapter at 0x68d443f419064b11cc427b9b72faa6c1cedf6378. LayerZero EndpointV2 on this chain: 0x6F475642a6e85809B1c36Fa62763669b1b48DD5B (endpoint id 30416). The owner and LayerZero delegate is 0xcecc29b037f5064fcdf45a5c318f132ef76aa551, set in the constructor. Use LayerZero V2 OApp/OFT semantics with 6 shared decimals. Put the LayerZero code the contract needs under src/ and add nothing under lib/. No fees, no pause, no upgrade path, no rescue function. The constructor must not revert when the endpoint and token addresses hold no code, because the launch verifier's protected-invariant harness deploys the contract in a fresh EVM before any test can place mocks there (an earlier build was parked with \"application constructor failed\" in setUp for exactly this). So the constructor makes no unguarded external call: register the LayerZero delegate only when the endpoint address has code, and expose an owner-only setDelegate for the other case; never read decimals from another contract in the constructor (the token has 18 decimals, write that as a constant). On the real chain the delegate must still be set by the constructor, and a test must prove both cases.","parentJobId":null,"planHash":"312f24695bac2f9172700742aba9bc9017186e462229a1ba682d760e6408762e","previousHash":"112a67ee18775f102645c2cd45fc288597a96087c482dd99c23fe79a0b4861d2","projectId":"05e49fa8-b419-4c89-a9da-2b496a4dce9b","publication":{"commit":"118805600502a48364b4ddfcbd7d994020ae1863","deliveredAt":"2026-10-06T05:50:27.870Z","repoUrl":"https://github.com/identity-md-launches/launch-782-robinhood-end-layerzero-v2"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[],"site":null,"snapshotHash":"bfded6967c5c8841391ad6321e31b41c95bdbbcd0e62498d6aac4717391369e0","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"c0364ccc826a4d00c9fe15771ae14a060c6fd4d2b61a6f6a5e4ef9a4f071ce05","device":"e8f1969b1b8ff9d4","findings":[],"hash":"00273fa495ec9775102eebf1cddde7a2bf0f1ca12e5b4eda3bcbbb9777d8c235","nodeId":"1c393259-f0e9-45ef-a4b9-90aeb6eddd9e","outcome":"completed","summary":"Added failure-path, fuzz, and multi-actor invariant tests covering authentication, replay, dust, overflow, fee rollback, balances, and allowances.\n\nOffline `forge build` and `forge test` pass: **62 tests passed**, including **16,384 invariant calls**.\n\nOnly `test/` files were added. No implementation defects were confirmed.","treeHash":"7186ba70175e0286bc7c162b3e6f6b4d91b2157c","usage":{"cachedInputTokens":1558144,"inputTokens":101660,"model":"gpt-6-astra","outputTokens":17777,"runtime":"codex","turns":6,"wallClockMs":486067}},{"artifacts":[],"attempt":1,"bundleHash":"51e600e5e9de27cd0488511f1b6d04d379ea0d2f94db59165d37127495617815","device":"87645bda72145989","findings":[],"hash":"39d44f8592cd07384820b3543d6960dfee09f25a5cde4cea934e21cf75005a36","nodeId":"195ae2b4-56ee-439c-8fac-2bc2e1638cd9","outcome":"completed","summary":"Implemented the ZTO OFT with fixed peer, guarded constructor delegate registration, verified minting, and burn-on-send. Dependencies are vendored under `src/`; nothing was added under `lib/`.\n\nValidation passed:\n\n- `forge build`\n- `forge test` — 48 tests, including both constructor cases\n- `forge fmt --check`\n\nDeployment parameters, assumptions, and operational responsibilities are documented in `README.md`. Live-chain configuration remains an operator responsibility.","treeHash":"e835f318e4258427d927be7de674d8b639ba8409","usage":{"cachedInputTokens":896256,"inputTokens":84020,"model":"gpt-6-astra","outputTokens":24533,"runtime":"codex","turns":6,"wallClockMs":603532}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"8cb9deeead5ce571","findings":[],"hash":"7c6c2c069c7993bd54fa254233b66e6e603a7dcaf1d51c091017d45a4fedb091","nodeId":"829c97d4-026a-45c3-8602-3a4ce309783b","outcome":"failed","summary":"workspace routing discovery unauthorized (401)","treeHash":null,"usage":{"cachedInputTokens":0,"inputTokens":0,"model":"gpt-6-astra","outputTokens":0,"runtime":"codex","turns":0,"wallClockMs":20569}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"0db9dd6ea32a69f2","findings":[],"hash":"7d96fe4b9e713f095e6e3d3dd84ea1b623258e78acbced3714b456af49f76ffb","nodeId":"a9e8f0ae-74c4-4484-9cdc-428f328891ab","outcome":"completed","summary":"Wrote [.imd-findings.json](/home/imdworker/.identitymd/work/05e49fa8-b419-4c89-a9da-2b496a4dce9b/a9e8f0ae-74c4-4484-9cdc-428f328891ab/.imd-findings.json).\n\nNo substantiated defects in the assigned area. Coverage records include all 44 entry points. All 48 existing Foundry tests passed offline, including both constructor cases.\n\nLive adapter backing and DVN configuration remain unverified. Application and configuration files are unchanged.","treeHash":null,"usage":{"cachedInputTokens":1153408,"inputTokens":129111,"model":"gpt-6-astra","outputTokens":7504,"runtime":"codex","turns":5,"wallClockMs":232782}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"f5975850d31ab58a","findings":[],"hash":"8594db47ef06736e7816bf508b1bc15b09f95263ab2f6485adda8384b4b4e0a8","nodeId":"be56283f-da1a-4403-b0fc-1f9dc1e44687","outcome":"completed","summary":"Wrote [.imd-findings.json](/home/imdworker/.identitymd/work/05e49fa8-b419-4c89-a9da-2b496a4dce9b/be56283f-da1a-4403-b0fc-1f9dc1e44687/.imd-findings.json): no substantiated defects; all 44 entry points covered.\n\nAll 48 Foundry tests passed offline. Implementation unchanged. Live configuration and remote collateral remain unverified.","treeHash":null,"usage":{"cachedInputTokens":793088,"inputTokens":112616,"model":"gpt-6-astra","outputTokens":8419,"runtime":"codex","turns":5,"wallClockMs":269543}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ea30e435c4dd5aff","findings":[],"hash":"a776313ad405cfa505818387d2d78af423e09d1976e1afb6996a9a860d3f4d6a","nodeId":"7329800f-a87c-4724-885f-08a82d44797e","outcome":"completed","summary":"Saved [.imd-findings.json](/home/imd/.identitymd/work/05e49fa8-b419-4c89-a9da-2b496a4dce9b/7329800f-a87c-4724-885f-08a82d44797e/.imd-findings.json).\n\nNo substantiated defects. Covered all 44 listed entry points; all 48 offline Foundry tests passed.\n\nRemote collateral backing and live LayerZero configuration remain unverified. Implementation files are unchanged.","treeHash":null,"usage":{"cachedInputTokens":1193472,"inputTokens":119050,"model":"gpt-6-astra","outputTokens":7625,"runtime":"codex","turns":5,"wallClockMs":240277}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"1d2eacca0a6e8449","findings":[],"hash":"f5ac8a4aba635ca2d878e3b2a6d5fde0057f165108654dba824993b4cb6953ca","nodeId":"6c176c8c-bd4c-448d-acf7-8dbe3d5d920f","outcome":"completed","summary":"No reproducible defects found. Wrote [.imd-findings.json](/home/imd-worker/.identitymd/work/05e49fa8-b419-4c89-a9da-2b496a4dce9b/6c176c8c-bd4c-448d-acf7-8dbe3d5d920f/.imd-findings.json) with coverage for all 44 entry points.\n\nAll 62 tests passed, plus the protected harness using synthetic deployment inputs. Source and configuration files are unchanged. Live-chain configuration was not verified.","treeHash":null,"usage":{"cachedInputTokens":1265920,"inputTokens":155472,"model":"gpt-6-astra","outputTokens":7002,"runtime":"codex","turns":5,"wallClockMs":559370}},{"artifacts":[],"attempt":1,"bundleHash":"bbe2e37673b440023d816fe99a4926d5eda8d8b06050e158b732a979e9008192","device":"107def308610130e","findings":[],"hash":"f73f6c0836f3e403e2fd6871d230f7a06e25324d2b75e22f5f570625af233213","nodeId":"f2bfacac-e427-4e98-b78e-e96000aba19b","outcome":"completed","summary":"Updated `launch.json` for `ZeroToOne`, retaining empty constructor arguments and documenting the fixed configuration.\n\nValidation passed: manifest schema and ABI checks, `forge build`, and all 49 tests, including the protected harness and both endpoint-code cases. Only `launch.json` changed outside permitted scratch space.","treeHash":"00548d3f42e9105186d2b5023f73afb2b8783a66","usage":{"cachedInputTokens":198784,"inputTokens":39969,"model":"gpt-6-astra","outputTokens":2905,"runtime":"codex","turns":3,"wallClockMs":77796}},{"artifacts":[],"attempt":2,"bundleHash":null,"device":"1c3f1bd2a9480b62","findings":[],"hash":"fb1991af70f8c7e855880839bce40c1d87da8684102ef101e84cc787c2af11e8","nodeId":"829c97d4-026a-45c3-8602-3a4ce309783b","outcome":"completed","summary":"Wrote [.imd-findings.json](/home/imd1/.identitymd/work/05e49fa8-b419-4c89-a9da-2b496a4dce9b/829c97d4-026a-45c3-8602-3a4ce309783b/.imd-findings.json) with no substantiated defects and coverage for all 44 entry points.\n\nAll 48 Foundry tests passed offline. Implementation files remain unchanged. Live endpoint/DVN configuration and Ethereum adapter backing remain unverified.","treeHash":null,"usage":{"cachedInputTokens":865664,"inputTokens":108323,"model":"gpt-6-astra","outputTokens":6982,"runtime":"codex","turns":5,"wallClockMs":224488}}],"verification":[{"checks":[{"durationMs":4061,"exitCode":0,"name":"build","output":"Compiling 85 files with Solc 0.8.26\nSolc 0.8.26 finished in 3.80s\nCompiler run successful!\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:12:19\n   │\n12 │ abstract contract OAppReceiver is IOAppReceiver, OAppCore {\n   │                   ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:104:30\n    │\n104 │     function setMsgInspector(address _msgInspector) public virtual onlyOwner {\n    │                              ━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:13:19\n   │\n13 │ abstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\n   │                   ━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:32:26\n   │\n32 │     function setPreCrime(address _preCrime) public virtual onlyOwner {\n   │                          ━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:17:19\n   │\n17 │ abstract contract OApp is OAppSender, OAppReceiver {\n   │                   ━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[calls-loop]: external call inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:59:13\n   │\n59 │ ┏             this.lzReceiveSimulate{value: packet.value}(\n60 │ ┃                 packet.origin, packet.guid, packet.message, packet.executor, packet.extraData\n61 │ ┃             );\n   │ ┗━━━━━━━━━━━━━┛\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/calls-loop\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol:134:75\n    │\n134 │                     if (!_hasPayloadHash(_receiver, _srcEid, _sender, i)) revert Errors.LZ_InvalidNonce(i);\n    │                                                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:11:18\n   │\n11 │         result = bytes32(_addressBytes);\n   │                  ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes32' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:39:26\n   │\n39 │         result = address(bytes20(_addressBytes));\n   │                          ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes20' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:17\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                 ━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint32' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:50\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                                                  ━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint160' 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/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:223:9\n    │\n223 │         emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unused-return]: return value of an external call is not used\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:256:38\n    │\n256 │         if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\n    │                                      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[missing-events-access-control]: `composeQueue` is changed without an event but is used for access control\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:27:9\n   │\n27 │         composeQueue[msg.sender][_to][_guid][_index] = keccak256(_message);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-events-access-control\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:308:9\n    │\n308 │         emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:58:9\n   │\n58 │         ILayerZeroComposer(_to).lzCompose{value: msg.value}(_from, _guid, _message, msg.sender, _extraData);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-eth\n\nwarning[divide-before-multiply]: division before multiplication may lose precision\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:356:16\n    │\n356 │         return (_amountLD / decimalConversionRate) * decimalConversionRate;\n    │                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/divide-before-multiply\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:59:9\n   │\n59 │         emit ComposeDelivered(_from, _to, _guid, _index);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:379:16\n    │\n379 │         return uint64(_amountSD);\n    │                ━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint64' 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[controlled-delegatecall]: `delegatecall` target is not provably trusted\n    ╭▸ src/vendor/@openzeppelin/contracts/utils/Address.sol:181:51\n    │\n181 │         (bool success, bytes memory returndata) = target.delegatecall(data);\n    │                                                   ━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/controlled-delegatecall\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:48:9\n   │\n48 │         emit EnforcedOptionSet(_enforcedOptions);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:97:43\n   │\n97 │         if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\n   │                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:146:9\n    │\n146 │         emit PacketSent(encodedPacket, _params.options, _sendLibrary);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:186:9\n    │\n186 │         ILayerZeroReceiver(_receiver).lzReceive{value: msg.value}(_origin, _guid, _message, msg.sender, _extraData);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol:149:9\n    │\n149 │         emit LibraryRegistered(_lib);\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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:187:9\n    │\n187 │         emit PacketDelivered(_origin, _receiver);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:229:25\n    │\n229 │     function setLzToken(address _lzToken) public virtual onlyOwner {\n    │                         ━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\n","passed":true},{"durationMs":7414,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 9 tests for test/Controls.t.sol:ControlsTest\n[PASS] testAllAvailableAdministrationIsOwnerOnly() (gas: 153369)\n[PASS] testEnforcedOptionsCombineAndComposeUsesSeparateMessageType() (gas: 921887)\n[PASS] testErc20TransfersAndAllowancesPreserveSupply() (gas: 446514)\n[PASS] testEvenOwnerCannotReplaceRemoveOrAddPeer() (gas: 55709)\n[PASS] testInvalidOptionsAreRejectedBeforeSendCommits() (gas: 344400)\n[PASS] testNoMintPauseRescueOrUpgradeEntrypointsForOwner() (gas: 175747)\n[PASS] testOwnerCannotInstallExternalSendGate() (gas: 21627)\n[PASS] testOwnershipTransferDoesNotAutomaticallyChangeEndpointDelegate() (gas: 140825)\n[PASS] testVersionsAndLiveEndpointDelegate() (gas: 66897)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 12.27ms (2.76ms CPU time)\n\nRan 17 tests for test/Send.t.sol:SendTest\n[PASS] testDustRemainsWithSenderAndNoTokenFeeIsTaken() (gas: 509713)\n[PASS] testExcessQuotedNativeFeeIsRefundedByEndpoint() (gas: 481358)\n[PASS] testFuzzRoundTripConservesSupplyAndDust(uint64,uint256) (runs: 256, μ: 519700, ~: 532067)\nLogs:\n  Bound result 4\n\n[PASS] testLzTokenPaymentAndExcessRefund() (gas: 1420339)\n[PASS] testLzTokenPaymentWithoutAllowanceRollsBackBurn() (gas: 1032734)\n[PASS] testMaximumSharedAmountCanBeBurned() (gas: 500242)\n[PASS] testMessageLibraryFailureRollsBackBurn() (gas: 363312)\n[PASS] testMinimumAmountIncludesDustRemoval() (gas: 244490)\n[PASS] testNativeFeeMustMatchMsgValueAndBurnRollsBack() (gas: 318616)\n[PASS] testRefundReentrancyCannotReenterEndpointAndNestedBurnRollsBack() (gas: 1136916)\n[PASS] testSendBurnsCallerAndEncodesPeerRecipientAndSharedAmount() (gas: 593613)\n[PASS] testSendCannotBurnSomeoneElsesBalance() (gas: 244929)\n[PASS] testSharedDecimalOverflowRevertsQuoteAndSendWithoutTruncation() (gas: 388618)\n[PASS] testUnavailableLzTokenFailsQuoteAndSend() (gas: 283809)\n[PASS] testUnderpaidEndpointFeeRevertsAndRestoresBurnAndNonce() (gas: 498128)\n[PASS] testUnknownDestinationRevertsQuoteAndRollsBackBurn() (gas: 285277)\n[PASS] testZeroAndSubDustSendsPreserveStandardOftBehavior() (gas: 525116)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 137.41ms (79.21ms CPU time)\n\nRan 15 tests for test/Receive.t.sol:ReceiveTest\n[PASS] testComposedReceiveMintsAndQueuesStandardPayload() (gas: 231896)\n[PASS] testEndpointCannotMintFromWrongChainOrEmptyPeer() (gas: 59305)\n[PASS] testEndpointCannotMintFromWrongPeer() (gas: 42182)\n[PASS] testEndpointRejectsReplayAndReverificationAfterDelivery() (gas: 278403)\n[PASS] testFuzzVerifiedCreditsScaleExactly(uint64) (runs: 256, μ: 205064, ~: 206917)\n[PASS] testMalformedVerifiedPayloadRevertsWithoutConsumingMessage() (gas: 158350)\n[PASS] testOnlyEndpointCanDeliverIncludingOwner() (gas: 66102)\n[PASS] testPayloadAndGuidAreBoundToVerification() (gas: 315106)\n[PASS] testSimulationCannotPersistMint() (gas: 132427)\n[PASS] testUnconfiguredLibraryCannotVerify() (gas: 51442)\n[PASS] testUnorderedDeliveryAfterBothPacketsVerified() (gas: 349871)\n[PASS] testUnverifiedPacketCannotBeExecuted() (gas: 49712)\n[PASS] testVerifiedMessageMintsAndEmitsReceipt() (gas: 205415)\n[PASS] testWrongPeerCannotInitializeEndpointPath() (gas: 48546)\n[PASS] testZeroRecipientUsesStandardOftDeadAddress() (gas: 217095)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 141.92ms (143.79ms CPU time)\n\nRan 12 tests for test/BridgeAdversarial.t.sol:BridgeAdversarialTest\n[PASS] testFuzzDustSplitRecombineAndBurnConservesAllCredits(uint64,uint256) (runs: 1000, μ: 926908, ~: 928079)\nLogs:\n  Bound result 24576\n  Bound result 3422\n\n[PASS] testFuzzEveryOtherEndpointIdRejectsReceiveAndSend(uint32) (runs: 1000, μ: 353290, ~: 353288)\n[PASS] testFuzzMinimumOneWeiAboveRepresentableAmountAlwaysReverts(uint64,uint256) (runs: 1000, μ: 413036, ~: 413398)\nLogs:\n  Bound result 637274465\n\n[PASS] testFuzzOversizedQuoteNeverTruncatesSharedAmount(uint256) (runs: 1000, μ: 26954, ~: 27220)\nLogs:\n  Bound result 35266901646529619140368994047548450294136047587720\n\n[PASS] testFuzzPeerComparisonUsesAllBytes(uint96) (runs: 1000, μ: 104983, ~: 104980)\nLogs:\n  Bound result 1\n\n[PASS] testFuzzTruncatedVerifiedPayloadPreservesCreditAndCanBeReverified(uint8,bytes32) (runs: 1000, μ: 537125, ~: 536324)\nLogs:\n  Bound result 0\n\n[PASS] testMaximumSharedAmountPlusDustDoesNotOverflowOrBurnDust() (gas: 681833)\n[PASS] testRejectedRefundRollsBackBurnFeeNonceAndPacketThenAllowsRetry() (gas: 987334)\n[PASS] testRejectedTransferFromRestoresFiniteAllowance() (gas: 385907)\n[PASS] testSimulationRollsBackCreditAndComposeQueueWithoutConsumingVerifiedPacket() (gas: 467104)\n[PASS] testUnderpaidLzTokenRestoresFeeBalanceAllowanceAndBurn() (gas: 1745986)\n[PASS] testZeroAndOneWeiSendsCannotCreateSupply() (gas: 516294)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 141.88ms (789.14ms CPU time)\n\nRan 7 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorDoesNotReadRemoteTokenDecimals() (gas: 113423)\n[PASS] testConstructorDoesNotSwallowLiveEndpointFailure() (gas: 101746)\n[PASS] testConstructorRegistersDelegateWhenEndpointHasCode() (gas: 352416)\n[PASS] testDeferredDelegateRegistrationIsOwnerOnly() (gas: 234027)\n[PASS] testDelegateRegistrationFailsUntilEndpointExists() (gas: 31153)\n[PASS] testFreshEvmCreate2DeploymentHasNoSupplyAndFixedConfiguration() (gas: 299625)\n[PASS] testRuntimeMeetsProtectedDeploymentConstraints() (gas: 8749764)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 142.13ms (29.09ms CPU time)\n\nRan 2 tests for test/BridgeInvariant.t.sol:BridgeInvariantTest\n[PASS]\nBridgeInvariantTest invariants:\n[PASS] invariantEveryBalanceAndAllowanceMatchesIndependentLedger\n[PASS] invariantOnlySuccessfulSendsAdvanceNonceAndPayFees\n[PASS] invariantSinglePeerAndVerifiedPathRemainIntact\n[PASS] invariantSupplyEqualsExecutedCreditsLessSuccessfulBurns\n BridgeInvariantTest invariants (runs: 256, calls: 16384, reverts: 0)\n\n╭---------------+------------------------+-------+---------+----------╮\n| Contract      | Selector               | Calls | Reverts | Discards |\n+=====================================================================+\n| BridgeHandler | approve                | 1376  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | executeInbound         | 1398  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | rejectedAdministration | 1332  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | rejectedSend           | 1351  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | rejectedTransferFrom   | 1370  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | send                   | 1353  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | tamperInbound          | 1401  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | transfer               | 1360  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | transferFrom           | 1385  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | unauthorizedReceive    | 1343  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | unverifiedReceive      | 1382  | 0       | 0        |\n|---------------+------------------------+-------+---------+----------|\n| BridgeHandler | verifyInbound          | 1333  | 0       | 0        |\n╰---------------+------------------------+-------+---------+----------╯\n\nLogs:\n  Bound result 0\n  Bound result 7102350831808976640\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 0\n  Bound result 6627028110216420690991113795277\n  Bound result 9983\n  Bound result 0\n\n[PASS] testHandlerExercisesFundedSequencesAndFailureModes() (gas: 2237208)\nLogs:\n  Bound result 123\n  Bound result 456\n  Bound result 456\n  Bound result 789\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n  Bound result 1000000000000000000\n\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 7.31s (7.31s CPU time)\n\nRan 6 test suites in 7.31s (7.88s CPU time): 62 tests passed, 0 failed, 0 skipped (62 total tests)\n","passed":true},{"durationMs":78,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BlockedMessageLib.fallback()\",\"ERC20.approve(address,uint256)\",\"ERC20.decreaseAllowance(address,uint256)\",\"ERC20.increaseAllowance(address,uint256)\",\"ERC20.transfer(address,uint256)\",\"ERC20.transferFrom(address,address,uint256)\",\"EndpointV2.burn(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.clear(address,(uint32,bytes32,uint64),bytes32,bytes)\",\"EndpointV2.lzCompose(address,address,bytes32,uint16,bytes,bytes)\",\"EndpointV2.lzComposeAlert(address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)\",\"EndpointV2.lzReceiveAlert((uint32,bytes32,uint64),address,bytes32,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.nilify(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.recoverToken(address,address,uint256)\",\"EndpointV2.registerLibrary(address)\",\"EndpointV2.renounceOwnership()\",\"EndpointV2.send((uint32,bytes32,bytes,bytes,bool),address)\",\"EndpointV2.sendCompose(address,bytes32,uint16,bytes)\",\"EndpointV2.setConfig(address,address,(uint32,uint32,bytes)[])\",\"EndpointV2.setDefaultReceiveLibrary(uint32,address,uint256)\",\"EndpointV2.setDefaultReceiveLibraryTimeout(uint32,address,uint256)\",\"EndpointV2.setDefaultSendLibrary(uint32,address)\",\"EndpointV2.setDelegate(address)\",\"EndpointV2.setLzToken(address)\",\"EndpointV2.setReceiveLibrary(address,uint32,address,uint256)\",\"EndpointV2.setReceiveLibraryTimeout(address,uint32,address,uint256)\",\"EndpointV2.setSendLibrary(address,uint32,address)\",\"EndpointV2.skip(address,uint32,bytes32,uint64)\",\"EndpointV2.transferOwnership(address)\",\"EndpointV2.verify((uint32,bytes32,uint64),address,bytes32)\",\"ZeroToOne.approve(address,uint256)\",\"ZeroToOne.decreaseAllowance(address,uint256)\",\"ZeroToOne.increaseAllowance(address,uint256)\",\"ZeroToOne.lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\",\"ZeroToOne.lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.renounceOwnership()\",\"ZeroToOne.send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\",\"ZeroToOne.setDelegate(address)\",\"ZeroToOne.setEnforcedOptions((uint32,uint16,bytes)[])\",\"ZeroToOne.setPreCrime(address)\",\"ZeroToOne.transfer(address,uint256)\",\"ZeroToOne.transferFrom(address,address,uint256)\",\"ZeroToOne.transferOwnership(address)\"],\"files\":{\".gitignore\":4,\"README.md\":72,\"foundry.toml\":25,\"launch.json\":10,\"src/ZeroToOne.sol\":49,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-LZBL-1.2\":42,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol\":362,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol\":331,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol\":157,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol\":81,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":89,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":19,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":26,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":68,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":32,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":9,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":33,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":41,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol\":17,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol\":34,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol\":30,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":102,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/package.json\":34,\"src/vendor/@layerzerolabs/oapp-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":39,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":85,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":138,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":125,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":52,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":22,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":42,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":27,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":99,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":121,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":55,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":38,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":62,\"src/vendor/@layerzerolabs/oapp-evm/package.json\":57,\"src/vendor/@layerzerolabs/oft-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol\":92,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol\":441,\"src/vendor/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":150,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":95,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":83,\"src/vendor/@layerzerolabs/oft-evm/package.json\":68,\"src/vendor/@openzeppelin/contracts/LICENSE\":22,\"src/vendor/@openzeppelin/contracts/access/Ownable.sol\":83,\"src/vendor/@openzeppelin/contracts/package.json\":32,\"src/vendor/@openzeppelin/contracts/token/ERC20/ERC20.sol\":366,\"src/vendor/@openzeppelin/contracts/token/ERC20/IERC20.sol\":78,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":28,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":83,\"src/vendor/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":143,\"src/vendor/@openzeppelin/contracts/utils/Address.sol\":240,\"src/vendor/@openzeppelin/contracts/utils/Context.sol\":28,\"src/vendor/@openzeppelin/contracts/utils/introspection/ERC165.sol\":29,\"src/vendor/@openzeppelin/contracts/utils/introspection/IERC165.sol\":25,\"src/vendor/README.md\":28,\"src/vendor/license-sources.json\":7,\"src/vendor/provenance.json\":26,\"test/BridgeAdversarial.t.sol\":274,\"test/BridgeInvariant.t.sol\":110,\"test/Controls.t.sol\":172,\"test/Deployment.t.sol\":113,\"test/Receive.t.sol\":171,\"test/Send.t.sol\":261,\"test/helpers/BridgeFixture.sol\":168,\"test/helpers/BridgeHandler.sol\":266,\"test/vendor/forge-std/LICENSE-APACHE\":203,\"test/vendor/forge-std/LICENSE-MIT\":25,\"test/vendor/forge-std/provenance.json\":5,\"test/vendor/forge-std/src/Base.sol\":42,\"test/vendor/forge-std/src/Script.sol\":28,\"test/vendor/forge-std/src/StdAssertions.sol\":685,\"test/vendor/forge-std/src/StdChains.sol\":286,\"test/vendor/forge-std/src/StdCheats.sol\":829,\"test/vendor/forge-std/src/StdConstants.sol\":30,\"test/vendor/forge-std/src/StdError.sol\":15,\"test/vendor/forge-std/src/StdInvariant.sol\":122,\"test/vendor/forge-std/src/StdJson.sol\":277,\"test/vendor/forge-std/src/StdMath.sol\":43,\"test/vendor/forge-std/src/StdStorage.sol\":473,\"test/vendor/forge-std/src/StdStyle.sol\":333,\"test/vendor/forge-std/src/StdToml.sol\":277,\"test/vendor/forge-std/src/StdUtils.sol\":209,\"test/vendor/forge-std/src/Test.sol\":34,\"test/vendor/forge-std/src/Vm.sol\":2369,\"test/vendor/forge-std/src/console.sol\":1552,\"test/vendor/forge-std/src/console2.sol\":4,\"test/vendor/forge-std/src/interfaces/IERC1155.sol\":105,\"test/vendor/forge-std/src/interfaces/IERC165.sol\":12,\"test/vendor/forge-std/src/interfaces/IERC20.sol\":43,\"test/vendor/forge-std/src/interfaces/IERC4626.sol\":190,\"test/vendor/forge-std/src/interfaces/IERC6909.sol\":72,\"test/vendor/forge-std/src/interfaces/IERC721.sol\":164,\"test/vendor/forge-std/src/interfaces/IERC7540.sol\":144,\"test/vendor/forge-std/src/interfaces/IERC7575.sol\":241,\"test/vendor/forge-std/src/interfaces/IMulticall3.sol\":70,\"test/vendor/forge-std/src/safeconsole.sol\":13937},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"00273fa495ec9775102eebf1cddde7a2bf0f1ca12e5b4eda3bcbbb9777d8c235","verifiedTreeHash":"7186ba70175e0286bc7c162b3e6f6b4d91b2157c","verifierVersion":"0.1.0+e6140b7a"},{"checks":[{"durationMs":2744,"exitCode":0,"name":"build","output":"Compiling 82 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.54s\nCompiler run successful!\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:13:19\n   │\n13 │ abstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\n   │                   ━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:11:18\n   │\n11 │         result = bytes32(_addressBytes);\n   │                  ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes32' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:39:26\n   │\n39 │         result = address(bytes20(_addressBytes));\n   │                          ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes20' 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[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:32:26\n   │\n32 │     function setPreCrime(address _preCrime) public virtual onlyOwner {\n   │                          ━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[controlled-delegatecall]: `delegatecall` target is not provably trusted\n    ╭▸ src/vendor/@openzeppelin/contracts/utils/Address.sol:181:51\n    │\n181 │         (bool success, bytes memory returndata) = target.delegatecall(data);\n    │                                                   ━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/controlled-delegatecall\n\nwarning[calls-loop]: external call inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:59:13\n   │\n59 │ ┏             this.lzReceiveSimulate{value: packet.value}(\n60 │ ┃                 packet.origin, packet.guid, packet.message, packet.executor, packet.extraData\n61 │ ┃             );\n   │ ┗━━━━━━━━━━━━━┛\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/calls-loop\n\nwarning[missing-events-access-control]: `composeQueue` is changed without an event but is used for access control\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:27:9\n   │\n27 │         composeQueue[msg.sender][_to][_guid][_index] = keccak256(_message);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-events-access-control\n\nwarning[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:58:9\n   │\n58 │         ILayerZeroComposer(_to).lzCompose{value: msg.value}(_from, _guid, _message, msg.sender, _extraData);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:59:9\n   │\n59 │         emit ComposeDelivered(_from, _to, _guid, _index);\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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol:149:9\n    │\n149 │         emit LibraryRegistered(_lib);\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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:146:9\n    │\n146 │         emit PacketSent(encodedPacket, _params.options, _sendLibrary);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol:134:75\n    │\n134 │                     if (!_hasPayloadHash(_receiver, _srcEid, _sender, i)) revert Errors.LZ_InvalidNonce(i);\n    │                                                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\nwarning[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:186:9\n    │\n186 │         ILayerZeroReceiver(_receiver).lzReceive{value: msg.value}(_origin, _guid, _message, msg.sender, _extraData);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-eth\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:17:19\n   │\n17 │ abstract contract OApp is OAppSender, OAppReceiver {\n   │                   ━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:17\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                 ━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint32' 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[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:12:19\n   │\n12 │ abstract contract OAppReceiver is IOAppReceiver, OAppCore {\n   │                   ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:187:9\n    │\n187 │         emit PacketDelivered(_origin, _receiver);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:104:30\n    │\n104 │     function setMsgInspector(address _msgInspector) public virtual onlyOwner {\n    │                              ━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:50\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                                                  ━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint160' 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[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:229:25\n    │\n229 │     function setLzToken(address _lzToken) public virtual onlyOwner {\n    │                         ━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:223:9\n    │\n223 │         emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unused-return]: return value of an external call is not used\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:256:38\n    │\n256 │         if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\n    │                                      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:308:9\n    │\n308 │         emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[divide-before-multiply]: division before multiplication may lose precision\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:356:16\n    │\n356 │         return (_amountLD / decimalConversionRate) * decimalConversionRate;\n    │                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/divide-before-multiply\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:379:16\n    │\n379 │         return uint64(_amountSD);\n    │                ━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint64' 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/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:48:9\n   │\n48 │         emit EnforcedOptionSet(_enforcedOptions);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:97:43\n   │\n97 │         if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\n   │                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\n","passed":true},{"durationMs":120,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 15 tests for test/Receive.t.sol:ReceiveTest\n[PASS] testComposedReceiveMintsAndQueuesStandardPayload() (gas: 231896)\n[PASS] testEndpointCannotMintFromWrongChainOrEmptyPeer() (gas: 59305)\n[PASS] testEndpointCannotMintFromWrongPeer() (gas: 42182)\n[PASS] testEndpointRejectsReplayAndReverificationAfterDelivery() (gas: 278403)\n[PASS] testFuzzVerifiedCreditsScaleExactly(uint64) (runs: 256, μ: 205844, ~: 206929)\n[PASS] testMalformedVerifiedPayloadRevertsWithoutConsumingMessage() (gas: 158350)\n[PASS] testOnlyEndpointCanDeliverIncludingOwner() (gas: 66102)\n[PASS] testPayloadAndGuidAreBoundToVerification() (gas: 315106)\n[PASS] testSimulationCannotPersistMint() (gas: 132427)\n[PASS] testUnconfiguredLibraryCannotVerify() (gas: 51442)\n[PASS] testUnorderedDeliveryAfterBothPacketsVerified() (gas: 349871)\n[PASS] testUnverifiedPacketCannotBeExecuted() (gas: 49712)\n[PASS] testVerifiedMessageMintsAndEmitsReceipt() (gas: 205415)\n[PASS] testWrongPeerCannotInitializeEndpointPath() (gas: 48546)\n[PASS] testZeroRecipientUsesStandardOftDeadAddress() (gas: 217095)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 11.01ms (12.61ms CPU time)\n\nRan 7 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorDoesNotReadRemoteTokenDecimals() (gas: 113423)\n[PASS] testConstructorDoesNotSwallowLiveEndpointFailure() (gas: 101746)\n[PASS] testConstructorRegistersDelegateWhenEndpointHasCode() (gas: 352416)\n[PASS] testDeferredDelegateRegistrationIsOwnerOnly() (gas: 234027)\n[PASS] testDelegateRegistrationFailsUntilEndpointExists() (gas: 31153)\n[PASS] testFreshEvmCreate2DeploymentHasNoSupplyAndFixedConfiguration() (gas: 299625)\n[PASS] testRuntimeMeetsProtectedDeploymentConstraints() (gas: 8749764)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 20.73ms (22.35ms CPU time)\n\nRan 9 tests for test/Controls.t.sol:ControlsTest\n[PASS] testAllAvailableAdministrationIsOwnerOnly() (gas: 153369)\n[PASS] testEnforcedOptionsCombineAndComposeUsesSeparateMessageType() (gas: 921887)\n[PASS] testErc20TransfersAndAllowancesPreserveSupply() (gas: 446514)\n[PASS] testEvenOwnerCannotReplaceRemoveOrAddPeer() (gas: 55709)\n[PASS] testInvalidOptionsAreRejectedBeforeSendCommits() (gas: 344400)\n[PASS] testNoMintPauseRescueOrUpgradeEntrypointsForOwner() (gas: 175747)\n[PASS] testOwnerCannotInstallExternalSendGate() (gas: 21627)\n[PASS] testOwnershipTransferDoesNotAutomaticallyChangeEndpointDelegate() (gas: 140825)\n[PASS] testVersionsAndLiveEndpointDelegate() (gas: 66897)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 33.04ms (1.82ms CPU time)\n\nRan 17 tests for test/Send.t.sol:SendTest\n[PASS] testDustRemainsWithSenderAndNoTokenFeeIsTaken() (gas: 509713)\n[PASS] testExcessQuotedNativeFeeIsRefundedByEndpoint() (gas: 481358)\n[PASS] testFuzzRoundTripConservesSupplyAndDust(uint64,uint256) (runs: 256, μ: 518315, ~: 507125)\nLogs:\n  Bound result 455482997374015\n\n[PASS] testLzTokenPaymentAndExcessRefund() (gas: 1420339)\n[PASS] testLzTokenPaymentWithoutAllowanceRollsBackBurn() (gas: 1032734)\n[PASS] testMaximumSharedAmountCanBeBurned() (gas: 500242)\n[PASS] testMessageLibraryFailureRollsBackBurn() (gas: 363312)\n[PASS] testMinimumAmountIncludesDustRemoval() (gas: 244490)\n[PASS] testNativeFeeMustMatchMsgValueAndBurnRollsBack() (gas: 318616)\n[PASS] testRefundReentrancyCannotReenterEndpointAndNestedBurnRollsBack() (gas: 1136916)\n[PASS] testSendBurnsCallerAndEncodesPeerRecipientAndSharedAmount() (gas: 593613)\n[PASS] testSendCannotBurnSomeoneElsesBalance() (gas: 244929)\n[PASS] testSharedDecimalOverflowRevertsQuoteAndSendWithoutTruncation() (gas: 388618)\n[PASS] testUnavailableLzTokenFailsQuoteAndSend() (gas: 283809)\n[PASS] testUnderpaidEndpointFeeRevertsAndRestoresBurnAndNonce() (gas: 498128)\n[PASS] testUnknownDestinationRevertsQuoteAndRollsBackBurn() (gas: 285277)\n[PASS] testZeroAndSubDustSendsPreserveStandardOftBehavior() (gas: 525116)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 33.10ms (39.45ms CPU time)\n\nRan 4 test suites in 33.76ms (97.88ms CPU time): 48 tests passed, 0 failed, 0 skipped (48 total tests)\n","passed":true},{"durationMs":53,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BlockedMessageLib.fallback()\",\"ERC20.approve(address,uint256)\",\"ERC20.decreaseAllowance(address,uint256)\",\"ERC20.increaseAllowance(address,uint256)\",\"ERC20.transfer(address,uint256)\",\"ERC20.transferFrom(address,address,uint256)\",\"EndpointV2.burn(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.clear(address,(uint32,bytes32,uint64),bytes32,bytes)\",\"EndpointV2.lzCompose(address,address,bytes32,uint16,bytes,bytes)\",\"EndpointV2.lzComposeAlert(address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)\",\"EndpointV2.lzReceiveAlert((uint32,bytes32,uint64),address,bytes32,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.nilify(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.recoverToken(address,address,uint256)\",\"EndpointV2.registerLibrary(address)\",\"EndpointV2.renounceOwnership()\",\"EndpointV2.send((uint32,bytes32,bytes,bytes,bool),address)\",\"EndpointV2.sendCompose(address,bytes32,uint16,bytes)\",\"EndpointV2.setConfig(address,address,(uint32,uint32,bytes)[])\",\"EndpointV2.setDefaultReceiveLibrary(uint32,address,uint256)\",\"EndpointV2.setDefaultReceiveLibraryTimeout(uint32,address,uint256)\",\"EndpointV2.setDefaultSendLibrary(uint32,address)\",\"EndpointV2.setDelegate(address)\",\"EndpointV2.setLzToken(address)\",\"EndpointV2.setReceiveLibrary(address,uint32,address,uint256)\",\"EndpointV2.setReceiveLibraryTimeout(address,uint32,address,uint256)\",\"EndpointV2.setSendLibrary(address,uint32,address)\",\"EndpointV2.skip(address,uint32,bytes32,uint64)\",\"EndpointV2.transferOwnership(address)\",\"EndpointV2.verify((uint32,bytes32,uint64),address,bytes32)\",\"ZeroToOne.approve(address,uint256)\",\"ZeroToOne.decreaseAllowance(address,uint256)\",\"ZeroToOne.increaseAllowance(address,uint256)\",\"ZeroToOne.lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\",\"ZeroToOne.lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.renounceOwnership()\",\"ZeroToOne.send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\",\"ZeroToOne.setDelegate(address)\",\"ZeroToOne.setEnforcedOptions((uint32,uint16,bytes)[])\",\"ZeroToOne.setPreCrime(address)\",\"ZeroToOne.transfer(address,uint256)\",\"ZeroToOne.transferFrom(address,address,uint256)\",\"ZeroToOne.transferOwnership(address)\"],\"files\":{\".gitignore\":4,\"README.md\":72,\"foundry.toml\":25,\"launch.json\":10,\"src/ZeroToOne.sol\":49,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-LZBL-1.2\":42,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol\":362,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol\":331,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol\":157,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol\":81,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":89,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":19,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":26,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":68,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":32,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":9,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":33,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":41,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol\":17,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol\":34,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol\":30,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":102,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/package.json\":34,\"src/vendor/@layerzerolabs/oapp-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":39,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":85,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":138,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":125,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":52,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":22,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":42,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":27,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":99,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":121,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":55,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":38,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":62,\"src/vendor/@layerzerolabs/oapp-evm/package.json\":57,\"src/vendor/@layerzerolabs/oft-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol\":92,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol\":441,\"src/vendor/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":150,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":95,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":83,\"src/vendor/@layerzerolabs/oft-evm/package.json\":68,\"src/vendor/@openzeppelin/contracts/LICENSE\":22,\"src/vendor/@openzeppelin/contracts/access/Ownable.sol\":83,\"src/vendor/@openzeppelin/contracts/package.json\":32,\"src/vendor/@openzeppelin/contracts/token/ERC20/ERC20.sol\":366,\"src/vendor/@openzeppelin/contracts/token/ERC20/IERC20.sol\":78,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":28,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":83,\"src/vendor/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":143,\"src/vendor/@openzeppelin/contracts/utils/Address.sol\":240,\"src/vendor/@openzeppelin/contracts/utils/Context.sol\":28,\"src/vendor/@openzeppelin/contracts/utils/introspection/ERC165.sol\":29,\"src/vendor/@openzeppelin/contracts/utils/introspection/IERC165.sol\":25,\"src/vendor/README.md\":28,\"src/vendor/license-sources.json\":7,\"src/vendor/provenance.json\":26,\"test/Controls.t.sol\":172,\"test/Deployment.t.sol\":113,\"test/Receive.t.sol\":171,\"test/Send.t.sol\":261,\"test/helpers/BridgeFixture.sol\":168,\"test/vendor/forge-std/LICENSE-APACHE\":203,\"test/vendor/forge-std/LICENSE-MIT\":25,\"test/vendor/forge-std/provenance.json\":5,\"test/vendor/forge-std/src/Base.sol\":42,\"test/vendor/forge-std/src/Script.sol\":28,\"test/vendor/forge-std/src/StdAssertions.sol\":685,\"test/vendor/forge-std/src/StdChains.sol\":286,\"test/vendor/forge-std/src/StdCheats.sol\":829,\"test/vendor/forge-std/src/StdConstants.sol\":30,\"test/vendor/forge-std/src/StdError.sol\":15,\"test/vendor/forge-std/src/StdInvariant.sol\":122,\"test/vendor/forge-std/src/StdJson.sol\":277,\"test/vendor/forge-std/src/StdMath.sol\":43,\"test/vendor/forge-std/src/StdStorage.sol\":473,\"test/vendor/forge-std/src/StdStyle.sol\":333,\"test/vendor/forge-std/src/StdToml.sol\":277,\"test/vendor/forge-std/src/StdUtils.sol\":209,\"test/vendor/forge-std/src/Test.sol\":34,\"test/vendor/forge-std/src/Vm.sol\":2369,\"test/vendor/forge-std/src/console.sol\":1552,\"test/vendor/forge-std/src/console2.sol\":4,\"test/vendor/forge-std/src/interfaces/IERC1155.sol\":105,\"test/vendor/forge-std/src/interfaces/IERC165.sol\":12,\"test/vendor/forge-std/src/interfaces/IERC20.sol\":43,\"test/vendor/forge-std/src/interfaces/IERC4626.sol\":190,\"test/vendor/forge-std/src/interfaces/IERC6909.sol\":72,\"test/vendor/forge-std/src/interfaces/IERC721.sol\":164,\"test/vendor/forge-std/src/interfaces/IERC7540.sol\":144,\"test/vendor/forge-std/src/interfaces/IERC7575.sol\":241,\"test/vendor/forge-std/src/interfaces/IMulticall3.sol\":70,\"test/vendor/forge-std/src/safeconsole.sol\":13937},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true},{"durationMs":2842,"exitCode":0,"name":"slither","output":"[high/high] uninitialized-state at src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:233: OFTCore.msgInspector (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#55) is never initialized. It is used in:\n[medium/medium] divide-before-multiply at src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:355: OFTCore._removeDust(uint256) (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#355-357) performs a multiplication on the result of a division:\n[medium/high] incorrect-equality at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:286: EndpointV2._suppliedLzToken(bool) (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol#286-296) uses a dangerous strict equality:\n[medium/medium] unused-return at src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:233: OFTCore._buildMsgAndOptions(SendParam,uint256) (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#233-257) ignores return value by IOAppMsgInspector(inspector).inspect(message,options) (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#256)\n[low/high] shadowing-local at src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol:20: OFT.constructor(string,string,address,address)._symbol (src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol#20) shadows:\n[low/high] shadowing-local at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:49: EndpointV2.constructor(uint32,address)._owner (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol#49) shadows:\n[low/high] shadowing-local at src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol:20: OFT.constructor(string,string,address,address)._name (src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol#20) shadows:\n[low/medium] missing-zero-check at src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:32: OAppPreCrimeSimulator.setPreCrime(address)._preCrime (src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol#32) lacks a zero-check on :\n[low/medium] missing-zero-check at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:229: EndpointV2.setLzToken(address)._lzToken (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol#229) lacks a zero-check on :\n[low/medium] calls-loop at src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:45: OAppPreCrimeSimulator.lzReceiveAndRevert(InboundPacket[]) (src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol#45-66) has external calls inside a loop: this.lzReceiveSimulate{value: packet.value}(packet.origin,packet.guid,packet.message,packet.executor,packet.extraData) (src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol#59-61)\n[low/medium] reentrancy-events at src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:204: Reentrancy in OFTCore._send(SendParam,MessagingFee,address) (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#204-224):\n[low/medium] reentrancy-events at src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:270: Reentrancy in OFTCore._lzReceive(Origin,bytes32,bytes,address,bytes) (src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol#270-309):\n[low/medium] reentrancy-events at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:177: Reentrancy in EndpointV2.lzReceive(Origin,address,bytes32,bytes,bytes) (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol#177-188):\n[low/medium] reentrancy-events at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:119: Reentrancy in EndpointV2._send(address,MessagingParams) (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol#119-149):\n[low/medium] reentrancy-events at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:40: Reentrancy in MessagingComposer.lzCompose(address,address,bytes32,uint16,bytes,bytes) (src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol#40-60):","passed":true},{"durationMs":492,"exitCode":0,"name":"aderyn","output":"[high] reentrancy-state-change at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol:141: Reentrancy: State change after external call\n[high] unprotected-initializer at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:355: Unprotected initializer\n[low] centralization-risk at src/ZeroToOne.sol:32: Centralization Risk (19 places)\n[low] costly-loop at src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:42: Costly operations inside loop\n[low] empty-block at src/vendor/@openzeppelin/contracts/token/ERC20/ERC20.sol:349: Empty Block (2 places)\n[low] internal-function-used-once at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol:16: Internal Function Used Only Once (6 places)\n[low] literal-instead-of-constant at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:63: Literal Instead of Constant (12 places)\n[low] local-variable-shadowing at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:49: Local Variable Shadows State Variable\n[low] modifier-used-only-once at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:16: Modifier Invoked Only Once\n[low] require-revert-in-loop at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol:133: Loop Contains `require`/`revert` (2 places)\n[low] state-no-address-check at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:230: Address State Variable Set Without Checks (4 places)\n[low] state-variable-could-be-immutable at src/vendor/@openzeppelin/contracts/token/ERC20/ERC20.sol:45: State Variable Could Be Immutable (2 places)\n[low] unchecked-return at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:185: Unchecked Return (2 places)\n[low] unsafe-erc20-operation at src/vendor/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol:27: Unsafe ERC20 Operation (7 places)\n[low] unspecific-solidity-pragma at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:3: Unspecific Solidity Pragma (37 places)\n[low] unused-error at src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol:9: Unused Error (11 places)","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"39d44f8592cd07384820b3543d6960dfee09f25a5cde4cea934e21cf75005a36","verifiedTreeHash":"e835f318e4258427d927be7de674d8b639ba8409","verifierVersion":"0.1.0+e6140b7a"},{"checks":[{"durationMs":2845,"exitCode":0,"name":"build","output":"Compiling 82 files with Solc 0.8.26\nSolc 0.8.26 finished in 2.64s\nCompiler run successful!\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:13:19\n   │\n13 │ abstract contract OAppPreCrimeSimulator is IOAppPreCrimeSimulator, Ownable {\n   │                   ━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:11:18\n   │\n11 │         result = bytes32(_addressBytes);\n   │                  ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes32' 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[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:32:26\n   │\n32 │     function setPreCrime(address _preCrime) public virtual onlyOwner {\n   │                          ━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol:39:26\n   │\n39 │         result = address(bytes20(_addressBytes));\n   │                          ━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'bytes20' 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[calls-loop]: external call inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol:59:13\n   │\n59 │ ┏             this.lzReceiveSimulate{value: packet.value}(\n60 │ ┃                 packet.origin, packet.guid, packet.message, packet.executor, packet.extraData\n61 │ ┃             );\n   │ ┗━━━━━━━━━━━━━┛\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/calls-loop\n\nwarning[missing-events-access-control]: `composeQueue` is changed without an event but is used for access control\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:27:9\n   │\n27 │         composeQueue[msg.sender][_to][_guid][_index] = keccak256(_message);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/missing-events-access-control\n\nwarning[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:58:9\n   │\n58 │         ILayerZeroComposer(_to).lzCompose{value: msg.value}(_from, _guid, _message, msg.sender, _extraData);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol:59:9\n   │\n59 │         emit ComposeDelivered(_from, _to, _guid, _index);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[controlled-delegatecall]: `delegatecall` target is not provably trusted\n    ╭▸ src/vendor/@openzeppelin/contracts/utils/Address.sol:181:51\n    │\n181 │         (bool success, bytes memory returndata) = target.delegatecall(data);\n    │                                                   ━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/controlled-delegatecall\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:104:30\n    │\n104 │     function setMsgInspector(address _msgInspector) public virtual onlyOwner {\n    │                              ━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol:134:75\n    │\n134 │                     if (!_hasPayloadHash(_receiver, _srcEid, _sender, i)) revert Errors.LZ_InvalidNonce(i);\n    │                                                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:223:9\n    │\n223 │         emit OFTSent(msgReceipt.guid, _sendParam.dstEid, msg.sender, amountSentLD, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unused-return]: return value of an external call is not used\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:256:38\n    │\n256 │         if (inspector != address(0)) IOAppMsgInspector(inspector).inspect(message, options);\n    │                                      ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/unused-return\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:308:9\n    │\n308 │         emit OFTReceived(_guid, _origin.srcEid, toAddress, amountReceivedLD);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[divide-before-multiply]: division before multiplication may lose precision\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:356:16\n    │\n356 │         return (_amountLD / decimalConversionRate) * decimalConversionRate;\n    │                ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/divide-before-multiply\n\nwarning[reentrancy-events]: event emitted after an external call; reentrancy can reorder or fabricate logs that off-chain consumers rely on\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:146:9\n    │\n146 │         emit PacketSent(encodedPacket, _params.options, _sendLibrary);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[unsafe-typecast]: typecast can truncate values\n    ╭▸ src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol:379:16\n    │\n379 │         return uint64(_amountSD);\n    │                ━━━━━━━━━━━━━━━━━\n    │\n    ├ note: consider disabling this lint if you're certain the cast is safe\n    │       \n    │       // casting to 'uint64' 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[arbitrary-send-eth]: ETH is sent to a user-controlled destination; restrict the destination or the caller\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:186:9\n    │\n186 │         ILayerZeroReceiver(_receiver).lzReceive{value: msg.value}(_origin, _guid, _message, msg.sender, _extraData);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/arbitrary-send-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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:187:9\n    │\n187 │         emit PacketDelivered(_origin, _receiver);\n    │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[missing-zero-check]: address parameter is used in a state write or value transfer without a zero-address check\n    ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol:229:25\n    │\n229 │     function setLzToken(address _lzToken) public virtual onlyOwner {\n    │                         ━━━━━━━━━━━━━━━━\n    │\n    ╰ help: https://getfoundry.sh/forge/linting/missing-zero-check\n\nwarning[unsafe-typecast]: typecast can truncate values\n   ╭▸ src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:17\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                 ━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint32' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol:34:50\n   │\n34 │         return (uint32(_context >> 160), address(uint160(_context)));\n   │                                                  ━━━━━━━━━━━━━━━━━\n   │\n   ├ note: consider disabling this lint if you're certain the cast is safe\n   │       \n   │       // casting to 'uint160' 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/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol:149:9\n    │\n149 │         emit LibraryRegistered(_lib);\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/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:48:9\n   │\n48 │         emit EnforcedOptionSet(_enforcedOptions);\n   │         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/reentrancy-events\n\nwarning[require-revert-in-loop]: `require` or `revert` inside a loop\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol:97:43\n   │\n97 │         if (optionsType != OPTION_TYPE_3) revert InvalidOptions(_options);\n   │                                           ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/require-revert-in-loop\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol:17:19\n   │\n17 │ abstract contract OApp is OAppSender, OAppReceiver {\n   │                   ━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\nwarning[locked-ether]: contract can receive ETH but has no mechanism to send it out\n   ╭▸ src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol:12:19\n   │\n12 │ abstract contract OAppReceiver is IOAppReceiver, OAppCore {\n   │                   ━━━━━━━━━━━━\n   │\n   ╰ help: https://getfoundry.sh/forge/linting/locked-ether\n\n","passed":true},{"durationMs":129,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 9 tests for test/Controls.t.sol:ControlsTest\n[PASS] testAllAvailableAdministrationIsOwnerOnly() (gas: 153369)\n[PASS] testEnforcedOptionsCombineAndComposeUsesSeparateMessageType() (gas: 921887)\n[PASS] testErc20TransfersAndAllowancesPreserveSupply() (gas: 446514)\n[PASS] testEvenOwnerCannotReplaceRemoveOrAddPeer() (gas: 55709)\n[PASS] testInvalidOptionsAreRejectedBeforeSendCommits() (gas: 344400)\n[PASS] testNoMintPauseRescueOrUpgradeEntrypointsForOwner() (gas: 175747)\n[PASS] testOwnerCannotInstallExternalSendGate() (gas: 21627)\n[PASS] testOwnershipTransferDoesNotAutomaticallyChangeEndpointDelegate() (gas: 140825)\n[PASS] testVersionsAndLiveEndpointDelegate() (gas: 66897)\nSuite result: ok. 9 passed; 0 failed; 0 skipped; finished in 1.63ms (2.19ms CPU time)\n\nRan 7 tests for test/Deployment.t.sol:DeploymentTest\n[PASS] testConstructorDoesNotReadRemoteTokenDecimals() (gas: 113423)\n[PASS] testConstructorDoesNotSwallowLiveEndpointFailure() (gas: 101746)\n[PASS] testConstructorRegistersDelegateWhenEndpointHasCode() (gas: 352416)\n[PASS] testDeferredDelegateRegistrationIsOwnerOnly() (gas: 234027)\n[PASS] testDelegateRegistrationFailsUntilEndpointExists() (gas: 31153)\n[PASS] testFreshEvmCreate2DeploymentHasNoSupplyAndFixedConfiguration() (gas: 299625)\n[PASS] testRuntimeMeetsProtectedDeploymentConstraints() (gas: 8749764)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 18.57ms (15.12ms CPU time)\n\nRan 17 tests for test/Send.t.sol:SendTest\n[PASS] testDustRemainsWithSenderAndNoTokenFeeIsTaken() (gas: 509713)\n[PASS] testExcessQuotedNativeFeeIsRefundedByEndpoint() (gas: 481358)\n[PASS] testFuzzRoundTripConservesSupplyAndDust(uint64,uint256) (runs: 256, μ: 517896, ~: 506507)\nLogs:\n  Bound result 68\n\n[PASS] testLzTokenPaymentAndExcessRefund() (gas: 1420339)\n[PASS] testLzTokenPaymentWithoutAllowanceRollsBackBurn() (gas: 1032734)\n[PASS] testMaximumSharedAmountCanBeBurned() (gas: 500242)\n[PASS] testMessageLibraryFailureRollsBackBurn() (gas: 363312)\n[PASS] testMinimumAmountIncludesDustRemoval() (gas: 244490)\n[PASS] testNativeFeeMustMatchMsgValueAndBurnRollsBack() (gas: 318616)\n[PASS] testRefundReentrancyCannotReenterEndpointAndNestedBurnRollsBack() (gas: 1136916)\n[PASS] testSendBurnsCallerAndEncodesPeerRecipientAndSharedAmount() (gas: 593613)\n[PASS] testSendCannotBurnSomeoneElsesBalance() (gas: 244929)\n[PASS] testSharedDecimalOverflowRevertsQuoteAndSendWithoutTruncation() (gas: 388618)\n[PASS] testUnavailableLzTokenFailsQuoteAndSend() (gas: 283809)\n[PASS] testUnderpaidEndpointFeeRevertsAndRestoresBurnAndNonce() (gas: 498128)\n[PASS] testUnknownDestinationRevertsQuoteAndRollsBackBurn() (gas: 285277)\n[PASS] testZeroAndSubDustSendsPreserveStandardOftBehavior() (gas: 525116)\nSuite result: ok. 17 passed; 0 failed; 0 skipped; finished in 29.98ms (34.20ms CPU time)\n\nRan 15 tests for test/Receive.t.sol:ReceiveTest\n[PASS] testComposedReceiveMintsAndQueuesStandardPayload() (gas: 231896)\n[PASS] testEndpointCannotMintFromWrongChainOrEmptyPeer() (gas: 59305)\n[PASS] testEndpointCannotMintFromWrongPeer() (gas: 42182)\n[PASS] testEndpointRejectsReplayAndReverificationAfterDelivery() (gas: 278403)\n[PASS] testFuzzVerifiedCreditsScaleExactly(uint64) (runs: 256, μ: 206000, ~: 206923)\n[PASS] testMalformedVerifiedPayloadRevertsWithoutConsumingMessage() (gas: 158350)\n[PASS] testOnlyEndpointCanDeliverIncludingOwner() (gas: 66102)\n[PASS] testPayloadAndGuidAreBoundToVerification() (gas: 315106)\n[PASS] testSimulationCannotPersistMint() (gas: 132427)\n[PASS] testUnconfiguredLibraryCannotVerify() (gas: 51442)\n[PASS] testUnorderedDeliveryAfterBothPacketsVerified() (gas: 349871)\n[PASS] testUnverifiedPacketCannotBeExecuted() (gas: 49712)\n[PASS] testVerifiedMessageMintsAndEmitsReceipt() (gas: 205415)\n[PASS] testWrongPeerCannotInitializeEndpointPath() (gas: 48546)\n[PASS] testZeroRecipientUsesStandardOftDeadAddress() (gas: 217095)\nSuite result: ok. 15 passed; 0 failed; 0 skipped; finished in 30.00ms (17.73ms CPU time)\n\nRan 4 test suites in 30.62ms (80.19ms CPU time): 48 tests passed, 0 failed, 0 skipped (48 total tests)\n","passed":true},{"durationMs":67,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"BlockedMessageLib.fallback()\",\"ERC20.approve(address,uint256)\",\"ERC20.decreaseAllowance(address,uint256)\",\"ERC20.increaseAllowance(address,uint256)\",\"ERC20.transfer(address,uint256)\",\"ERC20.transferFrom(address,address,uint256)\",\"EndpointV2.burn(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.clear(address,(uint32,bytes32,uint64),bytes32,bytes)\",\"EndpointV2.lzCompose(address,address,bytes32,uint16,bytes,bytes)\",\"EndpointV2.lzComposeAlert(address,address,bytes32,uint16,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.lzReceive((uint32,bytes32,uint64),address,bytes32,bytes,bytes)\",\"EndpointV2.lzReceiveAlert((uint32,bytes32,uint64),address,bytes32,uint256,uint256,bytes,bytes,bytes)\",\"EndpointV2.nilify(address,uint32,bytes32,uint64,bytes32)\",\"EndpointV2.recoverToken(address,address,uint256)\",\"EndpointV2.registerLibrary(address)\",\"EndpointV2.renounceOwnership()\",\"EndpointV2.send((uint32,bytes32,bytes,bytes,bool),address)\",\"EndpointV2.sendCompose(address,bytes32,uint16,bytes)\",\"EndpointV2.setConfig(address,address,(uint32,uint32,bytes)[])\",\"EndpointV2.setDefaultReceiveLibrary(uint32,address,uint256)\",\"EndpointV2.setDefaultReceiveLibraryTimeout(uint32,address,uint256)\",\"EndpointV2.setDefaultSendLibrary(uint32,address)\",\"EndpointV2.setDelegate(address)\",\"EndpointV2.setLzToken(address)\",\"EndpointV2.setReceiveLibrary(address,uint32,address,uint256)\",\"EndpointV2.setReceiveLibraryTimeout(address,uint32,address,uint256)\",\"EndpointV2.setSendLibrary(address,uint32,address)\",\"EndpointV2.skip(address,uint32,bytes32,uint64)\",\"EndpointV2.transferOwnership(address)\",\"EndpointV2.verify((uint32,bytes32,uint64),address,bytes32)\",\"ZeroToOne.approve(address,uint256)\",\"ZeroToOne.decreaseAllowance(address,uint256)\",\"ZeroToOne.increaseAllowance(address,uint256)\",\"ZeroToOne.lzReceive((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.lzReceiveAndRevert(((uint32,bytes32,uint64),uint32,address,bytes32,uint256,address,bytes,bytes)[])\",\"ZeroToOne.lzReceiveSimulate((uint32,bytes32,uint64),bytes32,bytes,address,bytes)\",\"ZeroToOne.renounceOwnership()\",\"ZeroToOne.send((uint32,bytes32,uint256,uint256,bytes,bytes,bytes),(uint256,uint256),address)\",\"ZeroToOne.setDelegate(address)\",\"ZeroToOne.setEnforcedOptions((uint32,uint16,bytes)[])\",\"ZeroToOne.setPreCrime(address)\",\"ZeroToOne.transfer(address,uint256)\",\"ZeroToOne.transferFrom(address,address,uint256)\",\"ZeroToOne.transferOwnership(address)\"],\"files\":{\".gitignore\":4,\"README.md\":72,\"foundry.toml\":25,\"launch.json\":10,\"src/ZeroToOne.sol\":49,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-LZBL-1.2\":42,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/EndpointV2.sol\":362,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessageLibManager.sol\":331,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingChannel.sol\":157,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingComposer.sol\":81,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/MessagingContext.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroComposer.sol\":25,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroEndpointV2.sol\":89,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ILayerZeroReceiver.sol\":19,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLib.sol\":26,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessageLibManager.sol\":68,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingChannel.sol\":32,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingComposer.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/IMessagingContext.sol\":9,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/interfaces/ISendLib.sol\":33,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/AddressCast.sol\":41,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Errors.sol\":36,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/GUID.sol\":17,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/libs/Transfer.sol\":34,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/BlockedMessageLib.sol\":30,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/contracts/messagelib/libs/PacketV1Codec.sol\":102,\"src/vendor/@layerzerolabs/lz-evm-protocol-v2/package.json\":34,\"src/vendor/@layerzerolabs/oapp-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OApp.sol\":39,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppCore.sol\":85,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppReceiver.sol\":138,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/OAppSender.sol\":125,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppCore.sol\":52,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppMsgInspector.sol\":22,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppOptionsType3.sol\":42,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/interfaces/IOAppReceiver.sol\":27,\"src/vendor/@layerzerolabs/oapp-evm/contracts/oapp/libs/OAppOptionsType3.sol\":99,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/OAppPreCrimeSimulator.sol\":121,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol\":55,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/interfaces/IPreCrime.sol\":38,\"src/vendor/@layerzerolabs/oapp-evm/contracts/precrime/libs/Packet.sol\":62,\"src/vendor/@layerzerolabs/oapp-evm/package.json\":57,\"src/vendor/@layerzerolabs/oft-evm/LICENSE-MIT\":25,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFT.sol\":92,\"src/vendor/@layerzerolabs/oft-evm/contracts/OFTCore.sol\":441,\"src/vendor/@layerzerolabs/oft-evm/contracts/interfaces/IOFT.sol\":150,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTComposeMsgCodec.sol\":95,\"src/vendor/@layerzerolabs/oft-evm/contracts/libs/OFTMsgCodec.sol\":83,\"src/vendor/@layerzerolabs/oft-evm/package.json\":68,\"src/vendor/@openzeppelin/contracts/LICENSE\":22,\"src/vendor/@openzeppelin/contracts/access/Ownable.sol\":83,\"src/vendor/@openzeppelin/contracts/package.json\":32,\"src/vendor/@openzeppelin/contracts/token/ERC20/ERC20.sol\":366,\"src/vendor/@openzeppelin/contracts/token/ERC20/IERC20.sol\":78,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":28,\"src/vendor/@openzeppelin/contracts/token/ERC20/extensions/IERC20Permit.sol\":83,\"src/vendor/@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol\":143,\"src/vendor/@openzeppelin/contracts/utils/Address.sol\":240,\"src/vendor/@openzeppelin/contracts/utils/Context.sol\":28,\"src/vendor/@openzeppelin/contracts/utils/introspection/ERC165.sol\":29,\"src/vendor/@openzeppelin/contracts/utils/introspection/IERC165.sol\":25,\"src/vendor/README.md\":28,\"src/vendor/license-sources.json\":7,\"src/vendor/provenance.json\":26,\"test/Controls.t.sol\":172,\"test/Deployment.t.sol\":113,\"test/Receive.t.sol\":171,\"test/Send.t.sol\":261,\"test/helpers/BridgeFixture.sol\":168,\"test/vendor/forge-std/LICENSE-APACHE\":203,\"test/vendor/forge-std/LICENSE-MIT\":25,\"test/vendor/forge-std/provenance.json\":5,\"test/vendor/forge-std/src/Base.sol\":42,\"test/vendor/forge-std/src/Script.sol\":28,\"test/vendor/forge-std/src/StdAssertions.sol\":685,\"test/vendor/forge-std/src/StdChains.sol\":286,\"test/vendor/forge-std/src/StdCheats.sol\":829,\"test/vendor/forge-std/src/StdConstants.sol\":30,\"test/vendor/forge-std/src/StdError.sol\":15,\"test/vendor/forge-std/src/StdInvariant.sol\":122,\"test/vendor/forge-std/src/StdJson.sol\":277,\"test/vendor/forge-std/src/StdMath.sol\":43,\"test/vendor/forge-std/src/StdStorage.sol\":473,\"test/vendor/forge-std/src/StdStyle.sol\":333,\"test/vendor/forge-std/src/StdToml.sol\":277,\"test/vendor/forge-std/src/StdUtils.sol\":209,\"test/vendor/forge-std/src/Test.sol\":34,\"test/vendor/forge-std/src/Vm.sol\":2369,\"test/vendor/forge-std/src/console.sol\":1552,\"test/vendor/forge-std/src/console2.sol\":4,\"test/vendor/forge-std/src/interfaces/IERC1155.sol\":105,\"test/vendor/forge-std/src/interfaces/IERC165.sol\":12,\"test/vendor/forge-std/src/interfaces/IERC20.sol\":43,\"test/vendor/forge-std/src/interfaces/IERC4626.sol\":190,\"test/vendor/forge-std/src/interfaces/IERC6909.sol\":72,\"test/vendor/forge-std/src/interfaces/IERC721.sol\":164,\"test/vendor/forge-std/src/interfaces/IERC7540.sol\":144,\"test/vendor/forge-std/src/interfaces/IERC7575.sol\":241,\"test/vendor/forge-std/src/interfaces/IMulticall3.sol\":70,\"test/vendor/forge-std/src/safeconsole.sol\":13937},\"excluded\":[\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"f73f6c0836f3e403e2fd6871d230f7a06e25324d2b75e22f5f570625af233213","verifiedTreeHash":"00548d3f42e9105186d2b5023f73afb2b8783a66","verifierVersion":"0.1.0+e6140b7a"}]}