From b84d40d77c0d9c3d36fca7c5897d263670f2ff31 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Fri, 23 Aug 2024 01:43:18 +0000 Subject: [PATCH 1/4] Add new rescue functions to Lifebuoy --- .gas-snapshot | 1194 ++++++++++++++--------------- src/utils/Lifebuoy.sol | 113 ++- test/Lifebuoy.t.sol | 91 ++- test/utils/mocks/MockERC1155.sol | 10 + test/utils/mocks/MockLifebuoy.sol | 30 + 5 files changed, 800 insertions(+), 638 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 76b8b0e1d..e435d48fc 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,9 +1,9 @@ Base64Test:testBase64DecodeSentenceGas() (gas: 3663) Base64Test:testBase64DecodeShortStringGas() (gas: 896) -Base64Test:testBase64EncodeDecode(bytes) (runs: 261, μ: 5972, ~: 4968) -Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 261, μ: 894113, ~: 735512) +Base64Test:testBase64EncodeDecode(bytes) (runs: 314, μ: 6082, ~: 4968) +Base64Test:testBase64EncodeDecodeAltModes(bytes) (runs: 314, μ: 888442, ~: 735726) Base64Test:testBase64EncodeEmptyString() (gas: 902) -Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 261, μ: 15319, ~: 14264) +Base64Test:testBase64EncodeFileSafeAndNoPadding(bytes,bool,bool) (runs: 314, μ: 15808, ~: 14264) Base64Test:testBase64EncodeSentence() (gas: 4333) Base64Test:testBase64EncodeShortStrings() (gas: 7610) Base64Test:testBase64EncodeToStringWithDoublePadding() (gas: 1553) @@ -11,86 +11,86 @@ Base64Test:testBase64EncodeToStringWithNoPadding() (gas: 1531) Base64Test:testBase64EncodeToStringWithSinglePadding() (gas: 1487) Base64Test:testBase64WordBoundary() (gas: 11624) Base64Test:test__codesize() (gas: 6841) -BrutalizerTest:testBrutalizedAddress(bytes32,address) (runs: 261, μ: 1394, ~: 1330) -BrutalizerTest:testBrutalizedBool(bytes32,bool) (runs: 261, μ: 1149, ~: 1147) -BrutalizerTest:testBrutalizedBytes1(bytes32,bytes1) (runs: 261, μ: 1468, ~: 1397) -BrutalizerTest:testBrutalizedBytes31(bytes32,bytes31) (runs: 261, μ: 1417, ~: 1336) -BrutalizerTest:testBrutalizedUint248(bytes32,uint248) (runs: 261, μ: 1343, ~: 1287) -BrutalizerTest:testBrutalizedUint8(bytes32,uint8) (runs: 261, μ: 1289, ~: 1203) +BrutalizerTest:testBrutalizedAddress(bytes32,address) (runs: 314, μ: 1388, ~: 1330) +BrutalizerTest:testBrutalizedBool(bytes32,bool) (runs: 314, μ: 1138, ~: 741) +BrutalizerTest:testBrutalizedBytes1(bytes32,bytes1) (runs: 314, μ: 1464, ~: 1397) +BrutalizerTest:testBrutalizedBytes31(bytes32,bytes31) (runs: 314, μ: 1411, ~: 1336) +BrutalizerTest:testBrutalizedUint248(bytes32,uint248) (runs: 314, μ: 1341, ~: 1287) +BrutalizerTest:testBrutalizedUint8(bytes32,uint8) (runs: 314, μ: 1286, ~: 1203) BrutalizerTest:test__codesize() (gas: 2592) CREATE3Test:testDeployERC20() (gas: 781627) -CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 261, μ: 828295, ~: 827713) +CREATE3Test:testDeployERC20(bytes32,string,string,uint8) (runs: 314, μ: 827777, ~: 827713) CREATE3Test:testDeployedUpperBitsSafeForPlainSolidity() (gas: 613) CREATE3Test:testDoubleDeployDifferentBytecodeReverts() (gas: 96898738) -CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 261, μ: 96880352, ~: 96880365) +CREATE3Test:testDoubleDeployDifferentBytecodeReverts(bytes32,bytes,bytes) (runs: 314, μ: 96880302, ~: 96880242) CREATE3Test:testDoubleDeploySameBytecodeReverts() (gas: 96889196) -CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 261, μ: 96881062, ~: 96880999) +CREATE3Test:testDoubleDeploySameBytecodeReverts(bytes32,bytes) (runs: 314, μ: 96881053, ~: 96880998) CREATE3Test:test__codesize() (gas: 13862) -DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 261, μ: 4202, ~: 4209) -DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 261, μ: 4144, ~: 4155) -DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 261, μ: 4140, ~: 4129) -DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 261, μ: 7247, ~: 7257) -DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 261, μ: 3757, ~: 3721) -DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 261, μ: 6811, ~: 6822) +DateTimeLibTest:testAddSubDiffDays(uint256,uint256) (runs: 314, μ: 4204, ~: 4209) +DateTimeLibTest:testAddSubDiffHours(uint256,uint256) (runs: 314, μ: 4146, ~: 4155) +DateTimeLibTest:testAddSubDiffMinutes(uint256,uint256) (runs: 314, μ: 4141, ~: 4129) +DateTimeLibTest:testAddSubDiffMonths(uint256,uint256) (runs: 314, μ: 7251, ~: 7257) +DateTimeLibTest:testAddSubDiffSeconds(uint256,uint256) (runs: 314, μ: 3757, ~: 3721) +DateTimeLibTest:testAddSubDiffYears(uint256,uint256) (runs: 314, μ: 6815, ~: 6822) DateTimeLibTest:testDateTimeArithmeticReverts() (gas: 4495) DateTimeLibTest:testDateTimeMaxSupported() (gas: 2823) -DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 261, μ: 4139, ~: 4089) -DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 261, μ: 2562, ~: 2541) +DateTimeLibTest:testDateTimeToAndFroTimestamp((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 314, μ: 4136, ~: 4089) +DateTimeLibTest:testDateToAndFroEpochDay((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 314, μ: 2564, ~: 2581) DateTimeLibTest:testDateToAndFroEpochDay() (gas: 877945) DateTimeLibTest:testDateToAndFroTimestamp() (gas: 926776) DateTimeLibTest:testDateToEpochDay() (gas: 1559) -DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 261, μ: 2300, ~: 2299) -DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 261, μ: 2223, ~: 2202) +DateTimeLibTest:testDateToEpochDayDifferential((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 314, μ: 2302, ~: 2315) +DateTimeLibTest:testDateToEpochDayDifferential2((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 314, μ: 2225, ~: 2242) DateTimeLibTest:testDateToEpochDayGas() (gas: 764427) DateTimeLibTest:testDateToEpochDayGas2() (gas: 770404) DateTimeLibTest:testDayOfWeek() (gas: 175255) DateTimeLibTest:testDaysInMonth() (gas: 1226) -DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 261, μ: 1071, ~: 1084) +DateTimeLibTest:testDaysInMonth(uint256,uint256) (runs: 314, μ: 1069, ~: 1084) DateTimeLibTest:testDaysToDate() (gas: 8377) -DateTimeLibTest:testEpochDayToDate(uint256) (runs: 261, μ: 1045, ~: 1045) -DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 261, μ: 1776, ~: 1721) -DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 261, μ: 1784, ~: 1709) +DateTimeLibTest:testEpochDayToDate(uint256) (runs: 314, μ: 1045, ~: 1045) +DateTimeLibTest:testEpochDayToDateDifferential(uint256) (runs: 314, μ: 1778, ~: 1721) +DateTimeLibTest:testEpochDayToDateDifferential2(uint256) (runs: 314, μ: 1786, ~: 1709) DateTimeLibTest:testEpochDayToDateGas() (gas: 348457) DateTimeLibTest:testEpochDayToDateGas2() (gas: 360513) DateTimeLibTest:testIsLeapYear() (gas: 741) -DateTimeLibTest:testIsLeapYear(uint256) (runs: 261, μ: 537, ~: 517) +DateTimeLibTest:testIsLeapYear(uint256) (runs: 314, μ: 537, ~: 517) DateTimeLibTest:testIsSupportedDateFalse() (gas: 1180) -DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 261, μ: 2966, ~: 2949) +DateTimeLibTest:testIsSupportedDateTime((uint256,uint256,uint256,uint256,uint256,uint256)) (runs: 314, μ: 2952, ~: 2949) DateTimeLibTest:testIsSupportedDateTrue() (gas: 626) DateTimeLibTest:testIsSupportedEpochDayFalse() (gas: 494) DateTimeLibTest:testIsSupportedEpochDayTrue() (gas: 305) DateTimeLibTest:testIsSupportedTimestampFalse() (gas: 541) DateTimeLibTest:testIsSupportedTimestampTrue() (gas: 326) -DateTimeLibTest:testIsWeekEnd(uint256) (runs: 261, μ: 690, ~: 617) +DateTimeLibTest:testIsWeekEnd(uint256) (runs: 314, μ: 693, ~: 617) DateTimeLibTest:testMondayTimestamp() (gas: 1106) -DateTimeLibTest:testMondayTimestamp(uint256) (runs: 261, μ: 765, ~: 836) +DateTimeLibTest:testMondayTimestamp(uint256) (runs: 314, μ: 768, ~: 836) DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp() (gas: 12053) -DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 261, μ: 3541, ~: 3589) +DateTimeLibTest:testNthWeekdayInMonthOfYearTimestamp(uint256,uint256,uint256,uint256) (runs: 314, μ: 3529, ~: 3576) DateTimeLibTest:testWeekday() (gas: 682) DateTimeLibTest:test__codesize() (gas: 19163) DelegateCheckerLibTest:testCheckDelegateForAll() (gas: 36319) -DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 261, μ: 229704, ~: 237916) +DelegateCheckerLibTest:testCheckDelegateForAll(address,address,bytes32) (runs: 314, μ: 231168, ~: 244674) DelegateCheckerLibTest:testCheckDelegateForContract() (gas: 55887) -DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 261, μ: 359999, ~: 313385) +DelegateCheckerLibTest:testCheckDelegateForContract(address,address,address,bytes32) (runs: 314, μ: 358469, ~: 311985) DelegateCheckerLibTest:testCheckDelegateForERC1155() (gas: 64282) -DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 261, μ: 290438, ~: 303781) +DelegateCheckerLibTest:testCheckDelegateForERC1155(address,address,address,uint256,bytes32) (runs: 314, μ: 304765, ~: 305427) DelegateCheckerLibTest:testCheckDelegateForERC20() (gas: 63763) -DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 261, μ: 298520, ~: 282300) +DelegateCheckerLibTest:testCheckDelegateForERC20(address,address,address,bytes32) (runs: 314, μ: 304781, ~: 282769) DelegateCheckerLibTest:testCheckDelegateForERC721() (gas: 71988) -DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 261, μ: 432360, ~: 396615) +DelegateCheckerLibTest:testCheckDelegateForERC721(address,address,address,uint256,bytes32) (runs: 314, μ: 431654, ~: 401808) DelegateCheckerLibTest:test__codesize() (gas: 32210) -DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 261, μ: 266699, ~: 222145) +DeploylessPredeployQueryerTest:testPredeployQueryer(bytes32) (runs: 314, μ: 268500, ~: 222321) DeploylessPredeployQueryerTest:testTargetGenerate() (gas: 363686) DeploylessPredeployQueryerTest:test__codesize() (gas: 8284) -DynamicBufferLibTest:testClear(uint256) (runs: 261, μ: 34640, ~: 34750) -DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 261, μ: 859670, ~: 787148) -DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 261, μ: 841573, ~: 677542) +DynamicBufferLibTest:testClear(uint256) (runs: 314, μ: 34648, ~: 34756) +DynamicBufferLibTest:testDynamicBuffer(bytes[],uint256) (runs: 314, μ: 862427, ~: 789133) +DynamicBufferLibTest:testDynamicBuffer(uint256) (runs: 314, μ: 826820, ~: 677542) DynamicBufferLibTest:testDynamicBufferChaining() (gas: 12661) -DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 261, μ: 216118, ~: 34171) +DynamicBufferLibTest:testDynamicBufferPushSingles(uint256,uint256,uint256) (runs: 314, μ: 211203, ~: 34251) DynamicBufferLibTest:testDynamicBufferPushSinglesReinterpretCast() (gas: 21959) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty() (gas: 2754) DynamicBufferLibTest:testDynamicBufferReserveFromEmpty2() (gas: 2463) -DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 261, μ: 2858, ~: 2099) +DynamicBufferLibTest:testDynamicBufferReserveFromEmpty3(bytes,uint256) (runs: 314, μ: 2883, ~: 2099) DynamicBufferLibTest:testJoinWithConcat() (gas: 31429) DynamicBufferLibTest:testJoinWithDynamicBuffer() (gas: 10830) DynamicBufferLibTest:test__codesize() (gas: 12735) @@ -100,15 +100,15 @@ ECDSATest:testBytesToEthSignedMessageHashEmpty() (gas: 556) ECDSATest:testBytesToEthSignedMessageHashExceedsMaxLengthReverts() (gas: 615885) ECDSATest:testBytesToEthSignedMessageHashLong() (gas: 725) ECDSATest:testBytesToEthSignedMessageHashShort() (gas: 576) -ECDSATest:testCanonicalHash(bytes32) (runs: 261, μ: 137894, ~: 39132) +ECDSATest:testCanonicalHash(bytes32) (runs: 314, μ: 138008, ~: 39025) ECDSATest:testCanonicalHashCalldataWith64bytesSignature() (gas: 1232939) ECDSATest:testCanonicalHashCalldataWithRegularSignature() (gas: 1232433) ECDSATest:testCanonicalHashWith64bytesSignature() (gas: 614272) ECDSATest:testCanonicalHashWithRegularSignature() (gas: 612711) ECDSATest:testEmptyCalldataHelpers() (gas: 3268) ECDSATest:testMalleabilityTrick() (gas: 2564) -ECDSATest:testMalleabilityTrick(uint256) (runs: 261, μ: 450, ~: 449) -ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 261, μ: 2871979, ~: 2534778) +ECDSATest:testMalleabilityTrick(uint256) (runs: 314, μ: 450, ~: 449) +ECDSATest:testRecoverAndTryRecover(bytes32) (runs: 314, μ: 2944595, ~: 2534914) ECDSATest:testRecoverWithInvalidLongSignatureReverts() (gas: 7395) ECDSATest:testRecoverWithInvalidShortSignatureReturnsZero() (gas: 7231) ECDSATest:testRecoverWithInvalidSignatureReverts() (gas: 8018) @@ -156,62 +156,62 @@ EIP712Test:testHashTypedDataOnDynamic() (gas: 44610) EIP712Test:testHashTypedDataOnDynamicWithChaindIdChange() (gas: 56340) EIP712Test:testHashTypedDataWithChaindIdChange() (gas: 45554) EIP712Test:test__codesize() (gas: 11394) -ERC1155HooksTest:testERC1155Hooks() (gas: 4455672) -ERC1155HooksTest:test__codesize() (gas: 11723) -ERC1155Test:testApproveAll(address,bool) (runs: 261, μ: 49282, ~: 58445) -ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 261, μ: 715, ~: 715) -ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 261, μ: 31992, ~: 34844) -ERC1155Test:testBatchBalanceOf(uint256) (runs: 261, μ: 148910, ~: 150979) -ERC1155Test:testBatchBurn(uint256) (runs: 261, μ: 203667, ~: 177474) -ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 261, μ: 198957, ~: 187605) -ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 261, μ: 54251, ~: 52238) -ERC1155Test:testBatchMintToEOA(uint256) (runs: 261, μ: 156220, ~: 151447) -ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 261, μ: 1112541, ~: 739641) -ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 261, μ: 190927, ~: 186296) -ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 261, μ: 366430, ~: 367283) -ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 261, μ: 320170, ~: 284568) -ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 261, μ: 96192, ~: 90850) -ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 261, μ: 43658, ~: 35934) -ERC1155Test:testBurn(uint256) (runs: 261, μ: 118841, ~: 104481) -ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 261, μ: 130129, ~: 106096) -ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 261, μ: 25739, ~: 16060) -ERC1155Test:testMintToEOA(uint256) (runs: 261, μ: 91250, ~: 80936) -ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 261, μ: 1489937, ~: 661051) -ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 261, μ: 119432, ~: 103744) -ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 261, μ: 298668, ~: 284244) -ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 261, μ: 258575, ~: 238889) -ERC1155Test:testMintToZeroReverts(uint256) (runs: 261, μ: 55013, ~: 33629) -ERC1155Test:testSafeBatchTransfer() (gas: 8304444) -ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 261, μ: 256180, ~: 260776) -ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 261, μ: 2774766, ~: 987560) -ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 261, μ: 271330, ~: 270088) -ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 261, μ: 451980, ~: 449735) -ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 261, μ: 411180, ~: 405119) -ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 261, μ: 191048, ~: 175108) -ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 261, μ: 75736, ~: 68039) -ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 261, μ: 223823, ~: 191378) -ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 261, μ: 140042, ~: 110081) -ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 261, μ: 148946, ~: 118228) -ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 261, μ: 121409, ~: 81939) -ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 261, μ: 165598, ~: 132569) -ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 261, μ: 1407704, ~: 742687) -ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 261, μ: 183269, ~: 152213) -ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 261, μ: 358767, ~: 333237) -ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 261, μ: 319962, ~: 287861) -ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 261, μ: 116284, ~: 81909) -ERC1155Test:test__codesize() (gas: 41876) +ERC1155HooksTest:testERC1155Hooks() (gas: 4543936) +ERC1155HooksTest:test__codesize() (gas: 11851) +ERC1155Test:testApproveAll(address,bool) (runs: 314, μ: 49349, ~: 58445) +ERC1155Test:testAuthorizedEquivalence(address,address,bool) (runs: 314, μ: 715, ~: 715) +ERC1155Test:testBalanceOfBatchWithArrayMismatchReverts(uint256) (runs: 314, μ: 32106, ~: 34892) +ERC1155Test:testBatchBalanceOf(uint256) (runs: 314, μ: 175100, ~: 173531) +ERC1155Test:testBatchBurn(uint256) (runs: 314, μ: 215357, ~: 195717) +ERC1155Test:testBatchBurnInsufficientBalanceReverts(uint256) (runs: 314, μ: 227388, ~: 212194) +ERC1155Test:testBatchBurnWithArrayLengthMismatchReverts(uint256) (runs: 314, μ: 55518, ~: 54939) +ERC1155Test:testBatchMintToEOA(uint256) (runs: 314, μ: 176569, ~: 173110) +ERC1155Test:testBatchMintToERC1155Recipient(uint256) (runs: 314, μ: 1467283, ~: 792999) +ERC1155Test:testBatchMintToNonERC1155RecipientReverts(uint256) (runs: 314, μ: 196738, ~: 186357) +ERC1155Test:testBatchMintToRevertingERC1155RecipientReverts(uint256) (runs: 314, μ: 374754, ~: 367396) +ERC1155Test:testBatchMintToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 314, μ: 314254, ~: 288012) +ERC1155Test:testBatchMintToZeroReverts(uint256) (runs: 314, μ: 103809, ~: 86479) +ERC1155Test:testBatchMintWithArrayMismatchReverts(uint256) (runs: 314, μ: 47536, ~: 36002) +ERC1155Test:testBurn(uint256) (runs: 314, μ: 135449, ~: 126808) +ERC1155Test:testBurnInsufficientBalanceReverts(uint256) (runs: 314, μ: 147792, ~: 128180) +ERC1155Test:testDirectSetApprovalForAll(address,address,bool) (runs: 314, μ: 25625, ~: 16060) +ERC1155Test:testMintToEOA(uint256) (runs: 314, μ: 122031, ~: 103222) +ERC1155Test:testMintToERC1155Recipient(uint256) (runs: 314, μ: 1175214, ~: 684238) +ERC1155Test:testMintToNonERC155RecipientReverts(uint256) (runs: 314, μ: 117597, ~: 103741) +ERC1155Test:testMintToRevertingERC155RecipientReverts(uint256) (runs: 314, μ: 301753, ~: 284212) +ERC1155Test:testMintToWrongReturnDataERC155RecipientReverts(uint256) (runs: 314, μ: 253734, ~: 238868) +ERC1155Test:testMintToZeroReverts(uint256) (runs: 314, μ: 55599, ~: 33636) +ERC1155Test:testSafeBatchTransfer() (gas: 8332973) +ERC1155Test:testSafeBatchTransferFromToEOA(uint256) (runs: 314, μ: 281994, ~: 285187) +ERC1155Test:testSafeBatchTransferFromToERC1155Recipient(uint256) (runs: 314, μ: 2433423, ~: 1001041) +ERC1155Test:testSafeBatchTransferFromToNonERC1155RecipientReverts(uint256) (runs: 314, μ: 294641, ~: 292277) +ERC1155Test:testSafeBatchTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 314, μ: 481786, ~: 472224) +ERC1155Test:testSafeBatchTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 314, μ: 439276, ~: 427981) +ERC1155Test:testSafeBatchTransferFromToZeroReverts(uint256) (runs: 314, μ: 217731, ~: 198348) +ERC1155Test:testSafeBatchTransferFromWithArrayLengthMismatchReverts(uint256) (runs: 314, μ: 73481, ~: 68200) +ERC1155Test:testSafeBatchTransferInsufficientBalanceReverts(uint256) (runs: 314, μ: 246705, ~: 220084) +ERC1155Test:testSafeTransferFromInsufficientBalanceReverts(uint256) (runs: 314, μ: 158537, ~: 132551) +ERC1155Test:testSafeTransferFromSelf(uint256) (runs: 314, μ: 173078, ~: 140558) +ERC1155Test:testSafeTransferFromSelfInsufficientBalanceReverts(uint256) (runs: 314, μ: 146155, ~: 103971) +ERC1155Test:testSafeTransferFromToEOA(uint256) (runs: 314, μ: 171913, ~: 155215) +ERC1155Test:testSafeTransferFromToERC1155Recipient(uint256) (runs: 314, μ: 1523434, ~: 764490) +ERC1155Test:testSafeTransferFromToNonERC155RecipientReverts(uint256) (runs: 314, μ: 200891, ~: 173683) +ERC1155Test:testSafeTransferFromToRevertingERC1155RecipientReverts(uint256) (runs: 314, μ: 387938, ~: 354923) +ERC1155Test:testSafeTransferFromToWrongReturnDataERC1155RecipientReverts(uint256) (runs: 314, μ: 342299, ~: 310064) +ERC1155Test:testSafeTransferFromToZeroReverts(uint256) (runs: 314, μ: 137564, ~: 103593) +ERC1155Test:test__codesize() (gas: 42015) ERC1271Test:testBasefeeBytecodeContract() (gas: 45430) ERC1271Test:testIsValidSignature() (gas: 2390984) -ERC1271Test:testIsValidSignature(uint256) (runs: 261, μ: 254304, ~: 211073) +ERC1271Test:testIsValidSignature(uint256) (runs: 314, μ: 248834, ~: 210746) ERC1271Test:testSupportsNestedTypedDataSign() (gas: 165249) ERC1271Test:test__codesize() (gas: 29885) ERC1967FactoryTest:testChangeAdmin() (gas: 266261) ERC1967FactoryTest:testChangeAdminUnauthorized() (gas: 257261) ERC1967FactoryTest:testDeploy() (gas: 257129) -ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 261, μ: 340277, ~: 340876) +ERC1967FactoryTest:testDeployAndCall(uint256) (runs: 314, μ: 340240, ~: 340867) ERC1967FactoryTest:testDeployAndCallWithRevert() (gas: 211629) -ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 261, μ: 96946, ~: 43744) -ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 261, μ: 318574, ~: 349794) +ERC1967FactoryTest:testDeployBrutalized(uint256) (runs: 314, μ: 99187, ~: 43744) +ERC1967FactoryTest:testDeployDeterministicAndCall(uint256) (runs: 314, μ: 317663, ~: 349793) ERC1967FactoryTest:testFactoryDeployment() (gas: 494423) ERC1967FactoryTest:testProxyFails() (gas: 258426) ERC1967FactoryTest:testProxySucceeds() (gas: 255451) @@ -224,45 +224,45 @@ ERC1967FactoryTest:test__codesize() (gas: 32273) ERC20Invariants:invariantBalanceSum() (runs: 10, calls: 150, reverts: 83) ERC20Invariants:test__codesize() (gas: 7280) ERC20Test:testApprove() (gas: 35730) -ERC20Test:testApprove(address,uint256) (runs: 261, μ: 31104, ~: 31181) +ERC20Test:testApprove(address,uint256) (runs: 314, μ: 31054, ~: 31181) ERC20Test:testBurn() (gas: 62424) -ERC20Test:testBurn(address,uint256,uint256) (runs: 261, μ: 62621, ~: 63044) -ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 261, μ: 56665, ~: 56954) -ERC20Test:testDirectSpendAllowance(uint256) (runs: 261, μ: 61817, ~: 62096) -ERC20Test:testDirectTransfer(uint256) (runs: 261, μ: 99579, ~: 86779) +ERC20Test:testBurn(address,uint256,uint256) (runs: 314, μ: 62467, ~: 63044) +ERC20Test:testBurnInsufficientBalanceReverts(address,uint256,uint256) (runs: 314, μ: 56593, ~: 56959) +ERC20Test:testDirectSpendAllowance(uint256) (runs: 314, μ: 61797, ~: 61563) +ERC20Test:testDirectTransfer(uint256) (runs: 314, μ: 99721, ~: 112559) ERC20Test:testInfiniteApproveTransferFrom() (gas: 90855) ERC20Test:testMetadata() (gas: 16516) ERC20Test:testMint() (gas: 58888) -ERC20Test:testMint(address,uint256) (runs: 261, μ: 58979, ~: 59131) +ERC20Test:testMint(address,uint256) (runs: 314, μ: 58878, ~: 59131) ERC20Test:testMintOverMaxUintReverts() (gas: 56350) ERC20Test:testPermit() (gas: 89369) -ERC20Test:testPermit(uint256) (runs: 261, μ: 89455, ~: 89460) -ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 261, μ: 41222, ~: 41222) -ERC20Test:testPermitBadNonceReverts(uint256) (runs: 261, μ: 41646, ~: 41592) -ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 261, μ: 35760, ~: 35756) -ERC20Test:testPermitReplayReverts(uint256) (runs: 261, μ: 92172, ~: 92166) +ERC20Test:testPermit(uint256) (runs: 314, μ: 89461, ~: 89461) +ERC20Test:testPermitBadDeadlineReverts(uint256) (runs: 314, μ: 41222, ~: 41221) +ERC20Test:testPermitBadNonceReverts(uint256) (runs: 314, μ: 41647, ~: 41595) +ERC20Test:testPermitPastDeadlineReverts(uint256) (runs: 314, μ: 35758, ~: 35752) +ERC20Test:testPermitReplayReverts(uint256) (runs: 314, μ: 92171, ~: 92166) ERC20Test:testTransfer() (gas: 65884) -ERC20Test:testTransfer(address,uint256) (runs: 261, μ: 65948, ~: 66100) +ERC20Test:testTransfer(address,uint256) (runs: 314, μ: 65847, ~: 66100) ERC20Test:testTransferFrom() (gas: 86323) -ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 261, μ: 93380, ~: 95625) +ERC20Test:testTransferFrom(address,address,address,uint256,uint256) (runs: 314, μ: 93180, ~: 95625) ERC20Test:testTransferFromInsufficientAllowanceReverts() (gas: 82333) -ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 261, μ: 82712, ~: 82848) +ERC20Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256) (runs: 314, μ: 82677, ~: 82853) ERC20Test:testTransferFromInsufficientBalanceReverts() (gas: 62681) -ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 261, μ: 63350, ~: 63283) +ERC20Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256) (runs: 314, μ: 63302, ~: 63331) ERC20Test:testTransferInsufficientBalanceReverts() (gas: 56494) -ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 261, μ: 56724, ~: 57013) +ERC20Test:testTransferInsufficientBalanceReverts(address,uint256,uint256) (runs: 314, μ: 56652, ~: 57018) ERC20Test:test__codesize() (gas: 22610) -ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 261, μ: 480, ~: 480) -ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 261, μ: 108803, ~: 105296) +ERC2981Test:testRoyaltyOverflowCheckDifferential(uint256,uint256) (runs: 314, μ: 479, ~: 480) +ERC2981Test:testSetAndGetRoyaltyInfo(uint256) (runs: 314, μ: 108768, ~: 105306) ERC2981Test:test__codesize() (gas: 7229) ERC4337FactoryTest:testCreateAccountRepeatedDeployment() (gas: 149753) -ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 261, μ: 171340, ~: 171396) -ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 261, μ: 131563, ~: 139605) +ERC4337FactoryTest:testCreateAccountRepeatedDeployment(uint256) (runs: 314, μ: 171339, ~: 171396) +ERC4337FactoryTest:testDeployDeterministic(uint256) (runs: 314, μ: 131971, ~: 139611) ERC4337FactoryTest:test__codesize() (gas: 13112) ERC4337Test:testCdFallback() (gas: 438041) ERC4337Test:testCdFallback2() (gas: 1135303) ERC4337Test:testDelegateExecute() (gas: 366407) -ERC4337Test:testDelegateExecute(uint256) (runs: 261, μ: 355956, ~: 345250) +ERC4337Test:testDelegateExecute(uint256) (runs: 314, μ: 355658, ~: 345250) ERC4337Test:testDelegateExecuteRevertsIfOwnerSlotValueChanged() (gas: 320067) ERC4337Test:testDepositFunctions() (gas: 497221) ERC4337Test:testDirectStorage() (gas: 70503) @@ -270,29 +270,29 @@ ERC4337Test:testDisableInitializerForImplementation() (gas: 1348481) ERC4337Test:testETHReceived() (gas: 16584) ERC4337Test:testExecute() (gas: 383460) ERC4337Test:testExecuteBatch() (gas: 694187) -ERC4337Test:testExecuteBatch(uint256) (runs: 261, μ: 542298, ~: 670564) +ERC4337Test:testExecuteBatch(uint256) (runs: 314, μ: 545374, ~: 670564) ERC4337Test:testInitializer() (gas: 285469) ERC4337Test:testIsValidSignature() (gas: 120476) -ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 261, μ: 103738, ~: 103879) +ERC4337Test:testIsValidSignaturePersonalSign(bytes32) (runs: 314, μ: 103745, ~: 103879) ERC4337Test:testIsValidSignatureViaRPC() (gas: 96881551) ERC4337Test:testIsValidSignatureWrapped() (gas: 446377) -ERC4337Test:testOnERC1155BatchReceived() (gas: 1417204) -ERC4337Test:testOnERC1155Received() (gas: 1416839) +ERC4337Test:testOnERC1155BatchReceived() (gas: 1467437) +ERC4337Test:testOnERC1155Received() (gas: 1467093) ERC4337Test:testOnERC721Received() (gas: 1387505) ERC4337Test:testOwnerRecovery() (gas: 479697) ERC4337Test:testValidateUserOp() (gas: 484693) -ERC4337Test:test__codesize() (gas: 55808) +ERC4337Test:test__codesize() (gas: 55947) ERC4626Test:testDepositWithNoApprovalReverts() (gas: 16954) ERC4626Test:testDepositWithNotEnoughApprovalReverts() (gas: 90752) -ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 261, μ: 3315, ~: 3107) +ERC4626Test:testDifferentialFullMulDiv(uint256,uint256,uint256) (runs: 314, μ: 3318, ~: 3107) ERC4626Test:testMetadata() (gas: 14354) ERC4626Test:testMintWithNoApprovalReverts() (gas: 16928) ERC4626Test:testMintZero() (gas: 53930) ERC4626Test:testMultipleMintDepositRedeemWithdraw() (gas: 412871) ERC4626Test:testRedeemWithNoShareAmountReverts() (gas: 10918) ERC4626Test:testRedeemWithNotEnoughShareAmountReverts() (gas: 143777) -ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 261, μ: 202557, ~: 202561) -ERC4626Test:testSingleMintRedeem(uint128) (runs: 261, μ: 201522, ~: 201527) +ERC4626Test:testSingleDepositWithdraw(uint128) (runs: 314, μ: 202556, ~: 202560) +ERC4626Test:testSingleMintRedeem(uint128) (runs: 314, μ: 201522, ~: 201525) ERC4626Test:testTryGetAssetDecimals() (gas: 30700474) ERC4626Test:testUseVirtualShares() (gas: 2428448) ERC4626Test:testVaultInteractionsForSomeoneElse() (gas: 297836) @@ -303,292 +303,292 @@ ERC4626Test:testWithdrawZero() (gas: 52056) ERC4626Test:test__codesize() (gas: 36907) ERC6551Test:testBaseFeeMini() (gas: 39514) ERC6551Test:testCdFallback() (gas: 895614) -ERC6551Test:testDeployERC6551(uint256) (runs: 261, μ: 170219, ~: 168568) +ERC6551Test:testDeployERC6551(uint256) (runs: 314, μ: 169987, ~: 168568) ERC6551Test:testDeployERC6551Proxy() (gas: 80395) ERC6551Test:testExecute() (gas: 507328) ERC6551Test:testExecuteBatch() (gas: 817415) -ERC6551Test:testExecuteBatch(uint256) (runs: 261, μ: 639245, ~: 571189) +ERC6551Test:testExecuteBatch(uint256) (runs: 314, μ: 644054, ~: 762178) ERC6551Test:testInitializeERC6551ProxyImplementation() (gas: 189976) -ERC6551Test:testIsValidSigner(address) (runs: 261, μ: 167337, ~: 167324) -ERC6551Test:testOnERC1155BatchReceived() (gas: 1552566) -ERC6551Test:testOnERC1155Received() (gas: 1549762) +ERC6551Test:testIsValidSigner(address) (runs: 314, μ: 167335, ~: 167323) +ERC6551Test:testOnERC1155BatchReceived() (gas: 1602799) +ERC6551Test:testOnERC1155Received() (gas: 1600016) ERC6551Test:testOnERC721Received() (gas: 1523963) ERC6551Test:testOnERC721ReceivedCycles() (gas: 2975498) -ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 261, μ: 452199, ~: 457582) -ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 261, μ: 1386676, ~: 1386687) +ERC6551Test:testOnERC721ReceivedCyclesWithDifferentChainIds(uint256) (runs: 314, μ: 452624, ~: 457650) +ERC6551Test:testOwnerWorksWithChainIdChange(uint256,uint256) (runs: 314, μ: 1386677, ~: 1386687) ERC6551Test:testSupportsInterface() (gas: 168994) -ERC6551Test:testUpdateState(uint256) (runs: 261, μ: 234751, ~: 234661) +ERC6551Test:testUpdateState(uint256) (runs: 314, μ: 234735, ~: 234661) ERC6551Test:testUpgrade() (gas: 248410) -ERC6551Test:test__codesize() (gas: 50858) +ERC6551Test:test__codesize() (gas: 50997) ERC6909Test:testApprove() (gas: 37066) -ERC6909Test:testApprove(address,uint256,uint256) (runs: 261, μ: 37632, ~: 37708) +ERC6909Test:testApprove(address,uint256,uint256) (runs: 314, μ: 37581, ~: 37708) ERC6909Test:testBurn() (gas: 41275) -ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 261, μ: 41063, ~: 41786) -ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 261, μ: 35488, ~: 35627) +ERC6909Test:testBurn(address,uint256,uint256,uint256) (runs: 314, μ: 41097, ~: 41786) +ERC6909Test:testBurnInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 314, μ: 35451, ~: 35627) ERC6909Test:testDecimals() (gas: 5676) ERC6909Test:testDirectApprove() (gas: 36737) -ERC6909Test:testDirectFunctions(uint256) (runs: 261, μ: 200238, ~: 202201) +ERC6909Test:testDirectFunctions(uint256) (runs: 314, μ: 200033, ~: 202153) ERC6909Test:testDirectSetOperator() (gas: 35937) ERC6909Test:testDirectTransfer() (gas: 67044) ERC6909Test:testInfiniteApproveTransferFrom() (gas: 79389) -ERC6909Test:testMetadata(uint256) (runs: 261, μ: 8257, ~: 8257) +ERC6909Test:testMetadata(uint256) (runs: 314, μ: 8257, ~: 8257) ERC6909Test:testMint() (gas: 37240) -ERC6909Test:testMint(address,uint256,uint256) (runs: 261, μ: 37395, ~: 37471) +ERC6909Test:testMint(address,uint256,uint256) (runs: 314, μ: 37344, ~: 37471) ERC6909Test:testMintOverMaxUintReverts() (gas: 35009) -ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 261, μ: 35915, ~: 35928) +ERC6909Test:testMintOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 314, μ: 35915, ~: 35928) ERC6909Test:testOperatorTransferFrom() (gas: 74717) ERC6909Test:testSetOperator() (gas: 37321) -ERC6909Test:testSetOperator(address,address,bool) (runs: 261, μ: 26450, ~: 16767) +ERC6909Test:testSetOperator(address,address,bool) (runs: 314, μ: 26336, ~: 16767) ERC6909Test:testTokenURI() (gas: 32876) ERC6909Test:testTransfer() (gas: 48585) -ERC6909Test:testTransfer(address,uint256,uint256) (runs: 261, μ: 47636, ~: 47712) +ERC6909Test:testTransfer(address,uint256,uint256) (runs: 314, μ: 47575, ~: 47706) ERC6909Test:testTransferFrom() (gas: 75316) -ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 261, μ: 80737, ~: 81977) -ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 261, μ: 40214, ~: 40212) -ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 261, μ: 68036, ~: 68581) +ERC6909Test:testTransferFrom(address,address,address,uint256,uint256,uint256) (runs: 314, μ: 80690, ~: 81977) +ERC6909Test:testTransferFromCallerIsNotOperator(address,uint256,uint256) (runs: 314, μ: 40214, ~: 40212) +ERC6909Test:testTransferFromInsufficientAllowanceReverts(address,uint256,uint256,uint256) (runs: 314, μ: 68010, ~: 68581) ERC6909Test:testTransferFromInsufficientBalanceReverts() (gas: 50505) -ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 261, μ: 51199, ~: 50733) +ERC6909Test:testTransferFromInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 314, μ: 51123, ~: 50733) ERC6909Test:testTransferFromInsufficientPermission() (gas: 68051) ERC6909Test:testTransferFromOverMaxUintReverts() (gas: 91617) -ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 261, μ: 114638, ~: 114872) +ERC6909Test:testTransferFromOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 314, μ: 114679, ~: 114872) ERC6909Test:testTransferInsufficientBalanceReverts() (gas: 35133) -ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 261, μ: 35287, ~: 35731) +ERC6909Test:testTransferInsufficientBalanceReverts(address,uint256,uint256,uint256) (runs: 314, μ: 35299, ~: 35675) ERC6909Test:testTransferOverMaxUintReverts() (gas: 64388) -ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 261, μ: 64942, ~: 64931) +ERC6909Test:testTransferOverMaxUintReverts(address,uint256,uint256,uint256) (runs: 314, μ: 64941, ~: 64930) ERC6909Test:test__codesize() (gas: 25622) ERC721HooksTest:testERC721Hooks() (gas: 3012871) ERC721HooksTest:test__codesize() (gas: 9998) -ERC721Test:testApprove(uint256) (runs: 261, μ: 108310, ~: 108048) -ERC721Test:testApproveAll(uint256) (runs: 261, μ: 50561, ~: 59870) -ERC721Test:testApproveBurn(uint256) (runs: 261, μ: 86737, ~: 86518) -ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 261, μ: 33662, ~: 33658) -ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 261, μ: 83372, ~: 82395) -ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 261, μ: 684, ~: 678) -ERC721Test:testAux(uint256) (runs: 261, μ: 194517, ~: 193020) -ERC721Test:testBurn(uint256) (runs: 261, μ: 81709, ~: 69084) -ERC721Test:testBurnNonExistentReverts(uint256) (runs: 261, μ: 10805, ~: 10805) +ERC721Test:testApprove(uint256) (runs: 314, μ: 108320, ~: 108048) +ERC721Test:testApproveAll(uint256) (runs: 314, μ: 50336, ~: 59870) +ERC721Test:testApproveBurn(uint256) (runs: 314, μ: 86728, ~: 86515) +ERC721Test:testApproveNonExistentReverts(uint256,address) (runs: 314, μ: 33662, ~: 33658) +ERC721Test:testApproveUnauthorizedReverts(uint256) (runs: 314, μ: 83442, ~: 83668) +ERC721Test:testAuthorizedEquivalence(address,bool,bool) (runs: 314, μ: 684, ~: 678) +ERC721Test:testAux(uint256) (runs: 314, μ: 194508, ~: 193020) +ERC721Test:testBurn(uint256) (runs: 314, μ: 81519, ~: 69065) +ERC721Test:testBurnNonExistentReverts(uint256) (runs: 314, μ: 10805, ~: 10805) ERC721Test:testCannotExceedMaxBalance() (gas: 172230) -ERC721Test:testDoubleBurnReverts(uint256) (runs: 261, μ: 63633, ~: 63642) -ERC721Test:testDoubleMintReverts(uint256) (runs: 261, μ: 79490, ~: 79501) -ERC721Test:testEverything(uint256) (runs: 261, μ: 291060, ~: 304587) -ERC721Test:testExtraData(uint256) (runs: 261, μ: 99353, ~: 99355) -ERC721Test:testExtraData2(uint256,uint256) (runs: 261, μ: 53889, ~: 53889) -ERC721Test:testIsApprovedOrOwner(uint256) (runs: 261, μ: 137708, ~: 137738) -ERC721Test:testMint(uint256) (runs: 261, μ: 82799, ~: 82758) -ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 261, μ: 84627, ~: 84716) -ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 261, μ: 84082, ~: 84075) -ERC721Test:testMintToZeroReverts(uint256) (runs: 261, μ: 40108, ~: 40107) -ERC721Test:testOwnerOfNonExistent(uint256) (runs: 261, μ: 33174, ~: 33185) -ERC721Test:testSafeMintToEOA(uint256) (runs: 261, μ: 83313, ~: 83398) -ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 261, μ: 409707, ~: 409920) -ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 261, μ: 460486, ~: 453884) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 261, μ: 170595, ~: 170595) -ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 261, μ: 171833, ~: 171784) -ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 261, μ: 100695, ~: 100695) -ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 261, μ: 101965, ~: 101916) -ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 261, μ: 203531, ~: 203531) -ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 261, μ: 204790, ~: 204741) -ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 261, μ: 122697, ~: 122732) -ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 261, μ: 472161, ~: 472462) -ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 261, μ: 523035, ~: 516407) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 261, μ: 202274, ~: 202152) -ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 261, μ: 203708, ~: 203806) -ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 261, μ: 132380, ~: 132255) -ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 261, μ: 133811, ~: 133898) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 261, μ: 235229, ~: 235110) -ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 261, μ: 236585, ~: 236585) -ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 261, μ: 713, ~: 713) +ERC721Test:testDoubleBurnReverts(uint256) (runs: 314, μ: 63632, ~: 63642) +ERC721Test:testDoubleMintReverts(uint256) (runs: 314, μ: 79489, ~: 79501) +ERC721Test:testEverything(uint256) (runs: 314, μ: 295821, ~: 305096) +ERC721Test:testExtraData(uint256) (runs: 314, μ: 99342, ~: 99340) +ERC721Test:testExtraData2(uint256,uint256) (runs: 314, μ: 53889, ~: 53889) +ERC721Test:testIsApprovedOrOwner(uint256) (runs: 314, μ: 137679, ~: 137711) +ERC721Test:testMint(uint256) (runs: 314, μ: 82802, ~: 82894) +ERC721Test:testMintAndSetExtraDataUnchecked(uint256) (runs: 314, μ: 84628, ~: 84716) +ERC721Test:testMintAndSetExtraDataUncheckedWithOverwrite(uint256,uint96) (runs: 314, μ: 84082, ~: 84075) +ERC721Test:testMintToZeroReverts(uint256) (runs: 314, μ: 40108, ~: 40107) +ERC721Test:testOwnerOfNonExistent(uint256) (runs: 314, μ: 33174, ~: 33185) +ERC721Test:testSafeMintToEOA(uint256) (runs: 314, μ: 83311, ~: 83232) +ERC721Test:testSafeMintToERC721Recipient(uint256) (runs: 314, μ: 409566, ~: 409920) +ERC721Test:testSafeMintToERC721RecipientWithData(uint256,bytes) (runs: 314, μ: 459551, ~: 453884) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnData(uint256) (runs: 314, μ: 170595, ~: 170595) +ERC721Test:testSafeMintToERC721RecipientWithWrongReturnDataWithData(uint256,bytes) (runs: 314, μ: 171833, ~: 171784) +ERC721Test:testSafeMintToNonERC721RecipientReverts(uint256) (runs: 314, μ: 100695, ~: 100695) +ERC721Test:testSafeMintToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 314, μ: 101965, ~: 101916) +ERC721Test:testSafeMintToRevertingERC721RecipientReverts(uint256) (runs: 314, μ: 203531, ~: 203531) +ERC721Test:testSafeMintToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 314, μ: 204790, ~: 204741) +ERC721Test:testSafeTransferFromToEOA(uint256) (runs: 314, μ: 122714, ~: 122731) +ERC721Test:testSafeTransferFromToERC721Recipient(uint256) (runs: 314, μ: 472017, ~: 472462) +ERC721Test:testSafeTransferFromToERC721RecipientWithData(uint256,bytes) (runs: 314, μ: 522104, ~: 516372) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataReverts(uint256) (runs: 314, μ: 202274, ~: 202152) +ERC721Test:testSafeTransferFromToERC721RecipientWithWrongReturnDataWithDataReverts(uint256,bytes) (runs: 314, μ: 203701, ~: 203806) +ERC721Test:testSafeTransferFromToNonERC721RecipientReverts(uint256) (runs: 314, μ: 132388, ~: 132511) +ERC721Test:testSafeTransferFromToNonERC721RecipientWithDataReverts(uint256,bytes) (runs: 314, μ: 133803, ~: 133895) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientReverts(uint256) (runs: 314, μ: 235226, ~: 235106) +ERC721Test:testSafeTransferFromToRevertingERC721RecipientWithDataReverts(uint256,bytes) (runs: 314, μ: 236582, ~: 236585) +ERC721Test:testSafetyOfCustomStorage(uint256,uint256) (runs: 314, μ: 713, ~: 713) ERC721Test:testTransferFrom() (gas: 86352) -ERC721Test:testTransferFrom(uint256) (runs: 261, μ: 114207, ~: 113155) -ERC721Test:testTransferFromApproveAll(uint256) (runs: 261, μ: 119761, ~: 119730) -ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 261, μ: 34555, ~: 34755) -ERC721Test:testTransferFromNotOwner(uint256) (runs: 261, μ: 85272, ~: 85442) -ERC721Test:testTransferFromSelf(uint256) (runs: 261, μ: 93032, ~: 93070) -ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 261, μ: 63437, ~: 63319) -ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 261, μ: 80988, ~: 81161) +ERC721Test:testTransferFrom(uint256) (runs: 314, μ: 114189, ~: 113167) +ERC721Test:testTransferFromApproveAll(uint256) (runs: 314, μ: 119772, ~: 119766) +ERC721Test:testTransferFromNotExistentReverts(address,address,uint256) (runs: 314, μ: 34556, ~: 34755) +ERC721Test:testTransferFromNotOwner(uint256) (runs: 314, μ: 85267, ~: 85442) +ERC721Test:testTransferFromSelf(uint256) (runs: 314, μ: 93024, ~: 93066) +ERC721Test:testTransferFromToZeroReverts(uint256) (runs: 314, μ: 63445, ~: 63319) +ERC721Test:testTransferFromWrongFromReverts(address,uint256) (runs: 314, μ: 80987, ~: 81161) ERC721Test:test__codesize() (gas: 42126) EfficientHashLibTest:testEfficientHash() (gas: 7544) -EfficientHashLibTest:testEfficientHash(uint256) (runs: 261, μ: 7615, ~: 7615) +EfficientHashLibTest:testEfficientHash(uint256) (runs: 314, μ: 7615, ~: 7615) EfficientHashLibTest:testEfficientHashFree() (gas: 372) -EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 261, μ: 956, ~: 822) +EfficientHashLibTest:testEfficientHashFree(uint8,bool,uint8) (runs: 314, μ: 967, ~: 908) EfficientHashLibTest:testEfficientHashSet() (gas: 2034) EfficientHashLibTest:testEfficientHashUints() (gas: 6658) EfficientHashLibTest:test__codesize() (gas: 4730) EnumerableSetLibTest:testEnumerableAddressSetBasic() (gas: 248436) EnumerableSetLibTest:testEnumerableAddressSetBasic2() (gas: 175344) EnumerableSetLibTest:testEnumerableAddressSetNoStorageCollision() (gas: 98950) -EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 261, μ: 46893, ~: 38495) +EnumerableSetLibTest:testEnumerableAddressSetRevertsOnSentinel(uint256) (runs: 314, μ: 47430, ~: 39823) EnumerableSetLibTest:testEnumerableBytes32SetBasic() (gas: 271282) EnumerableSetLibTest:testEnumerableBytes32SetBasic2() (gas: 178471) EnumerableSetLibTest:testEnumerableBytes32SetNoStorageCollision() (gas: 103477) -EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 261, μ: 51928, ~: 49215) -EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 261, μ: 592654, ~: 490120) +EnumerableSetLibTest:testEnumerableBytes32SetRevertsOnSentinel(uint256) (runs: 314, μ: 51851, ~: 49215) +EnumerableSetLibTest:testEnumerableSetFuzz(uint256) (runs: 314, μ: 607712, ~: 488734) EnumerableSetLibTest:test__codesize() (gas: 14261) FixedPointMathLibTest:testAbs() (gas: 702) -FixedPointMathLibTest:testAbs(int256) (runs: 261, μ: 489, ~: 457) +FixedPointMathLibTest:testAbs(int256) (runs: 314, μ: 488, ~: 457) FixedPointMathLibTest:testAbsEdgeCases() (gas: 469) FixedPointMathLibTest:testAvg() (gas: 443) FixedPointMathLibTest:testAvgEdgeCase() (gas: 470) FixedPointMathLibTest:testAvgSigned() (gas: 900) FixedPointMathLibTest:testCbrt() (gas: 10283) -FixedPointMathLibTest:testCbrt(uint256) (runs: 261, μ: 1522, ~: 1535) -FixedPointMathLibTest:testCbrtBack(uint256) (runs: 261, μ: 34337, ~: 42245) +FixedPointMathLibTest:testCbrt(uint256) (runs: 314, μ: 1522, ~: 1535) +FixedPointMathLibTest:testCbrtBack(uint256) (runs: 314, μ: 34674, ~: 43208) FixedPointMathLibTest:testCbrtWad() (gas: 12051) -FixedPointMathLibTest:testCbrtWad(uint256) (runs: 261, μ: 2150, ~: 1973) +FixedPointMathLibTest:testCbrtWad(uint256) (runs: 314, μ: 2149, ~: 1973) FixedPointMathLibTest:testCbrtWadConverged() (gas: 2664) -FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 261, μ: 2185, ~: 2236) +FixedPointMathLibTest:testCbrtWadConverged(uint256) (runs: 314, μ: 2184, ~: 2236) FixedPointMathLibTest:testCbrtWadDebug() (gas: 7338) FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing() (gas: 4140) -FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 261, μ: 3029, ~: 2933) -FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 261, μ: 569, ~: 568) -FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 261, μ: 547, ~: 547) +FixedPointMathLibTest:testCbrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 314, μ: 3083, ~: 2933) +FixedPointMathLibTest:testClamp(uint256,uint256,uint256) (runs: 314, μ: 569, ~: 568) +FixedPointMathLibTest:testClampSigned(int256,int256,int256) (runs: 314, μ: 548, ~: 547) FixedPointMathLibTest:testDist() (gas: 678) -FixedPointMathLibTest:testDist(int256,int256) (runs: 261, μ: 542, ~: 547) +FixedPointMathLibTest:testDist(int256,int256) (runs: 314, μ: 542, ~: 542) FixedPointMathLibTest:testDistEdgeCases() (gas: 570) FixedPointMathLibTest:testDivWad() (gas: 747) -FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 261, μ: 7545, ~: 891) +FixedPointMathLibTest:testDivWad(uint256,uint256) (runs: 314, μ: 7056, ~: 891) FixedPointMathLibTest:testDivWadEdgeCases() (gas: 414) -FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 261, μ: 21993, ~: 26501) +FixedPointMathLibTest:testDivWadOverflowReverts(uint256,uint256) (runs: 314, μ: 22416, ~: 26501) FixedPointMathLibTest:testDivWadUp() (gas: 3129) -FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 261, μ: 7634, ~: 1009) +FixedPointMathLibTest:testDivWadUp(uint256,uint256) (runs: 314, μ: 7282, ~: 1009) FixedPointMathLibTest:testDivWadUpEdgeCases() (gas: 439) -FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 261, μ: 22023, ~: 26500) +FixedPointMathLibTest:testDivWadUpOverflowReverts(uint256,uint256) (runs: 314, μ: 22418, ~: 26500) FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts() (gas: 3261) -FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 261, μ: 3295, ~: 3295) +FixedPointMathLibTest:testDivWadUpZeroDenominatorReverts(uint256) (runs: 314, μ: 3295, ~: 3295) FixedPointMathLibTest:testDivWadZeroDenominatorReverts() (gas: 3218) -FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 261, μ: 3337, ~: 3337) +FixedPointMathLibTest:testDivWadZeroDenominatorReverts(uint256) (runs: 314, μ: 3337, ~: 3337) FixedPointMathLibTest:testExpWad() (gas: 8047) FixedPointMathLibTest:testFactorial() (gas: 98491) FixedPointMathLibTest:testFactorialOriginal() (gas: 94187) FixedPointMathLibTest:testFullMulDiv() (gas: 1128) -FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 261, μ: 1375, ~: 983) -FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 261, μ: 3478, ~: 3478) +FixedPointMathLibTest:testFullMulDiv(uint256,uint256,uint256) (runs: 314, μ: 1394, ~: 983) +FixedPointMathLibTest:testFullMulDivAlwaysRevertsIfDivisorIsZero(uint256,uint256) (runs: 314, μ: 3478, ~: 3478) FixedPointMathLibTest:testFullMulDivUnchecked() (gas: 1635) -FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 261, μ: 1666, ~: 1565) -FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 261, μ: 1737, ~: 1427) +FixedPointMathLibTest:testFullMulDivUnchecked(uint256,uint256,uint256) (runs: 314, μ: 1668, ~: 1565) +FixedPointMathLibTest:testFullMulDivUp(uint256,uint256,uint256) (runs: 314, μ: 1746, ~: 1427) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase1() (gas: 3694) FixedPointMathLibTest:testFullMulDivUpRevertsIfRoundedUpResultOverflowsCase2() (gas: 3727) FixedPointMathLibTest:testGcd() (gas: 4206) -FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 261, μ: 6651, ~: 2822) -FixedPointMathLibTest:testIsEven(uint256) (runs: 261, μ: 519, ~: 519) +FixedPointMathLibTest:testGcd(uint256,uint256) (runs: 314, μ: 6613, ~: 2822) +FixedPointMathLibTest:testIsEven(uint256) (runs: 314, μ: 519, ~: 519) FixedPointMathLibTest:testLambertW0WadAccuracy() (gas: 7160) -FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 261, μ: 2451, ~: 431) +FixedPointMathLibTest:testLambertW0WadAccuracy(uint184) (runs: 314, μ: 2442, ~: 431) FixedPointMathLibTest:testLambertW0WadKnownValues() (gas: 1685570) FixedPointMathLibTest:testLambertW0WadMonoDebug() (gas: 770645) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing() (gas: 18416531) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 261, μ: 7176, ~: 6978) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing(int256,int256) (runs: 314, μ: 7237, ~: 6978) FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasing2() (gas: 4035368) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 261, μ: 29477, ~: 35428) -FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 261, μ: 41028, ~: 17640) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround(int256) (runs: 314, μ: 29445, ~: 35428) +FixedPointMathLibTest:testLambertW0WadMonotonicallyIncreasingAround2(uint96) (runs: 314, μ: 50675, ~: 17640) FixedPointMathLibTest:testLambertW0WadRevertsForOutOfDomain() (gas: 16608) FixedPointMathLibTest:testLambertW0WadWithinBounds() (gas: 122061) -FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 261, μ: 3754, ~: 4984) +FixedPointMathLibTest:testLambertW0WadWithinBounds(int256) (runs: 314, μ: 3762, ~: 4984) FixedPointMathLibTest:testLerpInt() (gas: 6461) -FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 261, μ: 1659, ~: 1198) +FixedPointMathLibTest:testLerpInt(int256,int256,int256,int256,int256) (runs: 314, μ: 1653, ~: 1198) FixedPointMathLibTest:testLerpUint() (gas: 6442) -FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 261, μ: 1070, ~: 797) +FixedPointMathLibTest:testLerpUint(uint256,uint256,uint256,uint256,uint256) (runs: 314, μ: 1093, ~: 797) FixedPointMathLibTest:testLnWad() (gas: 2054) FixedPointMathLibTest:testLnWadBig() (gas: 2087) FixedPointMathLibTest:testLnWadNegativeReverts() (gas: 3318) FixedPointMathLibTest:testLnWadOverflowReverts() (gas: 3316) FixedPointMathLibTest:testLnWadSmall() (gas: 2644) FixedPointMathLibTest:testLog10() (gas: 76168) -FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 261, μ: 2166, ~: 2195) +FixedPointMathLibTest:testLog10(uint256,uint256) (runs: 314, μ: 2161, ~: 2195) FixedPointMathLibTest:testLog10Up() (gas: 4369) FixedPointMathLibTest:testLog2() (gas: 243209) FixedPointMathLibTest:testLog256() (gas: 22831) -FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 261, μ: 2093, ~: 2152) +FixedPointMathLibTest:testLog256(uint256,uint256) (runs: 314, μ: 2086, ~: 2152) FixedPointMathLibTest:testLog256Up() (gas: 1293) -FixedPointMathLibTest:testLog2Differential(uint256) (runs: 261, μ: 891, ~: 886) +FixedPointMathLibTest:testLog2Differential(uint256) (runs: 314, μ: 890, ~: 886) FixedPointMathLibTest:testLog2Up() (gas: 297368) -FixedPointMathLibTest:testMax(uint256,uint256) (runs: 261, μ: 476, ~: 472) -FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 261, μ: 891, ~: 896) -FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 261, μ: 519, ~: 515) -FixedPointMathLibTest:testMin(uint256,uint256) (runs: 261, μ: 477, ~: 482) -FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 261, μ: 873, ~: 883) -FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 261, μ: 498, ~: 503) +FixedPointMathLibTest:testMax(uint256,uint256) (runs: 314, μ: 476, ~: 472) +FixedPointMathLibTest:testMaxCasted(uint32,uint32,uint256) (runs: 314, μ: 891, ~: 896) +FixedPointMathLibTest:testMaxSigned(int256,int256) (runs: 314, μ: 520, ~: 520) +FixedPointMathLibTest:testMin(uint256,uint256) (runs: 314, μ: 477, ~: 482) +FixedPointMathLibTest:testMinBrutalized(uint256,uint256) (runs: 314, μ: 873, ~: 873) +FixedPointMathLibTest:testMinSigned(int256,int256) (runs: 314, μ: 498, ~: 498) FixedPointMathLibTest:testMulDiv() (gas: 1890) -FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 261, μ: 1641, ~: 858) +FixedPointMathLibTest:testMulDiv(uint256,uint256,uint256) (runs: 314, μ: 1661, ~: 858) FixedPointMathLibTest:testMulDivEdgeCases() (gas: 784) -FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 261, μ: 20408, ~: 27078) +FixedPointMathLibTest:testMulDivOverflowReverts(uint256,uint256,uint256) (runs: 314, μ: 20197, ~: 27078) FixedPointMathLibTest:testMulDivUp() (gas: 2148) -FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 261, μ: 1816, ~: 1121) +FixedPointMathLibTest:testMulDivUp(uint256,uint256,uint256) (runs: 314, μ: 1829, ~: 1121) FixedPointMathLibTest:testMulDivUpEdgeCases() (gas: 817) -FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 261, μ: 20399, ~: 27050) +FixedPointMathLibTest:testMulDivUpOverflowReverts(uint256,uint256,uint256) (runs: 314, μ: 20193, ~: 27047) FixedPointMathLibTest:testMulDivUpZeroDenominator() (gas: 3234) -FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 261, μ: 3357, ~: 3357) +FixedPointMathLibTest:testMulDivUpZeroDenominatorReverts(uint256,uint256) (runs: 314, μ: 3357, ~: 3357) FixedPointMathLibTest:testMulDivZeroDenominatorReverts() (gas: 3256) -FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 261, μ: 3380, ~: 3380) +FixedPointMathLibTest:testMulDivZeroDenominatorReverts(uint256,uint256) (runs: 314, μ: 3380, ~: 3380) FixedPointMathLibTest:testMulWad() (gas: 736) -FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 261, μ: 719, ~: 855) +FixedPointMathLibTest:testMulWad(uint256,uint256) (runs: 314, μ: 718, ~: 855) FixedPointMathLibTest:testMulWadEdgeCases() (gas: 714) -FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 261, μ: 18745, ~: 26336) +FixedPointMathLibTest:testMulWadOverflowReverts(uint256,uint256) (runs: 314, μ: 18742, ~: 26336) FixedPointMathLibTest:testMulWadUp() (gas: 837) -FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 261, μ: 21200, ~: 1065) +FixedPointMathLibTest:testMulWadUp(uint256,uint256) (runs: 314, μ: 21224, ~: 1065) FixedPointMathLibTest:testMulWadUpEdgeCases() (gas: 815) -FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 261, μ: 18772, ~: 26379) +FixedPointMathLibTest:testMulWadUpOverflowReverts(uint256,uint256) (runs: 314, μ: 18769, ~: 26379) FixedPointMathLibTest:testPackUnpackSci() (gas: 129327) -FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 261, μ: 30413, ~: 30418) +FixedPointMathLibTest:testPackUnpackSci(uint256) (runs: 314, μ: 30412, ~: 30420) FixedPointMathLibTest:testRPow() (gas: 3320) FixedPointMathLibTest:testRPowOverflowReverts() (gas: 4974) -FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 261, μ: 462, ~: 462) -FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 261, μ: 463, ~: 463) -FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 261, μ: 512, ~: 512) -FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 261, μ: 443, ~: 443) -FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 261, μ: 464, ~: 464) -FixedPointMathLibTest:testRawMul(int256,int256) (runs: 261, μ: 412, ~: 412) -FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 261, μ: 485, ~: 485) -FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 261, μ: 579, ~: 579) -FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 261, μ: 465, ~: 465) -FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 261, μ: 466, ~: 466) -FixedPointMathLibTest:testRawSub(int256,int256) (runs: 261, μ: 441, ~: 441) -FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 261, μ: 440, ~: 440) +FixedPointMathLibTest:testRawAdd(int256,int256) (runs: 314, μ: 462, ~: 462) +FixedPointMathLibTest:testRawAdd(uint256,uint256) (runs: 314, μ: 463, ~: 463) +FixedPointMathLibTest:testRawAddMod(uint256,uint256,uint256) (runs: 314, μ: 512, ~: 512) +FixedPointMathLibTest:testRawDiv(uint256,uint256) (runs: 314, μ: 443, ~: 443) +FixedPointMathLibTest:testRawMod(uint256,uint256) (runs: 314, μ: 464, ~: 464) +FixedPointMathLibTest:testRawMul(int256,int256) (runs: 314, μ: 412, ~: 412) +FixedPointMathLibTest:testRawMul(uint256,uint256) (runs: 314, μ: 485, ~: 485) +FixedPointMathLibTest:testRawMulMod(uint256,uint256,uint256) (runs: 314, μ: 579, ~: 579) +FixedPointMathLibTest:testRawSDiv(int256,int256) (runs: 314, μ: 465, ~: 465) +FixedPointMathLibTest:testRawSMod(int256,int256) (runs: 314, μ: 466, ~: 466) +FixedPointMathLibTest:testRawSub(int256,int256) (runs: 314, μ: 441, ~: 441) +FixedPointMathLibTest:testRawSub(uint256,uint256) (runs: 314, μ: 440, ~: 440) FixedPointMathLibTest:testSDivWad() (gas: 916) -FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 261, μ: 6406, ~: 971) +FixedPointMathLibTest:testSDivWad(int256,int256) (runs: 314, μ: 6248, ~: 971) FixedPointMathLibTest:testSDivWadEdgeCases() (gas: 422) -FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 261, μ: 22563, ~: 26511) -FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 261, μ: 3330, ~: 3330) +FixedPointMathLibTest:testSDivWadOverflowReverts(int256,int256) (runs: 314, μ: 22607, ~: 26511) +FixedPointMathLibTest:testSDivWadZeroDenominatorReverts(int256) (runs: 314, μ: 3330, ~: 3330) FixedPointMathLibTest:testSMulWad() (gas: 1032) -FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 261, μ: 893, ~: 1047) +FixedPointMathLibTest:testSMulWad(int256,int256) (runs: 314, μ: 883, ~: 1047) FixedPointMathLibTest:testSMulWadEdgeCases() (gas: 1309) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 261, μ: 20312, ~: 26566) -FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 261, μ: 19212, ~: 25788) -FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 261, μ: 622, ~: 632) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition1(int256,int256) (runs: 314, μ: 19892, ~: 26556) +FixedPointMathLibTest:testSMulWadOverflowRevertsOnCondition2(int256) (runs: 314, μ: 19424, ~: 25957) +FixedPointMathLibTest:testSMulWadOverflowTrickDifferential(int256,int256) (runs: 314, μ: 621, ~: 632) FixedPointMathLibTest:testSci() (gas: 1838614) -FixedPointMathLibTest:testSci(uint256) (runs: 261, μ: 33414, ~: 35821) -FixedPointMathLibTest:testSci2(uint256) (runs: 261, μ: 958, ~: 955) +FixedPointMathLibTest:testSci(uint256) (runs: 314, μ: 33288, ~: 35112) +FixedPointMathLibTest:testSci2(uint256) (runs: 314, μ: 956, ~: 955) FixedPointMathLibTest:testSqrt() (gas: 43798) -FixedPointMathLibTest:testSqrt(uint256) (runs: 261, μ: 1046, ~: 1054) -FixedPointMathLibTest:testSqrtBack(uint256) (runs: 261, μ: 10430, ~: 386) -FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 261, μ: 54698, ~: 54659) +FixedPointMathLibTest:testSqrt(uint256) (runs: 314, μ: 1047, ~: 1054) +FixedPointMathLibTest:testSqrtBack(uint256) (runs: 314, μ: 10099, ~: 386) +FixedPointMathLibTest:testSqrtHashed(uint256) (runs: 314, μ: 54682, ~: 54659) FixedPointMathLibTest:testSqrtHashedSingle() (gas: 54587) FixedPointMathLibTest:testSqrtWad() (gas: 7937) -FixedPointMathLibTest:testSqrtWad(uint256) (runs: 261, μ: 1659, ~: 1580) -FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 261, μ: 1962, ~: 1992) -FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 261, μ: 2192, ~: 1825) -FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 261, μ: 518, ~: 514) -FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 261, μ: 572, ~: 601) -FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 261, μ: 881, ~: 846) +FixedPointMathLibTest:testSqrtWad(uint256) (runs: 314, μ: 1655, ~: 1580) +FixedPointMathLibTest:testSqrtWadConverged(uint256) (runs: 314, μ: 1962, ~: 1992) +FixedPointMathLibTest:testSqrtWadMonotonicallyIncreasing(uint256,uint256) (runs: 314, μ: 2240, ~: 1825) +FixedPointMathLibTest:testTernary(bool,uint256,uint256) (runs: 314, μ: 518, ~: 514) +FixedPointMathLibTest:testZeroFloorSub(uint256,uint256) (runs: 314, μ: 572, ~: 601) +FixedPointMathLibTest:testZeroFloorSubCasted(uint32,uint32,uint256) (runs: 314, μ: 880, ~: 846) FixedPointMathLibTest:test__codesize() (gas: 45155) GasBurnerLibTest:testBurn() (gas: 105035) -GasBurnerLibTest:testBurn(uint256) (runs: 261, μ: 43054, ~: 32790) +GasBurnerLibTest:testBurn(uint256) (runs: 314, μ: 43541, ~: 33822) GasBurnerLibTest:testBurnPure() (gas: 1700850) -GasBurnerLibTest:testBurnPure(uint256) (runs: 261, μ: 25011, ~: 24452) +GasBurnerLibTest:testBurnPure(uint256) (runs: 314, μ: 25023, ~: 24588) GasBurnerLibTest:testBurnPureTiming() (gas: 300223) GasBurnerLibTest:testBurnTiming() (gas: 293139) GasBurnerLibTest:testBurnView() (gas: 66700) -GasBurnerLibTest:testBurnView(uint256) (runs: 261, μ: 27183, ~: 26318) +GasBurnerLibTest:testBurnView(uint256) (runs: 314, μ: 27128, ~: 26318) GasBurnerLibTest:testBurnViewTiming() (gas: 294223) GasBurnerLibTest:test__codesize() (gas: 2389) InitializableTest:testDisableInitializers() (gas: 42010) InitializableTest:testInitializableConstructor() (gas: 691882) InitializableTest:testInitialize() (gas: 54688) -InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 261, μ: 791, ~: 791) -InitializableTest:testInitializeReinititalize(uint256) (runs: 261, μ: 96489, ~: 95781) -InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 261, μ: 674, ~: 687) +InitializableTest:testInitializeInititalizerTrick(bool,uint64,uint16) (runs: 314, μ: 790, ~: 791) +InitializableTest:testInitializeReinititalize(uint256) (runs: 314, μ: 96306, ~: 95544) +InitializableTest:testInitializeReinititalizerTrick(bool,uint64,uint64) (runs: 314, μ: 674, ~: 687) InitializableTest:testOnlyInitializing() (gas: 10420) InitializableTest:test__codesize() (gas: 10480) -JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 261, μ: 57180, ~: 56403) +JSONParserLibTest:testDecodeEncodedStringDoesNotRevert(string) (runs: 314, μ: 57548, ~: 56403) JSONParserLibTest:testDecodeInvalidStringReverts() (gas: 172924) JSONParserLibTest:testDecodeString() (gas: 193269) JSONParserLibTest:testEmptyItem() (gas: 2913) @@ -596,9 +596,9 @@ JSONParserLibTest:testParseEmptyArrays() (gas: 499245) JSONParserLibTest:testParseEmptyObjects() (gas: 500206) JSONParserLibTest:testParseGas() (gas: 151909) JSONParserLibTest:testParseInt() (gas: 204229) -JSONParserLibTest:testParseInt(int256) (runs: 261, μ: 18831, ~: 17615) -JSONParserLibTest:testParseIntReverts(uint256) (runs: 261, μ: 55941, ~: 55929) -JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 261, μ: 528, ~: 532) +JSONParserLibTest:testParseInt(int256) (runs: 314, μ: 18792, ~: 17468) +JSONParserLibTest:testParseIntReverts(uint256) (runs: 314, μ: 55938, ~: 55929) +JSONParserLibTest:testParseIntTrick(uint256,bool) (runs: 314, μ: 528, ~: 532) JSONParserLibTest:testParseInvalidIntReverts() (gas: 210681) JSONParserLibTest:testParseInvalidNumberReverts() (gas: 4068682) JSONParserLibTest:testParseInvalidReverts() (gas: 8589165) @@ -614,174 +614,174 @@ JSONParserLibTest:testParseSimpleUintArray() (gas: 1175003) JSONParserLibTest:testParseSpecials() (gas: 260199) JSONParserLibTest:testParseString() (gas: 1237483) JSONParserLibTest:testParseUint() (gas: 95659) -JSONParserLibTest:testParseUint(uint256) (runs: 261, μ: 35559, ~: 31924) +JSONParserLibTest:testParseUint(uint256) (runs: 314, μ: 35434, ~: 31924) JSONParserLibTest:testParseUintFromHex() (gas: 1382724) -JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 261, μ: 49976, ~: 48778) +JSONParserLibTest:testParseValidObjectDoesNotRevert(string,string) (runs: 314, μ: 50126, ~: 48844) JSONParserLibTest:test__codesize() (gas: 38087) LibBitTest:testAnd() (gas: 192789) -LibBitTest:testAnd(bool,bool) (runs: 261, μ: 632, ~: 634) -LibBitTest:testAutoClean(uint256,uint256) (runs: 261, μ: 468, ~: 468) -LibBitTest:testBoolToUint(bool) (runs: 261, μ: 485, ~: 485) +LibBitTest:testAnd(bool,bool) (runs: 314, μ: 632, ~: 634) +LibBitTest:testAutoClean(uint256,uint256) (runs: 314, μ: 468, ~: 468) +LibBitTest:testBoolToUint(bool) (runs: 314, μ: 485, ~: 485) LibBitTest:testCLZ() (gas: 297260) LibBitTest:testFFS() (gas: 152877) LibBitTest:testFLS() (gas: 245237) LibBitTest:testIsPo2() (gas: 57663) -LibBitTest:testIsPo2(uint256) (runs: 261, μ: 3549, ~: 1810) -LibBitTest:testIsPo2(uint8,uint8) (runs: 261, μ: 623, ~: 624) +LibBitTest:testIsPo2(uint256) (runs: 314, μ: 3525, ~: 2130) +LibBitTest:testIsPo2(uint8,uint8) (runs: 314, μ: 623, ~: 624) LibBitTest:testOr() (gas: 194336) -LibBitTest:testOr(bool,bool) (runs: 261, μ: 649, ~: 648) +LibBitTest:testOr(bool,bool) (runs: 314, μ: 649, ~: 648) LibBitTest:testPassInBool() (gas: 830) LibBitTest:testPopCount() (gas: 63738) -LibBitTest:testPopCount(uint256) (runs: 261, μ: 3691, ~: 1952) +LibBitTest:testPopCount(uint256) (runs: 314, μ: 3667, ~: 2272) LibBitTest:testReturnsBool() (gas: 779) LibBitTest:testReverseBits() (gas: 131521) -LibBitTest:testReverseBitsDifferential(uint256) (runs: 261, μ: 18724, ~: 18724) +LibBitTest:testReverseBitsDifferential(uint256) (runs: 314, μ: 18724, ~: 18724) LibBitTest:testReverseBytes() (gas: 12492) -LibBitTest:testReverseBytesDifferential(uint256) (runs: 261, μ: 2675, ~: 2675) +LibBitTest:testReverseBytesDifferential(uint256) (runs: 314, μ: 2675, ~: 2675) LibBitTest:test__codesize() (gas: 5842) LibBitmapTest:testBitmapClaimWithGetSet() (gas: 27156) LibBitmapTest:testBitmapClaimWithToggle() (gas: 17480) LibBitmapTest:testBitmapFindFirstUnset() (gas: 54669) -LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 261, μ: 141239, ~: 140181) +LibBitmapTest:testBitmapFindFirstUnset(uint256,uint256,bytes32) (runs: 314, μ: 141297, ~: 140245) LibBitmapTest:testBitmapFindLastSet() (gas: 1300541) -LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 261, μ: 75908, ~: 76225) +LibBitmapTest:testBitmapFindLastSet(uint256,bytes32) (runs: 314, μ: 75940, ~: 76220) LibBitmapTest:testBitmapFindLastSet2() (gas: 23882) LibBitmapTest:testBitmapGet() (gas: 2549) -LibBitmapTest:testBitmapGet(uint256) (runs: 261, μ: 2599, ~: 2599) +LibBitmapTest:testBitmapGet(uint256) (runs: 314, μ: 2599, ~: 2599) LibBitmapTest:testBitmapPopCount() (gas: 751877) -LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 261, μ: 210583, ~: 192899) +LibBitmapTest:testBitmapPopCount(uint256,uint256,uint256) (runs: 314, μ: 214763, ~: 192956) LibBitmapTest:testBitmapPopCountAcrossMultipleBuckets() (gas: 73634) LibBitmapTest:testBitmapPopCountWithinSingleBucket() (gas: 34032) LibBitmapTest:testBitmapSet() (gas: 22771) -LibBitmapTest:testBitmapSet(uint256) (runs: 261, μ: 22843, ~: 22843) -LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 261, μ: 22864, ~: 22864) +LibBitmapTest:testBitmapSet(uint256) (runs: 314, μ: 22843, ~: 22843) +LibBitmapTest:testBitmapSetAndGet(uint256) (runs: 314, μ: 22864, ~: 22864) LibBitmapTest:testBitmapSetBatch() (gas: 2918603) LibBitmapTest:testBitmapSetBatchAcrossMultipleBuckets() (gas: 438393) LibBitmapTest:testBitmapSetBatchWithinSingleBucket() (gas: 389011) LibBitmapTest:testBitmapSetTo() (gas: 14652) -LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 261, μ: 12802, ~: 3113) -LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 261, μ: 46937, ~: 51384) +LibBitmapTest:testBitmapSetTo(uint256,bool,uint256) (runs: 314, μ: 12943, ~: 3113) +LibBitmapTest:testBitmapSetTo(uint256,uint256) (runs: 314, μ: 46778, ~: 51381) LibBitmapTest:testBitmapToggle() (gas: 31525) -LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 261, μ: 19360, ~: 23572) +LibBitmapTest:testBitmapToggle(uint256,bool) (runs: 314, μ: 19268, ~: 23572) LibBitmapTest:testBitmapUnset() (gas: 22794) -LibBitmapTest:testBitmapUnset(uint256) (runs: 261, μ: 14511, ~: 14528) +LibBitmapTest:testBitmapUnset(uint256) (runs: 314, μ: 14510, ~: 14525) LibBitmapTest:testBitmapUnsetBatch() (gas: 2981123) LibBitmapTest:testBitmapUnsetBatchAcrossMultipleBuckets() (gas: 438470) LibBitmapTest:testBitmapUnsetBatchWithinSingleBucket() (gas: 445869) LibBitmapTest:test__codesize() (gas: 8720) LibCWIATest:testCloneDeteministicWithImmutableArgs() (gas: 191965) -LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 261, μ: 1113052, ~: 1064752) +LibCWIATest:testCloneDeteministicWithImmutableArgs(address,uint256,uint256[],bytes,uint64,uint8,uint256) (runs: 314, μ: 1092852, ~: 1044034) LibCWIATest:testCloneWithImmutableArgs() (gas: 120548) -LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 261, μ: 979379, ~: 940262) +LibCWIATest:testCloneWithImmutableArgs(uint256,address,uint256,uint256[],uint64,uint8) (runs: 314, μ: 997420, ~: 982338) LibCWIATest:testCloneWithImmutableArgsRevertsIfDataTooBig() (gas: 97306657) LibCWIATest:test__codesize() (gas: 12335) LibCloneTest:testClone() (gas: 97598) -LibCloneTest:testClone(uint256) (runs: 261, μ: 97692, ~: 97692) +LibCloneTest:testClone(uint256) (runs: 314, μ: 97692, ~: 97692) LibCloneTest:testCloneDeterministic() (gas: 98533) -LibCloneTest:testCloneDeterministic(bytes32) (runs: 261, μ: 2326329, ~: 98783) +LibCloneTest:testCloneDeterministic(bytes32) (runs: 314, μ: 2564473, ~: 98783) LibCloneTest:testCloneDeterministicWithImmutableArgs() (gas: 128890) -LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 261, μ: 7439490, ~: 120898) +LibCloneTest:testCloneDeterministicWithImmutableArgs(bytes32) (runs: 314, μ: 8127850, ~: 121785) LibCloneTest:testCloneWithImmutableArgs() (gas: 129436) -LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 261, μ: 3742522, ~: 119260) +LibCloneTest:testCloneWithImmutableArgs(uint256) (runs: 314, μ: 3198039, ~: 119262) LibCloneTest:testCloneWithImmutableArgsSlicing() (gas: 57948) -LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 261, μ: 174808, ~: 128213) -LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 261, μ: 356674, ~: 360735) -LibCloneTest:testCreateDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 261, μ: 513675, ~: 362657) -LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 261, μ: 214785, ~: 132667) -LibCloneTest:testCreateDeterministicERC1967IBeaconProxy(bytes32) (runs: 261, μ: 355724, ~: 299794) -LibCloneTest:testCreateDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 261, μ: 636254, ~: 364823) -LibCloneTest:testCreateDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 261, μ: 743074, ~: 154892) -LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 261, μ: 543750, ~: 150234) +LibCloneTest:testCreateDeterministicERC1967(bytes32) (runs: 314, μ: 181493, ~: 128213) +LibCloneTest:testCreateDeterministicERC1967BeaconProxy(bytes32) (runs: 314, μ: 357762, ~: 360735) +LibCloneTest:testCreateDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 314, μ: 529358, ~: 362740) +LibCloneTest:testCreateDeterministicERC1967I(bytes32) (runs: 314, μ: 206482, ~: 132666) +LibCloneTest:testCreateDeterministicERC1967IBeaconProxy(bytes32) (runs: 314, μ: 370358, ~: 361773) +LibCloneTest:testCreateDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 314, μ: 651616, ~: 365016) +LibCloneTest:testCreateDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 314, μ: 736169, ~: 154388) +LibCloneTest:testCreateDeterministicERC1967WithImmutableArgs(bytes32) (runs: 314, μ: 491259, ~: 150227) LibCloneTest:testDeployDeterministicERC1967() (gas: 133653) -LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 261, μ: 1746732, ~: 133507) -LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 261, μ: 4749467, ~: 357720) -LibCloneTest:testDeployDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 261, μ: 5551031, ~: 368425) +LibCloneTest:testDeployDeterministicERC1967(bytes32) (runs: 314, μ: 2402980, ~: 133494) +LibCloneTest:testDeployDeterministicERC1967BeaconProxy(bytes32) (runs: 314, μ: 5215975, ~: 357720) +LibCloneTest:testDeployDeterministicERC1967BeaconProxyWithImmutableArgs(bytes32) (runs: 314, μ: 6307157, ~: 368440) LibCloneTest:testDeployDeterministicERC1967I() (gas: 129746) -LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 261, μ: 3478072, ~: 129707) -LibCloneTest:testDeployDeterministicERC1967IBeaconProxy(bytes32) (runs: 261, μ: 3287663, ~: 359955) -LibCloneTest:testDeployDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 261, μ: 4820522, ~: 370682) +LibCloneTest:testDeployDeterministicERC1967I(bytes32) (runs: 314, μ: 2916558, ~: 129708) +LibCloneTest:testDeployDeterministicERC1967IBeaconProxy(bytes32) (runs: 314, μ: 3399088, ~: 359955) +LibCloneTest:testDeployDeterministicERC1967IBeaconProxyWithImmutableArgs(bytes32) (runs: 314, μ: 5396297, ~: 370974) LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs() (gas: 129746) -LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 261, μ: 7182881, ~: 151402) +LibCloneTest:testDeployDeterministicERC1967IWithImmutableArgs(bytes32) (runs: 314, μ: 6046002, ~: 151410) LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs() (gas: 170813) -LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 261, μ: 5259118, ~: 146880) +LibCloneTest:testDeployDeterministicERC1967WithImmutableArgs(bytes32) (runs: 314, μ: 5068219, ~: 146463) LibCloneTest:testDeployERC1967() (gas: 130817) -LibCloneTest:testDeployERC1967(bytes32) (runs: 261, μ: 234772, ~: 130898) -LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 261, μ: 356958, ~: 294992) +LibCloneTest:testDeployERC1967(bytes32) (runs: 314, μ: 231993, ~: 130898) +LibCloneTest:testDeployERC1967BeaconProxy(bytes32) (runs: 314, μ: 358793, ~: 294993) LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs() (gas: 879000) -LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 261, μ: 27228088, ~: 267157) +LibCloneTest:testDeployERC1967BeaconProxyWithImmutableArgs(address,bytes32) (runs: 314, μ: 26710070, ~: 265651) LibCloneTest:testDeployERC1967I() (gas: 129964) -LibCloneTest:testDeployERC1967I(bytes32) (runs: 261, μ: 130034, ~: 130034) +LibCloneTest:testDeployERC1967I(bytes32) (runs: 314, μ: 130034, ~: 130034) LibCloneTest:testDeployERC1967IBeaconProxy() (gas: 359439) -LibCloneTest:testDeployERC1967IBeaconProxy(bytes32) (runs: 261, μ: 360238, ~: 359197) +LibCloneTest:testDeployERC1967IBeaconProxy(bytes32) (runs: 314, μ: 358184, ~: 359197) LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs() (gas: 940290) -LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs(address,bytes32) (runs: 261, μ: 25265355, ~: 261359) +LibCloneTest:testDeployERC1967IBeaconProxyWithImmutableArgs(address,bytes32) (runs: 314, μ: 25397661, ~: 259712) LibCloneTest:testDeployERC1967IWithImmutableArgs() (gas: 168734) -LibCloneTest:testDeployERC1967IWithImmutableArgs(bytes32) (runs: 261, μ: 3442319, ~: 151006) +LibCloneTest:testDeployERC1967IWithImmutableArgs(bytes32) (runs: 314, μ: 2916121, ~: 150970) LibCloneTest:testDeployERC1967WithImmutableArgs() (gas: 145438) -LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 261, μ: 4578063, ~: 144724) -LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 261, μ: 348181, ~: 347121) -LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 261, μ: 189719, ~: 169765) -LibCloneTest:testERC1967IBeaconProxyGasBehavior(uint256,uint256) (runs: 261, μ: 363140, ~: 347685) -LibCloneTest:testImplemenationOf(address) (runs: 261, μ: 405541, ~: 84745) +LibCloneTest:testDeployERC1967WithImmutableArgs(bytes32) (runs: 314, μ: 4839489, ~: 145194) +LibCloneTest:testERC1967BeaconProxyGasBehavior(uint256,uint256) (runs: 314, μ: 353044, ~: 346672) +LibCloneTest:testERC1967ConstantBootstrap(address,bytes32) (runs: 314, μ: 186166, ~: 169760) +LibCloneTest:testERC1967IBeaconProxyGasBehavior(uint256,uint256) (runs: 314, μ: 364010, ~: 347576) +LibCloneTest:testImplemenationOf(address) (runs: 314, μ: 504674, ~: 80320) LibCloneTest:testImplemenationOfGas() (gas: 631777) -LibCloneTest:testInitCode(address) (runs: 261, μ: 245385, ~: 44698) +LibCloneTest:testInitCode(address) (runs: 314, μ: 235689, ~: 44111) LibCloneTest:testInitialDeposit() (gas: 872449) -LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 261, μ: 70838, ~: 31276) -LibCloneTest:testStartsWith(uint256) (runs: 261, μ: 30023, ~: 29991) +LibCloneTest:testSlicingRevertsOnZeroCodeAddress(address) (runs: 314, μ: 71349, ~: 31181) +LibCloneTest:testStartsWith(uint256) (runs: 314, μ: 30020, ~: 29987) LibCloneTest:test__codesize() (gas: 42104) -LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 261, μ: 202121, ~: 29507) -LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 261, μ: 103032, ~: 102943) -LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 261, μ: 255331, ~: 23818) -LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 261, μ: 114200, ~: 114208) +LibERC6551Test:testComputeAccountAddress(address,bytes32,uint256,address,uint256) (runs: 314, μ: 208217, ~: 29507) +LibERC6551Test:testContext(address,bytes32,uint256,address,uint256) (runs: 314, μ: 103037, ~: 102943) +LibERC6551Test:testInitCodeHash(address,bytes32,uint256,address,uint256) (runs: 314, μ: 253542, ~: 23818) +LibERC6551Test:testIsERC6551Account(address,bytes32,uint256,address,uint256) (runs: 314, μ: 114207, ~: 114208) LibERC6551Test:test__codesize() (gas: 5280) -LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 261, μ: 499, ~: 499) +LibMapTest:testFoundStatementDifferential(uint256,uint256,uint256) (runs: 314, μ: 499, ~: 499) LibMapTest:testGeneralMapFunctionsGas() (gas: 3304775) -LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 261, μ: 84342, ~: 85704) +LibMapTest:testGeneralMapFunctionsWithSmallBitWidths(uint256) (runs: 314, μ: 84839, ~: 85698) LibMapTest:testGeneralMapFunctionsWithZeroBitWidth() (gas: 12260) -LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 261, μ: 208011, ~: 151789) +LibMapTest:testGeneralMapSearchSorted(uint256) (runs: 314, μ: 208464, ~: 152132) LibMapTest:testMapGetFromBigArray() (gas: 3330) LibMapTest:testMapGetUint8() (gas: 3313) LibMapTest:testMapSetUint8() (gas: 23276) LibMapTest:testMapSetUint8FromBigArray() (gas: 23263) -LibMapTest:testUint128MapSearchSorted(uint256) (runs: 261, μ: 190425, ~: 131714) +LibMapTest:testUint128MapSearchSorted(uint256) (runs: 314, μ: 195676, ~: 130690) LibMapTest:testUint128MapSetAndGet() (gas: 1607264) -LibMapTest:testUint128MapSetAndGet(uint256) (runs: 261, μ: 180673, ~: 171280) -LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 261, μ: 69119, ~: 69481) -LibMapTest:testUint16MapSearchSorted(uint256) (runs: 261, μ: 97004, ~: 86534) +LibMapTest:testUint128MapSetAndGet(uint256) (runs: 314, μ: 180155, ~: 170727) +LibMapTest:testUint128MapSetAndGet2(uint256) (runs: 314, μ: 68976, ~: 69405) +LibMapTest:testUint16MapSearchSorted(uint256) (runs: 314, μ: 96354, ~: 86406) LibMapTest:testUint16MapSetAndGet() (gas: 958101) -LibMapTest:testUint16MapSetAndGet(uint256) (runs: 261, μ: 81495, ~: 81717) -LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 261, μ: 68480, ~: 69243) -LibMapTest:testUint32MapSearchSorted(uint256) (runs: 261, μ: 107149, ~: 87027) +LibMapTest:testUint16MapSetAndGet(uint256) (runs: 314, μ: 81510, ~: 81715) +LibMapTest:testUint16MapSetAndGet2(uint256) (runs: 314, μ: 68486, ~: 69242) +LibMapTest:testUint32MapSearchSorted(uint256) (runs: 314, μ: 106852, ~: 87361) LibMapTest:testUint32MapSetAndGet() (gas: 1067796) -LibMapTest:testUint32MapSetAndGet(uint256) (runs: 261, μ: 114261, ~: 124625) -LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 261, μ: 68501, ~: 69197) -LibMapTest:testUint32Maps(uint256) (runs: 261, μ: 68693, ~: 72251) -LibMapTest:testUint40MapSearchSorted(uint256) (runs: 261, μ: 122940, ~: 108367) +LibMapTest:testUint32MapSetAndGet(uint256) (runs: 314, μ: 114348, ~: 124787) +LibMapTest:testUint32MapSetAndGet2(uint256) (runs: 314, μ: 68694, ~: 69197) +LibMapTest:testUint32Maps(uint256) (runs: 314, μ: 68479, ~: 72250) +LibMapTest:testUint40MapSearchSorted(uint256) (runs: 314, μ: 125176, ~: 108083) LibMapTest:testUint40MapSetAndGet() (gas: 1127509) -LibMapTest:testUint40MapSetAndGet(uint256) (runs: 261, μ: 137157, ~: 146787) -LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 261, μ: 68436, ~: 69272) -LibMapTest:testUint64MapSearchSorted(uint256) (runs: 261, μ: 132161, ~: 108451) +LibMapTest:testUint40MapSetAndGet(uint256) (runs: 314, μ: 136902, ~: 146781) +LibMapTest:testUint40MapSetAndGet2(uint256) (runs: 314, μ: 68529, ~: 69272) +LibMapTest:testUint64MapSearchSorted(uint256) (runs: 314, μ: 134169, ~: 108814) LibMapTest:testUint64MapSetAndGet() (gas: 1220444) -LibMapTest:testUint64MapSetAndGet(uint256) (runs: 261, μ: 148732, ~: 147375) -LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 261, μ: 68505, ~: 69408) -LibMapTest:testUint8MapSearchSorted(uint256) (runs: 261, μ: 98395, ~: 86156) +LibMapTest:testUint64MapSetAndGet(uint256) (runs: 314, μ: 149202, ~: 147401) +LibMapTest:testUint64MapSetAndGet2(uint256) (runs: 314, μ: 68390, ~: 69261) +LibMapTest:testUint8MapSearchSorted(uint256) (runs: 314, μ: 99847, ~: 86249) LibMapTest:testUint8MapSetAndGet() (gas: 884299) -LibMapTest:testUint8MapSetAndGet(uint256) (runs: 261, μ: 59488, ~: 59566) -LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 261, μ: 68333, ~: 69180) +LibMapTest:testUint8MapSetAndGet(uint256) (runs: 314, μ: 59500, ~: 59566) +LibMapTest:testUint8MapSetAndGet2(uint256) (runs: 314, μ: 68234, ~: 69180) LibMapTest:test__codesize() (gas: 12065) LibPRNGTest:testExponentialWad() (gas: 4394348) LibPRNGTest:testLCGGas() (gas: 20803) LibPRNGTest:testLazyShufflerGet() (gas: 298845) -LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 261, μ: 26628, ~: 26667) +LibPRNGTest:testLazyShufflerGetOutOfBoundsReverts(uint256,uint256) (runs: 314, μ: 26628, ~: 26667) LibPRNGTest:testLazyShufflerNoStorageCollisions() (gas: 266054) -LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 261, μ: 253111, ~: 91499) +LibPRNGTest:testLazyShufflerProducesShuffledRange(uint256) (runs: 314, μ: 219380, ~: 91475) LibPRNGTest:testLazyShufflerProducesShuffledRange2() (gas: 9059432) -LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 261, μ: 191894, ~: 178003) +LibPRNGTest:testLazyShufflerProducesShuffledRangeWithGrow(uint256,uint256) (runs: 314, μ: 189685, ~: 177163) LibPRNGTest:testLazyShufflerRestart() (gas: 276254) LibPRNGTest:testLazyShufflerRevertsOnDoubleInit() (gas: 26824) -LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 261, μ: 64887, ~: 57073) -LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 261, μ: 24683, ~: 24600) -LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 261, μ: 23063, ~: 23497) +LibPRNGTest:testLazyShufflerRevertsOnFinshedNext(uint256) (runs: 314, μ: 64273, ~: 56867) +LibPRNGTest:testLazyShufflerRevertsOnGrowWithInvalidLength(uint256,uint256) (runs: 314, μ: 24689, ~: 24708) +LibPRNGTest:testLazyShufflerRevertsOnInitWithInvalidLength(uint256) (runs: 314, μ: 22909, ~: 23639) LibPRNGTest:testLazyShufflerRevertsOnZeroLengthNext() (gas: 27623) LibPRNGTest:testPRNGGas() (gas: 25667) LibPRNGTest:testPRNGNext() (gas: 16162) @@ -795,260 +795,258 @@ LibPRNGTest:testPRNGShuffleGas() (gas: 1610927) LibPRNGTest:testPRNGUniform() (gas: 559430) LibPRNGTest:testStandardNormalWad() (gas: 4425913) LibPRNGTest:test__codesize() (gas: 14449) -LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 261, μ: 4406, ~: 4203) +LibRLPTest:testComputeAddressDifferential(address,uint256) (runs: 314, μ: 4442, ~: 4287) LibRLPTest:testComputeAddressForLargeNonces() (gas: 1760) LibRLPTest:testComputeAddressForSmallNonces() (gas: 1007) LibRLPTest:testComputeAddressOriginalForLargeNonces() (gas: 3766) LibRLPTest:testComputeAddressOriginalForSmallNonces() (gas: 2185) -LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 261, μ: 294403, ~: 26289) -LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 261, μ: 147046, ~: 28012) -LibRLPTest:testRLPEncodeBool(bool) (runs: 261, μ: 27685, ~: 27818) +LibRLPTest:testRLPEncodeAddressDifferential(address) (runs: 314, μ: 257857, ~: 26286) +LibRLPTest:testRLPEncodeAddressViaList(address,address) (runs: 314, μ: 151987, ~: 28014) +LibRLPTest:testRLPEncodeBool(bool) (runs: 314, μ: 27682, ~: 27818) LibRLPTest:testRLPEncodeBytes() (gas: 382181) LibRLPTest:testRLPEncodeBytes2() (gas: 156293) -LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 261, μ: 262215, ~: 29064) +LibRLPTest:testRLPEncodeBytesDifferential(bytes32) (runs: 314, μ: 265390, ~: 29578) LibRLPTest:testRLPEncodeList() (gas: 2738950) LibRLPTest:testRLPEncodeList2() (gas: 803256) -LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 261, μ: 418629, ~: 645668) +LibRLPTest:testRLPEncodeListDifferential(bytes,uint256) (runs: 314, μ: 442046, ~: 645881) LibRLPTest:testRLPEncodeUint() (gas: 1291481) -LibRLPTest:testRLPEncodeUint(uint256) (runs: 261, μ: 103646, ~: 24956) -LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 261, μ: 249313, ~: 27114) -LibRLPTest:testRLPMemory(bytes32) (runs: 261, μ: 322042, ~: 34560) +LibRLPTest:testRLPEncodeUint(uint256) (runs: 314, μ: 105905, ~: 24990) +LibRLPTest:testRLPEncodeUintDifferential(uint256) (runs: 314, μ: 244547, ~: 27082) +LibRLPTest:testRLPMemory(bytes32) (runs: 314, μ: 325106, ~: 34808) LibRLPTest:testRLPPUint256() (gas: 364901) -LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 261, μ: 23663, ~: 23700) +LibRLPTest:testSmallLog256Equivalence(uint256) (runs: 314, μ: 23670, ~: 23700) LibRLPTest:test__codesize() (gas: 15520) -LibSortTest:testCopy(uint256) (runs: 261, μ: 58092, ~: 25576) -LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 261, μ: 32164, ~: 24968) +LibSortTest:testCopy(uint256) (runs: 314, μ: 56514, ~: 25734) +LibSortTest:testInsertionSortAddressesDifferential(uint256) (runs: 314, μ: 45278, ~: 24962) LibSortTest:testInsertionSortInts() (gas: 80727) LibSortTest:testInsertionSortPsuedorandom() (gas: 63725) -LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 261, μ: 62380, ~: 62421) -LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 261, μ: 39005, ~: 28974) -LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 261, μ: 36143, ~: 28387) -LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 261, μ: 32515, ~: 28442) -LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 261, μ: 44809, ~: 29821) -LibSortTest:testIsSortedDifferential(uint256) (runs: 261, μ: 40375, ~: 28764) -LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 261, μ: 46997, ~: 30057) +LibSortTest:testInsertionSortPsuedorandom(uint256) (runs: 314, μ: 62366, ~: 62421) +LibSortTest:testIsSortedAddressesDifferential(uint256) (runs: 314, μ: 37265, ~: 29063) +LibSortTest:testIsSortedAndUniquifiedAddressesDifferential(uint256) (runs: 314, μ: 36281, ~: 28497) +LibSortTest:testIsSortedAndUniquifiedDifferential(uint256) (runs: 314, μ: 33569, ~: 28486) +LibSortTest:testIsSortedAndUniquifiedIntsDifferential(uint256) (runs: 314, μ: 44021, ~: 29826) +LibSortTest:testIsSortedDifferential(uint256) (runs: 314, μ: 38758, ~: 28576) +LibSortTest:testIsSortedIntsDifferential(uint256) (runs: 314, μ: 46384, ~: 29861) LibSortTest:testReverse() (gas: 117297) LibSortTest:testSearchSorted() (gas: 118972) LibSortTest:testSearchSortedAddresses() (gas: 251950) LibSortTest:testSearchSortedBasicCases() (gas: 2244) -LibSortTest:testSearchSortedDifferential(uint256) (runs: 261, μ: 48103, ~: 31134) +LibSortTest:testSearchSortedDifferential(uint256) (runs: 314, μ: 47792, ~: 31531) LibSortTest:testSearchSortedEdgeCases() (gas: 1617) -LibSortTest:testSearchSortedElementInArray(uint256) (runs: 261, μ: 59434, ~: 31434) +LibSortTest:testSearchSortedElementInArray(uint256) (runs: 314, μ: 56762, ~: 31355) LibSortTest:testSearchSortedElementNotInArray() (gas: 6135) -LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 261, μ: 48317, ~: 32945) +LibSortTest:testSearchSortedElementNotInArray(uint256) (runs: 314, μ: 49625, ~: 33214) LibSortTest:testSearchSortedInts() (gas: 120794) -LibSortTest:testSearchSortedInts(int256[],int256) (runs: 261, μ: 11981, ~: 11602) +LibSortTest:testSearchSortedInts(int256[],int256) (runs: 314, μ: 12198, ~: 11897) LibSortTest:testSearchSortedWithEmptyArray() (gas: 709) -LibSortTest:testSort(uint256) (runs: 261, μ: 39604, ~: 28756) -LibSortTest:testSortAddressesDifferential(uint256) (runs: 261, μ: 57219, ~: 31470) +LibSortTest:testSort(uint256) (runs: 314, μ: 39463, ~: 28990) +LibSortTest:testSortAddressesDifferential(uint256) (runs: 314, μ: 59259, ~: 31341) LibSortTest:testSortAddressesPsuedorandom() (gas: 148711) -LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 261, μ: 148884, ~: 148874) +LibSortTest:testSortAddressesPsuedorandom(uint256) (runs: 314, μ: 148890, ~: 148903) LibSortTest:testSortAddressesPsuedorandomBrutalizeUpperBits() (gas: 200629) LibSortTest:testSortAddressesReversed() (gas: 45400) LibSortTest:testSortAddressesSorted() (gas: 42376) LibSortTest:testSortBasicCase() (gas: 1210) -LibSortTest:testSortChecksumed(uint256) (runs: 261, μ: 46565, ~: 31323) -LibSortTest:testSortDifferential(uint256) (runs: 261, μ: 53901, ~: 28312) +LibSortTest:testSortChecksumed(uint256) (runs: 314, μ: 45490, ~: 31177) +LibSortTest:testSortDifferential(uint256) (runs: 314, μ: 58045, ~: 27772) LibSortTest:testSortInts() (gas: 895631) LibSortTest:testSortMostlySame() (gas: 67374) LibSortTest:testSortOriginalMostlySame() (gas: 207985) LibSortTest:testSortOriginalPsuedorandom() (gas: 283954) -LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 261, μ: 287278, ~: 286662) +LibSortTest:testSortOriginalPsuedorandom(uint256) (runs: 314, μ: 287548, ~: 286753) LibSortTest:testSortOriginalReversed() (gas: 156282) LibSortTest:testSortOriginalSorted() (gas: 142263) LibSortTest:testSortPsuedorandom() (gas: 141932) -LibSortTest:testSortPsuedorandom(uint256) (runs: 261, μ: 142285, ~: 142201) +LibSortTest:testSortPsuedorandom(uint256) (runs: 314, μ: 142241, ~: 142201) LibSortTest:testSortPsuedorandomNonuniform() (gas: 147496) -LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 261, μ: 147691, ~: 147559) +LibSortTest:testSortPsuedorandomNonuniform(uint256) (runs: 314, μ: 147778, ~: 147646) LibSortTest:testSortReversed() (gas: 38827) LibSortTest:testSortSorted() (gas: 35785) LibSortTest:testSortTestOverhead() (gas: 103630) LibSortTest:testSortedDifferenceDifferential() (gas: 183604) -LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 261, μ: 35070, ~: 35021) -LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 261, μ: 36859, ~: 36352) -LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 261, μ: 58982, ~: 52947) +LibSortTest:testSortedDifferenceDifferential(uint256) (runs: 314, μ: 35350, ~: 35236) +LibSortTest:testSortedDifferenceDifferentialInt(uint256) (runs: 314, μ: 36987, ~: 36413) +LibSortTest:testSortedDifferenceUnionIntersection(uint256) (runs: 314, μ: 58627, ~: 52938) LibSortTest:testSortedIntersectionDifferential() (gas: 209797) -LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 261, μ: 33090, ~: 32348) -LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 261, μ: 34634, ~: 34120) +LibSortTest:testSortedIntersectionDifferential(uint256) (runs: 314, μ: 33161, ~: 32416) +LibSortTest:testSortedIntersectionDifferentialInt(uint256) (runs: 314, μ: 34694, ~: 34214) LibSortTest:testSortedUnionDifferential() (gas: 217387) -LibSortTest:testSortedUnionDifferential(uint256) (runs: 261, μ: 35350, ~: 34942) -LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 261, μ: 38330, ~: 37686) -LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 261, μ: 515, ~: 514) +LibSortTest:testSortedUnionDifferential(uint256) (runs: 314, μ: 35328, ~: 34999) +LibSortTest:testSortedUnionDifferentialInt(uint256) (runs: 314, μ: 38445, ~: 37738) +LibSortTest:testTwoComplementConversionSort(int256,int256) (runs: 314, μ: 515, ~: 514) LibSortTest:testUniquifySorted() (gas: 1710) -LibSortTest:testUniquifySorted(uint256) (runs: 261, μ: 47147, ~: 27663) +LibSortTest:testUniquifySorted(uint256) (runs: 314, μ: 49456, ~: 28582) LibSortTest:testUniquifySortedAddress() (gas: 4039) -LibSortTest:testUniquifySortedAddress(uint256) (runs: 261, μ: 51251, ~: 28918) -LibSortTest:testUniquifySortedDifferential(uint256) (runs: 261, μ: 52171, ~: 31828) +LibSortTest:testUniquifySortedAddress(uint256) (runs: 314, μ: 50397, ~: 28918) +LibSortTest:testUniquifySortedDifferential(uint256) (runs: 314, μ: 52807, ~: 31845) LibSortTest:testUniquifySortedWithEmptyArray() (gas: 506) LibSortTest:test__codesize() (gas: 21692) -LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 261, μ: 3414, ~: 3414) +LibStringTest:testAddressToHexStringZeroRightPadded(address) (runs: 314, μ: 3414, ~: 3414) LibStringTest:testBytesToHexString() (gas: 4801) -LibStringTest:testBytesToHexString(bytes) (runs: 261, μ: 718580, ~: 624183) +LibStringTest:testBytesToHexString(bytes) (runs: 314, μ: 756249, ~: 624282) LibStringTest:testBytesToHexStringNoPrefix() (gas: 4489) -LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 261, μ: 730497, ~: 623916) +LibStringTest:testBytesToHexStringNoPrefix(bytes) (runs: 314, μ: 736555, ~: 623982) LibStringTest:testContains() (gas: 43988) LibStringTest:testFromAddressToHexString() (gas: 3137) LibStringTest:testFromAddressToHexStringChecksummed() (gas: 35217) -LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 261, μ: 705742, ~: 612898) +LibStringTest:testFromAddressToHexStringChecksummedDifferential(uint256) (runs: 314, μ: 690085, ~: 612913) LibStringTest:testFromAddressToHexStringWithLeadingZeros() (gas: 3113) -LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 261, μ: 738975, ~: 622558) +LibStringTest:testHexStringNoPrefixVariants(uint256,uint256) (runs: 314, μ: 772487, ~: 622786) LibStringTest:testNormalizeSmallString() (gas: 1387) -LibStringTest:testNormalizeSmallString(bytes32) (runs: 261, μ: 2945, ~: 4213) +LibStringTest:testNormalizeSmallString(bytes32) (runs: 314, μ: 3021, ~: 4213) LibStringTest:testStringConcat() (gas: 4003) -LibStringTest:testStringConcat(string,string) (runs: 261, μ: 697488, ~: 604389) +LibStringTest:testStringConcat(string,string) (runs: 314, μ: 702002, ~: 604396) LibStringTest:testStringConcatOriginal() (gas: 4654) LibStringTest:testStringDirectReturn() (gas: 6741) -LibStringTest:testStringDirectReturn(string) (runs: 261, μ: 3002, ~: 2916) +LibStringTest:testStringDirectReturn(string) (runs: 314, μ: 3002, ~: 2916) LibStringTest:testStringEndsWith() (gas: 2829) -LibStringTest:testStringEndsWith(uint256) (runs: 261, μ: 710390, ~: 636879) -LibStringTest:testStringEq(string,string) (runs: 261, μ: 1566, ~: 1567) +LibStringTest:testStringEndsWith(uint256) (runs: 314, μ: 700718, ~: 637082) +LibStringTest:testStringEq(string,string) (runs: 314, μ: 1566, ~: 1567) LibStringTest:testStringEqs() (gas: 2013) LibStringTest:testStringEscapeHTML() (gas: 8427) -LibStringTest:testStringEscapeHTML(uint256) (runs: 261, μ: 725179, ~: 641278) +LibStringTest:testStringEscapeHTML(uint256) (runs: 314, μ: 736246, ~: 641275) LibStringTest:testStringEscapeJSON() (gas: 39797) LibStringTest:testStringEscapeJSONHexEncode() (gas: 727636) LibStringTest:testStringIndexOf() (gas: 17375) -LibStringTest:testStringIndexOf(uint256) (runs: 261, μ: 761734, ~: 644465) +LibStringTest:testStringIndexOf(uint256) (runs: 314, μ: 765613, ~: 645010) LibStringTest:testStringIndicesOf() (gas: 11700) -LibStringTest:testStringIndicesOf(uint256) (runs: 261, μ: 802047, ~: 649126) +LibStringTest:testStringIndicesOf(uint256) (runs: 314, μ: 805248, ~: 648623) LibStringTest:testStringIs7BitASCII() (gas: 205346) -LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 261, μ: 708389, ~: 604145) +LibStringTest:testStringIs7BitASCIIDifferential(bytes) (runs: 314, μ: 727988, ~: 604157) LibStringTest:testStringIs7BitASCIIWithAllowedLookup() (gas: 4939) -LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 261, μ: 703532, ~: 603927) +LibStringTest:testStringIs7BitASCIIWithAllowedLookupDifferential(bytes,uint128) (runs: 314, μ: 682191, ~: 603922) LibStringTest:testStringLastIndexOf() (gas: 24042) -LibStringTest:testStringLastIndexOf(uint256) (runs: 261, μ: 716296, ~: 646037) +LibStringTest:testStringLastIndexOf(uint256) (runs: 314, μ: 721355, ~: 646300) LibStringTest:testStringLowerDifferential() (gas: 3405674) -LibStringTest:testStringLowerDifferential(string) (runs: 261, μ: 8244, ~: 7991) +LibStringTest:testStringLowerDifferential(string) (runs: 314, μ: 8341, ~: 8072) LibStringTest:testStringLowerOriginal() (gas: 1219) LibStringTest:testStringPackAndUnpackOne() (gas: 756426) -LibStringTest:testStringPackAndUnpackOne(string) (runs: 261, μ: 701751, ~: 603179) -LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 261, μ: 703409, ~: 603035) +LibStringTest:testStringPackAndUnpackOne(string) (runs: 314, μ: 683845, ~: 603179) +LibStringTest:testStringPackAndUnpackOneDifferential(string) (runs: 314, μ: 690324, ~: 603035) LibStringTest:testStringPackAndUnpackTwo() (gas: 916242) -LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 261, μ: 784197, ~: 604554) -LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 261, μ: 732428, ~: 603993) +LibStringTest:testStringPackAndUnpackTwo(string,string) (runs: 314, μ: 776437, ~: 604560) +LibStringTest:testStringPackAndUnpackTwoDifferential(string,string) (runs: 314, μ: 723366, ~: 603980) LibStringTest:testStringRepeat() (gas: 4986) -LibStringTest:testStringRepeat(string,uint256) (runs: 261, μ: 674832, ~: 606545) +LibStringTest:testStringRepeat(string,uint256) (runs: 314, μ: 691929, ~: 606494) LibStringTest:testStringRepeatOriginal() (gas: 9620) -LibStringTest:testStringReplace(uint256) (runs: 261, μ: 850844, ~: 649496) +LibStringTest:testStringReplace(uint256) (runs: 314, μ: 821692, ~: 650497) LibStringTest:testStringReplaceLong() (gas: 8573) LibStringTest:testStringReplaceMedium() (gas: 7581) LibStringTest:testStringReplaceShort() (gas: 12329) LibStringTest:testStringRuneCount() (gas: 3035897) -LibStringTest:testStringRuneCountDifferential(string) (runs: 261, μ: 6068, ~: 5868) +LibStringTest:testStringRuneCountDifferential(string) (runs: 314, μ: 6152, ~: 5918) LibStringTest:testStringSlice() (gas: 9257) -LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 261, μ: 734715, ~: 628224) -LibStringTest:testStringSlice(uint256) (runs: 261, μ: 849111, ~: 644840) +LibStringTest:testStringSlice(bytes,uint256,uint256) (runs: 314, μ: 738383, ~: 628261) +LibStringTest:testStringSlice(uint256) (runs: 314, μ: 845825, ~: 645112) LibStringTest:testStringSplit() (gas: 20309) -LibStringTest:testStringSplit(uint256) (runs: 261, μ: 768737, ~: 648024) +LibStringTest:testStringSplit(uint256) (runs: 314, μ: 753700, ~: 647957) LibStringTest:testStringStartsWith() (gas: 2544) -LibStringTest:testStringStartsWith(uint256) (runs: 261, μ: 789735, ~: 636798) +LibStringTest:testStringStartsWith(uint256) (runs: 314, μ: 807085, ~: 636871) LibStringTest:testStringUpperDifferential() (gas: 3084191) -LibStringTest:testStringUpperDifferential(string) (runs: 261, μ: 8243, ~: 7990) +LibStringTest:testStringUpperDifferential(string) (runs: 314, μ: 8340, ~: 8071) LibStringTest:testStringUpperOriginal() (gas: 1218) LibStringTest:testTo7BitASCIIAllowedLookup() (gas: 3113) LibStringTest:testToHexStringFixedLengthInsufficientLength() (gas: 3395) LibStringTest:testToHexStringFixedLengthPositiveNumberLong() (gas: 3699) LibStringTest:testToHexStringFixedLengthPositiveNumberShort() (gas: 940) LibStringTest:testToHexStringFixedLengthUint256Max() (gas: 3656) -LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 261, μ: 8335, ~: 6075) +LibStringTest:testToHexStringFixedLengthZeroRightPadded(uint256,uint256) (runs: 314, μ: 8289, ~: 6491) LibStringTest:testToHexStringPositiveNumber() (gas: 865) LibStringTest:testToHexStringUint256Max() (gas: 3398) LibStringTest:testToHexStringZero() (gas: 805) -LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 261, μ: 1943, ~: 1465) +LibStringTest:testToHexStringZeroRightPadded(uint256) (runs: 314, μ: 1936, ~: 1548) LibStringTest:testToMinimalHexStringNoPrefixPositiveNumber() (gas: 3426) LibStringTest:testToMinimalHexStringNoPrefixUint256Max() (gas: 3424) LibStringTest:testToMinimalHexStringNoPrefixZero() (gas: 831) -LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 261, μ: 1963, ~: 1487) +LibStringTest:testToMinimalHexStringNoPrefixZeroRightPadded(uint256) (runs: 314, μ: 1957, ~: 1570) LibStringTest:testToMinimalHexStringPositiveNumber() (gas: 3556) LibStringTest:testToMinimalHexStringUint256Max() (gas: 3470) LibStringTest:testToMinimalHexStringZero() (gas: 829) -LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 261, μ: 1990, ~: 1512) +LibStringTest:testToMinimalHexStringZeroRightPadded(uint256) (runs: 314, μ: 1984, ~: 1595) LibStringTest:testToSmallString() (gas: 4448) LibStringTest:testToStringPositiveNumber() (gas: 910) LibStringTest:testToStringPositiveNumberBrutalized() (gas: 603313) -LibStringTest:testToStringSignedDifferential(int256) (runs: 261, μ: 713472, ~: 606018) +LibStringTest:testToStringSignedDifferential(int256) (runs: 314, μ: 744987, ~: 606149) LibStringTest:testToStringSignedGas() (gas: 7305) -LibStringTest:testToStringSignedMemory(int256) (runs: 261, μ: 707540, ~: 604271) +LibStringTest:testToStringSignedMemory(int256) (runs: 314, μ: 689754, ~: 604275) LibStringTest:testToStringSignedOriginalGas() (gas: 9839) LibStringTest:testToStringUint256Max() (gas: 6687) LibStringTest:testToStringUint256MaxBrutalized() (gas: 614604) LibStringTest:testToStringZero() (gas: 699) LibStringTest:testToStringZeroBrutalized() (gas: 602785) -LibStringTest:testToStringZeroRightPadded(uint256) (runs: 261, μ: 737065, ~: 603690) +LibStringTest:testToStringZeroRightPadded(uint256) (runs: 314, μ: 727797, ~: 603756) LibStringTest:test__codesize() (gas: 43124) LibZipTest:testCdCompress() (gas: 126842) -LibZipTest:testCdCompressDecompress(bytes) (runs: 261, μ: 772876, ~: 658236) -LibZipTest:testCdCompressDecompress(uint256) (runs: 261, μ: 746549, ~: 676923) +LibZipTest:testCdCompressDecompress(bytes) (runs: 314, μ: 774162, ~: 658750) +LibZipTest:testCdCompressDecompress(uint256) (runs: 314, μ: 759882, ~: 677503) LibZipTest:testCdDecompressOnInvalidInput() (gas: 1397) LibZipTest:testCdFallback() (gas: 5622174) -LibZipTest:testCdFallback(bytes,uint256) (runs: 261, μ: 1197149, ~: 1062042) -LibZipTest:testCdFallbackDecompressor(bytes) (runs: 261, μ: 121083, ~: 116964) -LibZipTest:testCdFallbackDecompressor(uint256) (runs: 261, μ: 175826, ~: 158909) -LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 261, μ: 594, ~: 585) -LibZipTest:testDecompressWontRevert(bytes) (runs: 261, μ: 744239, ~: 636907) +LibZipTest:testCdFallback(bytes,uint256) (runs: 314, μ: 1197433, ~: 1062847) +LibZipTest:testCdFallbackDecompressor(bytes) (runs: 314, μ: 121486, ~: 118046) +LibZipTest:testCdFallbackDecompressor(uint256) (runs: 314, μ: 174025, ~: 158204) +LibZipTest:testCdFallbackMaskTrick(uint256,uint256) (runs: 314, μ: 593, ~: 585) +LibZipTest:testDecompressWontRevert(bytes) (runs: 314, μ: 735706, ~: 637644) LibZipTest:testFlzCompressDecompress() (gas: 1254342) -LibZipTest:testFlzCompressDecompress(bytes) (runs: 261, μ: 779076, ~: 674635) +LibZipTest:testFlzCompressDecompress(bytes) (runs: 314, μ: 775515, ~: 673172) LibZipTest:testFlzCompressDecompress2() (gas: 763987) LibZipTest:test__codesize() (gas: 20417) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 261, μ: 2825944, ~: 3944547) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 261, μ: 922364, ~: 922256) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 261, μ: 926717, ~: 917654) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 261, μ: 909640, ~: 916541) -LifebuoyTest:testLockEverything() (gas: 645231) -LifebuoyTest:testLockRescue() (gas: 671346) -LifebuoyTest:testLockRescueETH() (gas: 683764) -LifebuoyTest:testRescueERC20(uint256) (runs: 261, μ: 639209, ~: 640721) -LifebuoyTest:testRescueERC721(bytes32) (runs: 261, μ: 637276, ~: 637489) -LifebuoyTest:testRescueETH(uint256) (runs: 261, μ: 647784, ~: 648441) -LifebuoyTest:test__codesize() (gas: 29733) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 314, μ: 3033313, ~: 3332659) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 314, μ: 1348709, ~: 1348662) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 314, μ: 1352182, ~: 1344064) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 314, μ: 1334337, ~: 1343048) +LifebuoyTest:testLockEverything() (gas: 950470) +LifebuoyTest:testLockRescue() (gas: 969488) +LifebuoyTest:testLockRescueETH() (gas: 981752) +LifebuoyTest:testRescueAll(bytes32) (runs: 314, μ: 1593894, ~: 981604) +LifebuoyTest:test__codesize() (gas: 45861) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) -MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 261, μ: 749540, ~: 640707) -MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 261, μ: 37787, ~: 38119) -MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 261, μ: 6509, ~: 6490) -MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 261, μ: 951689, ~: 814961) +MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 314, μ: 742571, ~: 640794) +MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 314, μ: 37829, ~: 39250) +MerkleProofLibTest:testVerifyMultiProofForHeightTwoTree(bool,bool,bool,bool,bool,bytes32) (runs: 314, μ: 6506, ~: 6490) +MerkleProofLibTest:testVerifyMultiProofForSingleLeaf(bytes32[],uint256) (runs: 314, μ: 926997, ~: 814804) MerkleProofLibTest:testVerifyMultiProofIsInvalid() (gas: 638379) MerkleProofLibTest:testVerifyMultiProofIsValid() (gas: 640255) MerkleProofLibTest:testVerifyMultiProofMalicious() (gas: 7918) -MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 261, μ: 871004, ~: 790518) -MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 261, μ: 4040, ~: 3906) +MerkleProofLibTest:testVerifyProof(bytes32[],uint256) (runs: 314, μ: 893372, ~: 794724) +MerkleProofLibTest:testVerifyProofBasicCase(bool,bool,bool,bytes32) (runs: 314, μ: 4044, ~: 3906) MerkleProofLibTest:testVerifyProofBasicCaseIsInvalid() (gas: 3626) MerkleProofLibTest:testVerifyProofBasicCaseIsValid() (gas: 3590) -MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 261, μ: 2694, ~: 2968) +MerkleProofLibTest:testVerifyProofForHeightOneTree(bool,bool,bool,bool) (runs: 314, μ: 2694, ~: 2968) MerkleProofLibTest:test__codesize() (gas: 11742) -MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 261, μ: 25477, ~: 25480) +MetadataReaderLibTest:testBoundsCheckDifferential(uint256) (runs: 314, μ: 25472, ~: 25477) MetadataReaderLibTest:testReadBytes32String() (gas: 664725) MetadataReaderLibTest:testReadBytes32StringTruncated() (gas: 775178) -MetadataReaderLibTest:testReadString(uint256) (runs: 261, μ: 849560, ~: 719816) +MetadataReaderLibTest:testReadString(uint256) (runs: 314, μ: 838411, ~: 719679) MetadataReaderLibTest:testReadStringChopped() (gas: 272350) -MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 261, μ: 816575, ~: 707065) +MetadataReaderLibTest:testReadStringTruncated(uint256) (runs: 314, μ: 819206, ~: 707230) MetadataReaderLibTest:testReadUint() (gas: 921729) -MetadataReaderLibTest:testReadUint(uint256) (runs: 261, μ: 46834, ~: 47133) +MetadataReaderLibTest:testReadUint(uint256) (runs: 314, μ: 46700, ~: 47136) MetadataReaderLibTest:test__codesize() (gas: 8122) -MinHeapLibTest:testHeapEnqueue(uint256) (runs: 261, μ: 181488, ~: 180811) -MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 261, μ: 605837, ~: 490582) +MinHeapLibTest:testHeapEnqueue(uint256) (runs: 314, μ: 182524, ~: 179952) +MinHeapLibTest:testHeapEnqueue2(uint256) (runs: 314, μ: 586652, ~: 432283) MinHeapLibTest:testHeapEnqueueGas() (gas: 841356) -MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 261, μ: 46779, ~: 28352) -MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 261, μ: 687, ~: 517) -MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 261, μ: 115740, ~: 124977) -MinHeapLibTest:testHeapPushPop(uint256) (runs: 261, μ: 253488, ~: 239022) -MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 261, μ: 971648, ~: 842736) -MinHeapLibTest:testHeapReplace(uint256) (runs: 261, μ: 299041, ~: 310865) -MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 261, μ: 43942, ~: 28717) -MinHeapLibTest:testHeapRoot(uint256) (runs: 261, μ: 47690, ~: 47448) -MinHeapLibTest:testHeapSmallest(uint256) (runs: 261, μ: 1338409, ~: 1101475) +MinHeapLibTest:testHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 314, μ: 46672, ~: 28352) +MinHeapLibTest:testHeapPSiftTrick(uint256,uint256,uint256) (runs: 314, μ: 684, ~: 517) +MinHeapLibTest:testHeapPushAndPop(uint256) (runs: 314, μ: 114226, ~: 124777) +MinHeapLibTest:testHeapPushPop(uint256) (runs: 314, μ: 246457, ~: 233342) +MinHeapLibTest:testHeapPushPopLength(uint256) (runs: 314, μ: 962099, ~: 851653) +MinHeapLibTest:testHeapReplace(uint256) (runs: 314, μ: 295376, ~: 301355) +MinHeapLibTest:testHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 314, μ: 44449, ~: 28720) +MinHeapLibTest:testHeapRoot(uint256) (runs: 314, μ: 47018, ~: 37512) +MinHeapLibTest:testHeapSmallest(uint256) (runs: 314, μ: 1341472, ~: 1116824) MinHeapLibTest:testHeapSmallestGas() (gas: 50069382) -MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 261, μ: 1598784, ~: 948973) -MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 261, μ: 876137, ~: 755008) +MinHeapLibTest:testMemHeapEnqueue(uint256) (runs: 314, μ: 1617072, ~: 944267) +MinHeapLibTest:testMemHeapEnqueue2(uint256) (runs: 314, μ: 870611, ~: 752171) MinHeapLibTest:testMemHeapEnqueueGas() (gas: 249458) -MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 261, μ: 25022, ~: 23903) -MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 261, μ: 1003867, ~: 853646) +MinHeapLibTest:testMemHeapEnqueueZeroMaxLengthReverts(uint256) (runs: 314, μ: 24975, ~: 23896) +MinHeapLibTest:testMemHeapPushAndPop(uint256) (runs: 314, μ: 987370, ~: 836862) MinHeapLibTest:testMemHeapPushGas() (gas: 35596) -MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 261, μ: 1459633, ~: 1051009) -MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 261, μ: 883179, ~: 718252) -MinHeapLibTest:testMemHeapReplace(uint256) (runs: 261, μ: 949484, ~: 803905) -MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 261, μ: 25712, ~: 25273) -MinHeapLibTest:testMemHeapRoot(uint256) (runs: 261, μ: 737658, ~: 655854) -MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 261, μ: 1016551, ~: 767924) +MinHeapLibTest:testMemHeapPushPop(uint256) (runs: 314, μ: 1408880, ~: 1040410) +MinHeapLibTest:testMemHeapPushPopLength(uint256) (runs: 314, μ: 870236, ~: 717875) +MinHeapLibTest:testMemHeapReplace(uint256) (runs: 314, μ: 946600, ~: 803741) +MinHeapLibTest:testMemHeapReplaceOrPopEmptyHeapReverts(uint256) (runs: 314, μ: 25711, ~: 25271) +MinHeapLibTest:testMemHeapRoot(uint256) (runs: 314, μ: 753999, ~: 655854) +MinHeapLibTest:testMemHeapSmallest(uint256) (runs: 314, μ: 1001762, ~: 767547) MinHeapLibTest:testMemHeapSmallestGas() (gas: 2985537) MinHeapLibTest:testMemHeapWriteAndReadFromStorage() (gas: 67756) MinHeapLibTest:testMemHeapWriteAndReadFromStorage2() (gas: 67774) @@ -1057,78 +1055,78 @@ MulticallableTest:testMulticallableBenchmark() (gas: 29642) MulticallableTest:testMulticallableOriginalBenchmark() (gas: 38935) MulticallableTest:testMulticallablePreservesMsgSender() (gas: 11166) MulticallableTest:testMulticallableReturnDataIsProperlyEncoded() (gas: 11665) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 261, μ: 12104, ~: 7437) -MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 261, μ: 11811, ~: 11811) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(string,string,uint256) (runs: 314, μ: 12109, ~: 7437) +MulticallableTest:testMulticallableReturnDataIsProperlyEncoded(uint256,uint256,uint256,uint256) (runs: 314, μ: 11811, ~: 11811) MulticallableTest:testMulticallableRevertWithCustomError() (gas: 11811) MulticallableTest:testMulticallableRevertWithMessage() (gas: 13483) -MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 261, μ: 14094, ~: 13944) +MulticallableTest:testMulticallableRevertWithMessage(string) (runs: 314, μ: 14095, ~: 13944) MulticallableTest:testMulticallableRevertWithNothing() (gas: 11673) MulticallableTest:testMulticallableWithNoData() (gas: 6286) MulticallableTest:test__codesize() (gas: 8867) OwnableRolesTest:testBytecodeSize() (gas: 350635) -OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 261, μ: 41572, ~: 42162) -OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 261, μ: 27787, ~: 20899) +OwnableRolesTest:testGrantAndRemoveRolesDirect(address,uint256,uint256) (runs: 314, μ: 41487, ~: 42162) +OwnableRolesTest:testGrantAndRevokeOrRenounceRoles(address,bool,bool,bool,uint256,uint256) (runs: 314, μ: 27966, ~: 28546) OwnableRolesTest:testGrantRoles() (gas: 36348) OwnableRolesTest:testHandoverOwnership() (gas: 32807) -OwnableRolesTest:testHandoverOwnership(address) (runs: 261, μ: 32845, ~: 32832) +OwnableRolesTest:testHandoverOwnership(address) (runs: 314, μ: 32844, ~: 32832) OwnableRolesTest:testHandoverOwnershipAfterExpiration() (gas: 37152) OwnableRolesTest:testHandoverOwnershipBeforeExpiration() (gas: 28907) OwnableRolesTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35826) OwnableRolesTest:testHandoverOwnershipWithCancellation() (gas: 31247) -OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 261, μ: 34003, ~: 34006) -OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 261, μ: 33641, ~: 33793) +OwnableRolesTest:testHasAllRoles(address,uint256,uint256,uint256,bool) (runs: 314, μ: 34003, ~: 34003) +OwnableRolesTest:testHasAnyRole(address,uint256,uint256) (runs: 314, μ: 33604, ~: 33793) OwnableRolesTest:testInitializeOwnerDirect() (gas: 16950) -OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 261, μ: 20994, ~: 30023) +OwnableRolesTest:testOnlyOwnerModifier(address,bool) (runs: 314, μ: 21077, ~: 30023) OwnableRolesTest:testOnlyOwnerOrRolesModifier() (gas: 36455) -OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 261, μ: 55671, ~: 55319) -OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 261, μ: 56462, ~: 58115) -OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 261, μ: 56601, ~: 57486) +OwnableRolesTest:testOnlyOwnerOrRolesModifier(address,bool,uint256,uint256) (runs: 314, μ: 55644, ~: 55319) +OwnableRolesTest:testOnlyRolesModifier(address,uint256,uint256) (runs: 314, μ: 56332, ~: 58115) +OwnableRolesTest:testOnlyRolesOrOwnerModifier(address,bool,uint256,uint256) (runs: 314, μ: 56607, ~: 57486) OwnableRolesTest:testOrdinalsFromRoles() (gas: 3756443) -OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 261, μ: 58421, ~: 39297) +OwnableRolesTest:testOrdinalsFromRoles(uint256) (runs: 314, μ: 58720, ~: 42265) OwnableRolesTest:testOwnershipHandoverValidForDefaultValue() (gas: 5825) OwnableRolesTest:testRenounceOwnership() (gas: 12945) OwnableRolesTest:testRolesFromOrdinals() (gas: 652364) -OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 261, μ: 80756, ~: 83878) +OwnableRolesTest:testRolesFromOrdinals(uint8[]) (runs: 314, μ: 81676, ~: 85587) OwnableRolesTest:testSetOwnerDirect() (gas: 18019) -OwnableRolesTest:testSetOwnerDirect(address) (runs: 261, μ: 18121, ~: 18139) -OwnableRolesTest:testSetRolesDirect(uint256) (runs: 261, μ: 101482, ~: 101615) +OwnableRolesTest:testSetOwnerDirect(address) (runs: 314, μ: 18124, ~: 18139) +OwnableRolesTest:testSetRolesDirect(uint256) (runs: 314, μ: 101499, ~: 101614) OwnableRolesTest:testTransferOwnership() (gas: 19549) -OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 261, μ: 14441, ~: 12589) +OwnableRolesTest:testTransferOwnership(address,bool,bool) (runs: 314, μ: 14422, ~: 12589) OwnableRolesTest:test__codesize() (gas: 21146) OwnableTest:testBytecodeSize() (gas: 235158) OwnableTest:testHandoverOwnership() (gas: 32465) -OwnableTest:testHandoverOwnership(address) (runs: 261, μ: 32486, ~: 32472) +OwnableTest:testHandoverOwnership(address) (runs: 314, μ: 32485, ~: 32472) OwnableTest:testHandoverOwnershipAfterExpiration() (gas: 36930) OwnableTest:testHandoverOwnershipBeforeExpiration() (gas: 28756) OwnableTest:testHandoverOwnershipRevertsIfCompleteIsNotOwner() (gas: 35560) OwnableTest:testHandoverOwnershipWithCancellation() (gas: 30890) OwnableTest:testInitializeOwnerDirect() (gas: 16825) -OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 261, μ: 20941, ~: 30001) +OwnableTest:testOnlyOwnerModifier(address,bool) (runs: 314, μ: 21024, ~: 30001) OwnableTest:testOwnershipHandoverValidForDefaultValue() (gas: 5737) OwnableTest:testRenounceOwnership() (gas: 12779) OwnableTest:testSetOwnerDirect() (gas: 17929) -OwnableTest:testSetOwnerDirect(address) (runs: 261, μ: 18032, ~: 18050) +OwnableTest:testSetOwnerDirect(address) (runs: 314, μ: 18019, ~: 18050) OwnableTest:testTransferOwnership() (gas: 19446) -OwnableTest:testTransferOwnership(address,bool,bool) (runs: 261, μ: 14301, ~: 12395) +OwnableTest:testTransferOwnership(address,bool,bool) (runs: 314, μ: 14248, ~: 12395) OwnableTest:test__codesize() (gas: 10746) -P256Test:testP256Verify(uint256,bytes32) (runs: 261, μ: 493267, ~: 493060) +P256Test:testP256Verify(uint256,bytes32) (runs: 314, μ: 493372, ~: 493089) P256Test:testP256VerifyMalleableRIPPrecompile() (gas: 341155) P256Test:testP256VerifyMalleableVerifier() (gas: 341175) P256Test:testP256VerifyNonMalleableRIPPrecompile() (gas: 341117) P256Test:testP256VerifyNonMalleableVerifier() (gas: 341095) -P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 261, μ: 10815, ~: 10799) +P256Test:testP256VerifyNotDeployedReverts(bytes32,bytes32,bytes32,bytes32,bytes32,bool) (runs: 314, μ: 10815, ~: 10799) P256Test:testP256VerifyOutOfBounds() (gas: 201377) P256Test:testP256VerifyWycheproof() (gas: 3268) P256Test:test__codesize() (gas: 11373) ReceiverTest:testETHReceived() (gas: 9643) -ReceiverTest:testOnERC1155BatchReceived() (gas: 49754) -ReceiverTest:testOnERC1155Received() (gas: 47428) +ReceiverTest:testOnERC1155BatchReceived() (gas: 69923) +ReceiverTest:testOnERC1155Received() (gas: 67037) ReceiverTest:testOnERC721Received() (gas: 65589) ReceiverTest:test__codesize() (gas: 3053) RedBlackTreeLibTest:testRedBlackTreeBenchUint160() (gas: 3428194) RedBlackTreeLibTest:testRedBlackTreeBenchUint256() (gas: 5841865) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 261, μ: 569587, ~: 563675) -RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 261, μ: 415974, ~: 419965) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove(uint256) (runs: 314, μ: 569609, ~: 565522) +RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove2(uint256) (runs: 314, μ: 418171, ~: 422473) RedBlackTreeLibTest:testRedBlackTreeInsertAndRemove3() (gas: 21564928) RedBlackTreeLibTest:testRedBlackTreeInsertBenchStep() (gas: 3702908) RedBlackTreeLibTest:testRedBlackTreeInsertBenchUint160() (gas: 3468526) @@ -1137,16 +1135,16 @@ RedBlackTreeLibTest:testRedBlackTreeInsertOneGas() (gas: 45558) RedBlackTreeLibTest:testRedBlackTreeInsertTenGas() (gas: 282691) RedBlackTreeLibTest:testRedBlackTreeInsertThreeGas() (gas: 96175) RedBlackTreeLibTest:testRedBlackTreeInsertTwoGas() (gas: 69785) -RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 261, μ: 243334, ~: 243916) -RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 261, μ: 247219, ~: 236660) -RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 261, μ: 270140, ~: 257716) +RedBlackTreeLibTest:testRedBlackTreeNearest(uint256) (runs: 314, μ: 251951, ~: 246543) +RedBlackTreeLibTest:testRedBlackTreeNearestAfter(uint256) (runs: 314, μ: 247920, ~: 227275) +RedBlackTreeLibTest:testRedBlackTreeNearestBefore(uint256) (runs: 314, μ: 267638, ~: 251640) RedBlackTreeLibTest:testRedBlackTreePointers() (gas: 91643) RedBlackTreeLibTest:testRedBlackTreeRejectsEmptyValue() (gas: 3232) RedBlackTreeLibTest:testRedBlackTreeRemoveViaPointer() (gas: 58157) RedBlackTreeLibTest:testRedBlackTreeTreeFullReverts() (gas: 50317) RedBlackTreeLibTest:testRedBlackTreeTryInsertAndRemove() (gas: 56062) RedBlackTreeLibTest:testRedBlackTreeValues() (gas: 188809) -RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 261, μ: 395909, ~: 240002) +RedBlackTreeLibTest:testRedBlackTreeValues(uint256) (runs: 314, μ: 390873, ~: 244003) RedBlackTreeLibTest:test__codesize() (gas: 13203) ReentrancyGuardTest:testRecursiveDirectUnguardedCall() (gas: 34276) ReentrancyGuardTest:testRecursiveIndirectUnguardedCall() (gas: 47727) @@ -1156,109 +1154,109 @@ ReentrancyGuardTest:testRevertRecursiveDirectGuardedCall() (gas: 55123) ReentrancyGuardTest:testRevertRecursiveIndirectGuardedCall() (gas: 56529) ReentrancyGuardTest:testRevertRemoteCallback() (gas: 56230) ReentrancyGuardTest:test__codesize() (gas: 4403) -SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 261, μ: 98893, ~: 30000) +SSTORE2Test:testReadRevertsOnZeroCodeAddress(address) (runs: 314, μ: 93996, ~: 30000) SSTORE2Test:testReadSlicing() (gas: 48874) SSTORE2Test:testWriteRead() (gas: 35880) -SSTORE2Test:testWriteRead(uint256,uint256) (runs: 261, μ: 1035644, ~: 66902) -SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 261, μ: 4933384, ~: 108268) +SSTORE2Test:testWriteRead(uint256,uint256) (runs: 314, μ: 1116529, ~: 67190) +SSTORE2Test:testWriteReadCounterfactual(bytes,bytes32,address) (runs: 314, μ: 4428198, ~: 108268) SSTORE2Test:testWriteReadCustomBounds() (gas: 33936) SSTORE2Test:testWriteReadCustomStartBound() (gas: 34020) SSTORE2Test:testWriteReadDeterministic() (gas: 70156) -SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 261, μ: 3436500, ~: 96934) +SSTORE2Test:testWriteReadDeterministic(bytes,bytes32) (runs: 314, μ: 4106224, ~: 96934) SSTORE2Test:testWriteReadEmptyBound() (gas: 33734) SSTORE2Test:testWriteReadFullBoundedRead() (gas: 35937) SSTORE2Test:testWriteReadFullStartBound() (gas: 33983) SSTORE2Test:testWriteWithTooBigDataReverts() (gas: 97303641) SSTORE2Test:test__codesize() (gas: 8624) -SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 261, μ: 19419, ~: 24780) +SafeCastLibTest:testSafeCastInt256ToInt(int256,uint256) (runs: 314, μ: 19029, ~: 24771) SafeCastLibTest:testSafeCastInt256ToIntBench() (gas: 341694) -SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 261, μ: 406, ~: 406) -SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 261, μ: 503, ~: 405) -SafeCastLibTest:testSafeCastToUint256(int256) (runs: 261, μ: 1320, ~: 428) -SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 261, μ: 26929, ~: 26175) +SafeCastLibTest:testSafeCastInt256ToIntTrickEquivalence(int256) (runs: 314, μ: 406, ~: 406) +SafeCastLibTest:testSafeCastToInt256(uint256) (runs: 314, μ: 495, ~: 405) +SafeCastLibTest:testSafeCastToUint256(int256) (runs: 314, μ: 1296, ~: 428) +SafeCastLibTest:testSafeCastUint256ToInt(uint256,uint256) (runs: 314, μ: 26995, ~: 26195) SafeCastLibTest:testSafeCastUint256ToInt256Bench() (gas: 29380) SafeCastLibTest:testSafeCastUint256ToIntBench() (gas: 330222) SafeCastLibTest:testSafeCastUint256ToUintBench() (gas: 326262) -SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 261, μ: 19227, ~: 24810) +SafeCastLibTest:testSafeCastUintToUint(uint256,uint256) (runs: 314, μ: 19108, ~: 24811) SafeCastLibTest:test__codesize() (gas: 23416) -SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 261, μ: 111581, ~: 124072) +SafeTransferLibTest:testApproveWithGarbageReverts(address,uint256) (runs: 314, μ: 110741, ~: 124067) SafeTransferLibTest:testApproveWithMissingReturn() (gas: 32462) -SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 261, μ: 32606, ~: 32682) +SafeTransferLibTest:testApproveWithMissingReturn(address,uint256) (runs: 314, μ: 32556, ~: 32682) SafeTransferLibTest:testApproveWithNonContract() (gas: 2967) -SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 261, μ: 3739, ~: 3825) -SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 261, μ: 79628, ~: 59765) +SafeTransferLibTest:testApproveWithNonContract(address,address,uint256) (runs: 314, μ: 3753, ~: 3825) +SafeTransferLibTest:testApproveWithNonGarbage(address,uint256) (runs: 314, μ: 79851, ~: 59765) SafeTransferLibTest:testApproveWithRetry() (gas: 790140) -SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 261, μ: 790131, ~: 790310) +SafeTransferLibTest:testApproveWithRetry(address,uint256,uint256) (runs: 314, μ: 790040, ~: 790310) SafeTransferLibTest:testApproveWithRetryWithNonContract() (gas: 2990) -SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 261, μ: 3758, ~: 3844) +SafeTransferLibTest:testApproveWithRetryWithNonContract(address,address,uint256) (runs: 314, μ: 3772, ~: 3844) SafeTransferLibTest:testApproveWithReturnsFalseReverts() (gas: 10122) -SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 261, μ: 10276, ~: 10275) +SafeTransferLibTest:testApproveWithReturnsFalseReverts(address,uint256) (runs: 314, μ: 10276, ~: 10275) SafeTransferLibTest:testApproveWithReturnsTooLittleReverts() (gas: 10026) -SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 261, μ: 10205, ~: 10204) +SafeTransferLibTest:testApproveWithReturnsTooLittleReverts(address,uint256) (runs: 314, μ: 10205, ~: 10204) SafeTransferLibTest:testApproveWithReturnsTooMuch() (gas: 32913) -SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 261, μ: 32991, ~: 33066) -SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 261, μ: 10233, ~: 10232) +SafeTransferLibTest:testApproveWithReturnsTooMuch(address,uint256) (runs: 314, μ: 32940, ~: 33066) +SafeTransferLibTest:testApproveWithReturnsTwoReverts(address,uint256) (runs: 314, μ: 10233, ~: 10232) SafeTransferLibTest:testApproveWithRevertingReverts() (gas: 9983) -SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 261, μ: 10194, ~: 10193) +SafeTransferLibTest:testApproveWithRevertingReverts(address,uint256) (runs: 314, μ: 10194, ~: 10193) SafeTransferLibTest:testApproveWithStandardERC20() (gas: 32348) -SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 261, μ: 32495, ~: 32570) +SafeTransferLibTest:testApproveWithStandardERC20(address,uint256) (runs: 314, μ: 32444, ~: 32570) SafeTransferLibTest:testBalanceOfStandardERC20() (gas: 7852) -SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 261, μ: 37697, ~: 38062) +SafeTransferLibTest:testBalanceOfStandardERC20(address,uint256) (runs: 314, μ: 37744, ~: 38062) SafeTransferLibTest:testForceTransferETHToGriever() (gas: 1511587) -SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 261, μ: 533877, ~: 570885) +SafeTransferLibTest:testForceTransferETHToGriever(uint256,uint256) (runs: 314, μ: 533137, ~: 570885) SafeTransferLibTest:testPermit2() (gas: 90097) -SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 261, μ: 103404, ~: 103347) +SafeTransferLibTest:testPermit2InvalidAmount(uint256) (runs: 314, μ: 103407, ~: 103354) SafeTransferLibTest:testPermit2OnDAI() (gas: 90296) -SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 261, μ: 137575, ~: 137837) +SafeTransferLibTest:testPermit2TransferFromInvalidAmount(uint256) (runs: 314, μ: 137473, ~: 137834) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFrom() (gas: 1136342) SafeTransferLibTest:testSimplePermit2AndPermit2TransferFromGas() (gas: 141122) SafeTransferLibTest:testTransferAllETH() (gas: 34643) -SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 261, μ: 57052, ~: 57052) +SafeTransferLibTest:testTransferAllETH(bytes32) (runs: 314, μ: 57052, ~: 57052) SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts() (gas: 10782) -SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 261, μ: 10869, ~: 10869) +SafeTransferLibTest:testTransferAllETHToContractWithoutFallbackReverts(uint256) (runs: 314, μ: 10869, ~: 10869) SafeTransferLibTest:testTransferAllFromWithStandardERC20() (gas: 33702) -SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 261, μ: 58288, ~: 58274) +SafeTransferLibTest:testTransferAllFromWithStandardERC20(address,address,uint256) (runs: 314, μ: 58285, ~: 58269) SafeTransferLibTest:testTransferAllWithStandardERC20() (gas: 31014) -SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 261, μ: 40084, ~: 40082) +SafeTransferLibTest:testTransferAllWithStandardERC20(address,uint256) (runs: 314, μ: 40084, ~: 40082) SafeTransferLibTest:testTransferETH() (gas: 34622) -SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 261, μ: 57146, ~: 57320) +SafeTransferLibTest:testTransferETH(bytes32,uint256) (runs: 314, μ: 57089, ~: 57320) SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts() (gas: 10851) -SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 261, μ: 10767, ~: 10888) -SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 261, μ: 737958, ~: 656133) +SafeTransferLibTest:testTransferETHToContractWithoutFallbackReverts(uint256) (runs: 314, μ: 10720, ~: 10888) +SafeTransferLibTest:testTransferFromWithGarbageReverts(address,address,uint256) (runs: 314, μ: 737043, ~: 656160) SafeTransferLibTest:testTransferFromWithMissingReturn() (gas: 542453) -SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 261, μ: 633671, ~: 543368) +SafeTransferLibTest:testTransferFromWithMissingReturn(address,address,uint256) (runs: 314, μ: 648726, ~: 543314) SafeTransferLibTest:testTransferFromWithNonContract() (gas: 3066) -SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 261, μ: 4247, ~: 4288) -SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 261, μ: 759899, ~: 593494) +SafeTransferLibTest:testTransferFromWithNonContract(address,address,address,uint256) (runs: 314, μ: 4254, ~: 4288) +SafeTransferLibTest:testTransferFromWithNonGarbage(address,address,uint256) (runs: 314, μ: 743879, ~: 593491) SafeTransferLibTest:testTransferFromWithReturnsFalseReverts() (gas: 508851) -SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 261, μ: 592082, ~: 509166) +SafeTransferLibTest:testTransferFromWithReturnsFalseReverts(address,address,uint256) (runs: 314, μ: 582829, ~: 509171) SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts() (gas: 508583) -SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 261, μ: 581189, ~: 508990) +SafeTransferLibTest:testTransferFromWithReturnsTooLittleReverts(address,address,uint256) (runs: 314, μ: 589986, ~: 509001) SafeTransferLibTest:testTransferFromWithReturnsTooMuch() (gas: 543405) -SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 261, μ: 632141, ~: 544121) -SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 261, μ: 593116, ~: 509144) +SafeTransferLibTest:testTransferFromWithReturnsTooMuch(address,address,uint256) (runs: 314, μ: 630968, ~: 544121) +SafeTransferLibTest:testTransferFromWithReturnsTwoReverts(address,address,uint256) (runs: 314, μ: 600639, ~: 509144) SafeTransferLibTest:testTransferFromWithRevertingReverts() (gas: 501317) -SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 261, μ: 556960, ~: 501795) +SafeTransferLibTest:testTransferFromWithRevertingReverts(address,address,uint256) (runs: 314, μ: 542778, ~: 501833) SafeTransferLibTest:testTransferFromWithStandardERC20() (gas: 541616) -SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 261, μ: 626605, ~: 541454) -SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 261, μ: 747934, ~: 622954) +SafeTransferLibTest:testTransferFromWithStandardERC20(address,address,uint256) (runs: 314, μ: 623515, ~: 541449) +SafeTransferLibTest:testTransferWithGarbageReverts(address,uint256) (runs: 314, μ: 749013, ~: 623072) SafeTransferLibTest:testTransferWithMissingReturn() (gas: 529120) -SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 261, μ: 572458, ~: 529480) +SafeTransferLibTest:testTransferWithMissingReturn(address,uint256) (runs: 314, μ: 580988, ~: 529480) SafeTransferLibTest:testTransferWithNonContract() (gas: 3010) -SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 261, μ: 26314, ~: 26313) -SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 261, μ: 685706, ~: 598672) +SafeTransferLibTest:testTransferWithNonContract(bytes32,address,uint256) (runs: 314, μ: 26314, ~: 26313) +SafeTransferLibTest:testTransferWithNonGarbage(address,uint256) (runs: 314, μ: 704057, ~: 598672) SafeTransferLibTest:testTransferWithReturnsFalseReverts() (gas: 505938) -SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 261, μ: 603081, ~: 505935) +SafeTransferLibTest:testTransferWithReturnsFalseReverts(address,uint256) (runs: 314, μ: 622159, ~: 505935) SafeTransferLibTest:testTransferWithReturnsTooLittleReverts() (gas: 505526) -SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 261, μ: 577618, ~: 505821) +SafeTransferLibTest:testTransferWithReturnsTooLittleReverts(address,uint256) (runs: 314, μ: 594331, ~: 505859) SafeTransferLibTest:testTransferWithReturnsTooMuch() (gas: 529897) -SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 261, μ: 633926, ~: 529975) -SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 261, μ: 609463, ~: 505935) +SafeTransferLibTest:testTransferWithReturnsTooMuch(address,uint256) (runs: 314, μ: 642996, ~: 529975) +SafeTransferLibTest:testTransferWithReturnsTwoReverts(address,uint256) (runs: 314, μ: 602965, ~: 505935) SafeTransferLibTest:testTransferWithRevertingReverts() (gas: 776726) -SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 261, μ: 607011, ~: 505833) +SafeTransferLibTest:testTransferWithRevertingReverts(address,uint256) (runs: 314, μ: 593423, ~: 505833) SafeTransferLibTest:testTransferWithStandardERC20() (gas: 529956) -SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 261, μ: 628049, ~: 529970) -SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 261, μ: 108941, ~: 112161) +SafeTransferLibTest:testTransferWithStandardERC20(address,uint256) (runs: 314, μ: 649600, ~: 529932) +SafeTransferLibTest:testTrySafeTransferFrom(address,address,uint256) (runs: 314, μ: 108961, ~: 112161) SafeTransferLibTest:testTryTransferAllETH() (gas: 148698) SafeTransferLibTest:testTryTransferETH() (gas: 148701) SafeTransferLibTest:testTryTransferETHWithNoGrief() (gas: 537025) @@ -1271,7 +1269,7 @@ SignatureCheckerLibTest:testERC6492PreDeploy() (gas: 1227033) SignatureCheckerLibTest:testERC6492WithoutRevertingVerifier() (gas: 61874) SignatureCheckerLibTest:testEmptyCalldataHelpers() (gas: 3987) SignatureCheckerLibTest:testEtchERC6492RevertingVerifier() (gas: 56459) -SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 261, μ: 55901, ~: 45511) +SignatureCheckerLibTest:testSignatureChecker(bytes32) (runs: 314, μ: 55571, ~: 45511) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSignature() (gas: 21300) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithInvalidSigner() (gas: 30800) SignatureCheckerLibTest:testSignatureCheckerOnEOAWithMatchingSignerAndSignature() (gas: 17697) @@ -1282,13 +1280,13 @@ SignatureCheckerLibTest:testSignatureCheckerOnWalletWithInvalidSigner() (gas: 25 SignatureCheckerLibTest:testSignatureCheckerOnWalletWithMatchingSignerAndSignature() (gas: 64518) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithWrongSignedMessageHash() (gas: 64597) SignatureCheckerLibTest:testSignatureCheckerOnWalletWithZeroAddressSigner() (gas: 12364) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 261, μ: 1284, ~: 1284) -SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 261, μ: 481, ~: 481) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes) (runs: 314, μ: 1285, ~: 1284) +SignatureCheckerLibTest:testToEthSignedMessageHashDifferential(bytes32) (runs: 314, μ: 481, ~: 481) SignatureCheckerLibTest:test__codesize() (gas: 15448) SoladyTest:test__codesize() (gas: 840) TestPlus:test__codesize() (gas: 406) -TestPlusrTest:testRandomUnique(bytes32,bytes32) (runs: 261, μ: 113688, ~: 113688) -TestPlusrTest:testRandomUniqueAddress(bytes32,bytes32) (runs: 261, μ: 113404, ~: 113371) +TestPlusrTest:testRandomUnique(bytes32,bytes32) (runs: 314, μ: 113688, ~: 113690) +TestPlusrTest:testRandomUniqueAddress(bytes32,bytes32) (runs: 314, μ: 113405, ~: 113371) TestPlusrTest:test__codesize() (gas: 2162) UUPSUpgradeableTest:testNotDelegatedGuard() (gas: 15875) UUPSUpgradeableTest:testOnlyProxyGuard() (gas: 9217) @@ -1302,7 +1300,7 @@ UUPSUpgradeableTest:testUpgradeToRevertWithUpgradeFailed() (gas: 18819) UUPSUpgradeableTest:test__codesize() (gas: 6059) UpgradeableBeaconTest:testInitializeUpgradeableSolidityBeacon() (gas: 296434) UpgradeableBeaconTest:testInitializeUpgradeableYulBeacon() (gas: 335455) -UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 261, μ: 246147, ~: 255829) +UpgradeableBeaconTest:testUpgradeableBeacon(uint256) (runs: 314, μ: 245686, ~: 255829) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyFnSelectorNotRecognised() (gas: 234560) UpgradeableBeaconTest:testUpgradeableSolidityBeaconOnlyOwnerFunctions() (gas: 260339) UpgradeableBeaconTest:testUpgradeableYulBeaconOnlyFnSelectorNotRecognised() (gas: 172796) @@ -1311,12 +1309,12 @@ UpgradeableBeaconTest:test__codesize() (gas: 8511) WETHInvariants:invariantTotalSupplyEqualsBalance() (runs: 10, calls: 150, reverts: 65) WETHInvariants:test__codesize() (gas: 5178) WETHTest:testDeposit() (gas: 62272) -WETHTest:testDeposit(uint256) (runs: 261, μ: 61741, ~: 62566) +WETHTest:testDeposit(uint256) (runs: 314, μ: 61447, ~: 62566) WETHTest:testFallbackDeposit() (gas: 61978) -WETHTest:testFallbackDeposit(uint256) (runs: 261, μ: 61402, ~: 62227) +WETHTest:testFallbackDeposit(uint256) (runs: 314, μ: 61108, ~: 62227) WETHTest:testMetadata() (gas: 9013) WETHTest:testPartialWithdraw() (gas: 70422) WETHTest:testWithdraw() (gas: 52047) -WETHTest:testWithdraw(uint256,uint256) (runs: 261, μ: 70379, ~: 71175) +WETHTest:testWithdraw(uint256,uint256) (runs: 314, μ: 69914, ~: 71175) WETHTest:testWithdrawToContractWithoutReceiveReverts() (gas: 90164) WETHTest:test__codesize() (gas: 9410) \ No newline at end of file diff --git a/src/utils/Lifebuoy.sol b/src/utils/Lifebuoy.sol index 34837fd91..029cf70aa 100644 --- a/src/utils/Lifebuoy.sol +++ b/src/utils/Lifebuoy.sol @@ -68,6 +68,12 @@ contract Lifebuoy { /// @dev Flag to denote that the `rescueERC721` function is locked. (32) uint256 internal constant _LIFEBUOY_RESCUE_ERC721_LOCK = 1 << 5; + /// @dev Flag to denote that the `rescueERC1155` function is locked. (64) + uint256 internal constant _LIFEBUOY_RESCUE_ERC1155_LOCK = 1 << 6; + + /// @dev Flag to denote that the `rescueERC6909` function is locked. (128) + uint256 internal constant _LIFEBUOY_RESCUE_ERC6909_LOCK = 1 << 7; + /*´:°•.°+.*•´.*:˚.°*.˚•´.°:°•.°•.*•´.*:˚.°*.˚•´.°:°•.°+.*•´.*:*/ /* IMMUTABLES */ /*.•°:°.´+˚.*°.˚:*.´•*.+°.•°:´*.´•*.•°.•°:°.´:•˚°.*°.˚:*.´+°.•*/ @@ -96,11 +102,11 @@ contract Lifebuoy { constructor() payable { bytes32 hash; - address deployer = _lifebuoyUseTxOriginAsDeployer() ? tx.origin : msg.sender; + uint256 deployer = uint160(_lifebuoyUseTxOriginAsDeployer() ? tx.origin : msg.sender); /// @solidity memory-safe-assembly assembly { - mstore(0x00, shr(96, shl(96, deployer))) - mstore(0x20, address()) + mstore(0x00, address()) + mstore(0x20, deployer) hash := keccak256(0x00, 0x40) } _lifebuoyDeployerHash = hash; @@ -147,24 +153,22 @@ contract Lifebuoy { assembly { mstore(0x14, to) // Store the `to` argument. mstore(0x34, amount) // Store the `amount` argument. - mstore(0x00, shl(96, 0xa9059cbb)) // `transfer(address,uint256)`. + // `RescueTransferFailed()` and `transfer(address,uint256)`. + mstore(0x00, shl(96, 0x7ec62e76a9059cbb)) // Perform the transfer, reverting upon failure. if iszero( and( // The arguments of `and` are evaluated from right to left. or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing. - call(gas(), token, 0, 0x10, 0x44, 0x00, 0x20) + call(gas(), token, callvalue(), 0x10, 0x44, 0x00, 0x20) ) - ) { - mstore(0x00, 0x7ec62e76) // `RescueTransferFailed()`. - revert(0x1c, 0x04) - } + ) { revert(0x0c, 0x04) } mstore(0x34, 0) // Restore the part of the free memory pointer that was overwritten. } } - /// @dev Sends `tokenId` of ERC721 `token` from the current contract to `to`. + /// @dev Sends `id` of ERC721 `token` from the current contract to `to`. /// Reverts upon failure. - function rescueERC721(address token, address to, uint256 tokenId) + function rescueERC721(address token, address to, uint256 id) public payable virtual @@ -173,15 +177,72 @@ contract Lifebuoy { /// @solidity memory-safe-assembly assembly { let m := mload(0x40) // Cache the free memory pointer. - mstore(0x60, tokenId) // Store the `tokenId` argument. + mstore(0x60, id) // Store the `id` argument. mstore(0x40, shr(96, shl(96, to))) // Store the `to` argument. mstore(0x20, address()) // Store the `from` argument. // `RescueTransferFailed()` and `transferFrom(address,address,uint256)`. mstore(0x00, 0x7ec62e7623b872dd) // Perform the transfer, reverting upon failure. - if iszero(mul(extcodesize(token), call(gas(), token, 0, 0x1c, 0x64, 0x00, 0x00))) { - revert(0x18, 0x04) - } + // forgefmt: disable-next-item + if iszero( + mul(extcodesize(token), call(gas(), token, callvalue(), 0x1c, 0x64, codesize(), 0x00)) + ) { revert(0x18, 0x04) } + mstore(0x60, 0) // Restore the zero slot to zero. + mstore(0x40, m) // Restore the free memory pointer. + } + } + + /// @dev Sends `amount` of `id` of ERC1155 `token` from the current contract to `to`. + /// Reverts upon failure. + function rescueERC1155( + address token, + address to, + uint256 id, + uint256 amount, + bytes calldata data + ) public payable virtual onlyRescuer(_LIFEBUOY_RESCUE_ERC1155_LOCK) { + /// @solidity memory-safe-assembly + assembly { + let m := mload(0x40) // Cache the free memory pointer. + // `RescueTransferFailed()` and `safeTransferFrom(address,address,uint256,uint256,bytes)`. + mstore(m, 0x7ec62e76f242432a) + mstore(add(0x20, m), address()) // Store the `from` argument. + mstore(add(0x40, m), shr(96, shl(96, to))) // Store the `to` argument. + mstore(add(0x60, m), id) // Store the `id` argument. + mstore(add(0x80, m), amount) // Store the `amount` argument. + mstore(add(0xa0, m), 0xa0) // Store the offset to `data`. + calldatacopy(add(m, 0xc0), sub(data.offset, 0x20), add(0x20, data.length)) + // Perform the transfer, reverting upon failure. + // forgefmt: disable-next-item + if iszero(mul(extcodesize(token), + call(gas(), token, callvalue(), add(m, 0x1c), add(0xc4, data.length), codesize(), 0x00) + )) { revert(add(m, 0x18), 0x04) } + } + } + + /// @dev Sends `amount` of `id` of ERC6909 `token` from the current contract to `to`. + /// Reverts upon failure. + function rescueERC6909(address token, address to, uint256 id, uint256 amount) + public + payable + virtual + onlyRescuer(_LIFEBUOY_RESCUE_ERC6909_LOCK) + { + /// @solidity memory-safe-assembly + assembly { + let m := mload(0x40) // Cache the free memory pointer. + mstore(0x14, to) // Store the `to` argument. + mstore(0x34, id) // Store the `id` argument. + mstore(0x54, amount) // Store the `amount` argument. + // `RescueTransferFailed()` and `transfer(address,uint256,uint256)`. + mstore(0x00, shl(96, 0x7ec62e76095bcdb6)) + // Perform the transfer, reverting upon failure. + if iszero( + and( // The arguments of `and` are evaluated from right to left. + or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing. + call(gas(), token, callvalue(), 0x10, 0x64, 0x00, 0x20) + ) + ) { revert(0x0c, 0x04) } mstore(0x60, 0) // Restore the zero slot to zero. mstore(0x40, m) // Restore the free memory pointer. } @@ -219,28 +280,26 @@ contract Lifebuoy { } } - /// @dev Requires that the rescue functions are not locked, - /// and the caller is either the `owner()`, or the deployer (if not via a delegate call). + /// @dev Requires that the rescue function being guarded is: + /// 1. Not locked, AND + /// 2. Called by either: + /// (a) The `owner()`, OR + /// (b) The deployer (if not via a delegate call and deployer is an EOA). function _checkRescuer(uint256 modeLock) internal view virtual { uint256 locks = rescueLocked(); - bytes32 lifebuoyDeployerHash = _lifebuoyDeployerHash; + bytes32 h = _lifebuoyDeployerHash; /// @solidity memory-safe-assembly assembly { for {} 1 {} { // If the `modeLock` flag is true, set all bits in `locks` to true. - locks := or(locks, sub(0, iszero(iszero(and(modeLock, locks))))) + locks := or(sub(0, iszero(iszero(and(modeLock, locks)))), locks) // Caller is the deployer // AND caller is an EOA // AND the contract is not a proxy // AND `locks & _LIFEBUOY_DEPLOYER_ACCESS_LOCK` is false. - mstore(0x00, caller()) - mstore(0x20, address()) - if iszero( - or( - or(extcodesize(caller()), and(locks, _LIFEBUOY_DEPLOYER_ACCESS_LOCK)), - xor(keccak256(0x00, 0x40), lifebuoyDeployerHash) - ) - ) { break } + mstore(0x20, caller()) + mstore(and(locks, _LIFEBUOY_DEPLOYER_ACCESS_LOCK), address()) + if iszero(or(extcodesize(caller()), xor(keccak256(0x00, 0x40), h))) { break } // If the caller is `owner()` // AND `locks & _LIFEBUOY_OWNER_ACCESS_LOCK` is false. mstore(0x08, 0x8da5cb5b0a0362e0) // `owner()` and `RescueUnauthorizedOrLocked()`. diff --git a/test/Lifebuoy.t.sol b/test/Lifebuoy.t.sol index fc3a374b5..58eb32b0e 100644 --- a/test/Lifebuoy.t.sol +++ b/test/Lifebuoy.t.sol @@ -6,6 +6,8 @@ import {Lifebuoy, MockLifebuoy, MockLifebuoyOwned} from "./utils/mocks/MockLifeb import {MockETHRecipient} from "./utils/mocks/MockETHRecipient.sol"; import {MockERC20} from "./utils/mocks/MockERC20.sol"; import {MockERC721} from "./utils/mocks/MockERC721.sol"; +import {MockERC1155} from "./utils/mocks/MockERC1155.sol"; +import {MockERC6909} from "./utils/mocks/MockERC6909.sol"; import {LibRLP} from "../src/utils/LibRLP.sol"; import {LibClone} from "../src/utils/LibClone.sol"; import {SafeTransferLib} from "../src/utils/SafeTransferLib.sol"; @@ -31,10 +33,14 @@ contract LifebuoyTest is SoladyTest { MockERC20 erc20; MockERC721 erc721; + MockERC1155 erc1155; + MockERC6909 erc6909; function setUp() public { erc20 = new MockERC20("Name", "SYMBOL", 18); erc721 = new MockERC721(); + erc1155 = new MockERC1155(); + erc6909 = new MockERC6909(); } function _deployViaCreate(address deployer, bytes memory initcode) internal returns (address) { @@ -78,13 +84,21 @@ contract LifebuoyTest is SoladyTest { MockLifebuoyOwned lifebuoyOwned; MockLifebuoyOwned lifebuoyOwnedClone; uint256 tokenId; - uint256 erc20Amount; + uint256 amount; } function _erc20BalanceOf(address holder) internal view returns (uint256) { return SafeTransferLib.balanceOf(address(erc20), holder); } + function _erc1155BalanceOf(address holder, uint256 tokenId) internal view returns (uint256) { + return erc1155.balanceOf(holder, tokenId); + } + + function _erc6909BalanceOf(address holder, uint256 tokenId) internal view returns (uint256) { + return erc6909.balanceOf(holder, tokenId); + } + function _testTempsBase() internal returns (_TestTemps memory t) { t.deployer = _randomHashedAddress(); t.owner = _randomHashedAddress(); @@ -102,12 +116,13 @@ contract LifebuoyTest is SoladyTest { function _testTempsForRescue() internal returns (_TestTemps memory t) { t = _testTempsBase(); - - t.erc20Amount = _random(); - erc20.mint(address(t.lifebuoyOwned), t.erc20Amount); - + t.amount = _random(); t.tokenId = _random(); + + erc20.mint(address(t.lifebuoyOwned), t.amount); erc721.mint(address(t.lifebuoyOwned), t.tokenId); + erc1155.mint(address(t.lifebuoyOwned), t.tokenId, t.amount, ""); + erc6909.mint(address(t.lifebuoyOwned), t.tokenId, t.amount); } function _testTempsForRescuePermissions() internal returns (_TestTemps memory t) { @@ -214,8 +229,17 @@ contract LifebuoyTest is SoladyTest { t.lifebuoyOwnedClone.rescueETH(t.recipient, 1); } - function testRescueETH(uint256 amount) public { + function testRescueAll(bytes32) public { _TestTemps memory t = _testTempsForRescue(); + if (_randomChance(2)) _testRescueETH(t); + if (_randomChance(2)) _testRescueERC20(t); + if (_randomChance(2)) _testRescueERC721(t); + if (_randomChance(2)) _testRescueERC1155(t); + if (_randomChance(2)) _testRescueERC6909(t); + } + + function _testRescueETH(_TestTemps memory t) internal { + uint256 amount = _random(); if (_randomChance(2)) { amount = _bound(amount, 0, address(t.lifebuoyOwned).balance); uint256 expectedRemaining = address(t.lifebuoyOwned).balance - amount; @@ -233,13 +257,13 @@ contract LifebuoyTest is SoladyTest { } } - function testRescueERC20(uint256 amount) public { - _TestTemps memory t = _testTempsForRescue(); + function _testRescueERC20(_TestTemps memory t) internal { + uint256 amount = _random(); if (_randomChance(2)) { - amount = _bound(amount, 0, t.erc20Amount); + amount = _bound(amount, 0, t.amount); vm.prank(t.owner); t.lifebuoyOwned.rescueERC20(address(erc20), t.recipient, amount); - assertEq(_erc20BalanceOf(address(t.lifebuoyOwned)), t.erc20Amount - amount); + assertEq(_erc20BalanceOf(address(t.lifebuoyOwned)), t.amount - amount); assertEq(_erc20BalanceOf(t.recipient), amount); } else if (amount > _erc20BalanceOf(address(t.lifebuoyOwned))) { vm.prank(t.owner); @@ -251,8 +275,7 @@ contract LifebuoyTest is SoladyTest { } } - function testRescueERC721(bytes32) public { - _TestTemps memory t = _testTempsForRescue(); + function _testRescueERC721(_TestTemps memory t) internal { vm.prank(t.owner); t.lifebuoyOwned.rescueERC721(address(erc721), t.recipient, t.tokenId); assertEq(erc721.balanceOf(address(t.lifebuoyOwned)), 0); @@ -261,12 +284,50 @@ contract LifebuoyTest is SoladyTest { vm.expectRevert(Lifebuoy.RescueTransferFailed.selector); t.lifebuoyOwned.rescueERC721(address(erc721), t.recipient, t.tokenId); - (address eoa,) = _randomSigner(); + address eoa = _randomHashedAddress(); vm.prank(t.owner); vm.expectRevert(Lifebuoy.RescueTransferFailed.selector); t.lifebuoyOwned.rescueERC721(eoa, t.recipient, t.tokenId); } + function _testRescueERC1155(_TestTemps memory t) public { + uint256 amount = _random(); + if (_randomChance(2)) { + amount = _bound(amount, 0, t.amount); + vm.prank(t.owner); + t.lifebuoyOwned.rescueERC1155(address(erc1155), t.recipient, t.tokenId, amount, ""); + assertEq(_erc1155BalanceOf(address(t.lifebuoyOwned), t.tokenId), t.amount - amount); + assertEq(_erc1155BalanceOf(t.recipient, t.tokenId), amount); + } else if (amount > _erc1155BalanceOf(address(t.lifebuoyOwned), t.tokenId)) { + vm.prank(t.owner); + vm.expectRevert(Lifebuoy.RescueTransferFailed.selector); + t.lifebuoyOwned.rescueERC1155(address(erc1155), t.recipient, t.tokenId, amount, ""); + } else { + bytes memory data = _randomBytes(); + vm.prank(t.owner); + t.lifebuoyOwned.rescueERC1155(address(erc1155), t.recipient, t.tokenId, amount, data); + assertEq(erc1155.lastDataHash(), keccak256(data)); + } + } + + function _testRescueERC6909(_TestTemps memory t) public { + uint256 amount = _random(); + if (_randomChance(2)) { + amount = _bound(amount, 0, t.amount); + vm.prank(t.owner); + t.lifebuoyOwned.rescueERC6909(address(erc6909), t.recipient, t.tokenId, amount); + assertEq(_erc6909BalanceOf(address(t.lifebuoyOwned), t.tokenId), t.amount - amount); + assertEq(_erc6909BalanceOf(t.recipient, t.tokenId), amount); + } else if (amount > _erc6909BalanceOf(address(t.lifebuoyOwned), t.tokenId)) { + vm.prank(t.owner); + vm.expectRevert(Lifebuoy.RescueTransferFailed.selector); + t.lifebuoyOwned.rescueERC6909(address(erc6909), t.recipient, t.tokenId, amount); + } else { + vm.prank(t.owner); + t.lifebuoyOwned.rescueERC6909(address(erc6909), t.recipient, t.tokenId, amount); + } + } + function testLockRescueETH() public { _TestTemps memory t = _testTempsForRescue(); vm.startPrank(t.owner); @@ -295,6 +356,10 @@ contract LifebuoyTest is SoladyTest { vm.expectRevert(Lifebuoy.RescueUnauthorizedOrLocked.selector); t.lifebuoyOwned.rescueETH(t.recipient, 1); vm.expectRevert(Lifebuoy.RescueUnauthorizedOrLocked.selector); + t.lifebuoyOwned.rescueERC6909(address(erc6909), t.recipient, t.tokenId, _random()); + vm.expectRevert(Lifebuoy.RescueUnauthorizedOrLocked.selector); + t.lifebuoyOwned.rescueERC1155(address(erc1155), t.recipient, t.tokenId, _random(), ""); + vm.expectRevert(Lifebuoy.RescueUnauthorizedOrLocked.selector); t.lifebuoyOwned.rescueERC721(address(erc721), t.recipient, t.tokenId); vm.expectRevert(Lifebuoy.RescueUnauthorizedOrLocked.selector); t.lifebuoyOwned.rescueERC20(address(erc20), t.recipient, _random()); diff --git a/test/utils/mocks/MockERC1155.sol b/test/utils/mocks/MockERC1155.sol index af40d8071..5f85d80a7 100644 --- a/test/utils/mocks/MockERC1155.sol +++ b/test/utils/mocks/MockERC1155.sol @@ -7,10 +7,13 @@ import {Brutalizer} from "../Brutalizer.sol"; /// @dev WARNING! This mock is strictly intended for testing purposes only. /// Do NOT copy anything here into production code unless you really know what you are doing. contract MockERC1155 is ERC1155, Brutalizer { + bytes32 public lastDataHash; + function uri(uint256) public pure virtual override returns (string memory) {} function mint(address to, uint256 id, uint256 amount, bytes memory data) public virtual { _mint(_brutalized(to), id, amount, data); + lastDataHash = keccak256(data); } function batchMint( @@ -20,6 +23,7 @@ contract MockERC1155 is ERC1155, Brutalizer { bytes memory data ) public virtual { _batchMint(_brutalized(to), ids, amounts, data); + lastDataHash = keccak256(data); } function burn(address from, uint256 id, uint256 amount) public virtual { @@ -52,6 +56,7 @@ contract MockERC1155 is ERC1155, Brutalizer { bytes calldata data ) public virtual override { super.safeTransferFrom(_brutalized(from), _brutalized(to), id, amount, data); + lastDataHash = keccak256(data); } function directSafeTransferFrom( @@ -62,6 +67,7 @@ contract MockERC1155 is ERC1155, Brutalizer { bytes memory data ) public virtual { _safeTransfer(_brutalized(msg.sender), _brutalized(from), _brutalized(to), id, amount, data); + lastDataHash = keccak256(data); } function uncheckedSafeTransferFrom( @@ -72,6 +78,7 @@ contract MockERC1155 is ERC1155, Brutalizer { bytes memory data ) public virtual { _safeTransfer(_brutalized(address(0)), _brutalized(from), _brutalized(to), id, amount, data); + lastDataHash = keccak256(data); } function safeBatchTransferFrom( @@ -82,6 +89,7 @@ contract MockERC1155 is ERC1155, Brutalizer { bytes calldata data ) public virtual override { super.safeBatchTransferFrom(_brutalized(from), _brutalized(to), ids, amounts, data); + lastDataHash = keccak256(data); } function directSafeBatchTransferFrom( @@ -94,6 +102,7 @@ contract MockERC1155 is ERC1155, Brutalizer { _safeBatchTransfer( _brutalized(msg.sender), _brutalized(from), _brutalized(to), ids, amounts, data ); + lastDataHash = keccak256(data); } function uncheckedSafeBatchTransferFrom( @@ -106,6 +115,7 @@ contract MockERC1155 is ERC1155, Brutalizer { _safeBatchTransfer( _brutalized(address(0)), _brutalized(from), _brutalized(to), ids, amounts, data ); + lastDataHash = keccak256(data); } function directSetApprovalForAll(address operator, bool approved) public virtual { diff --git a/test/utils/mocks/MockLifebuoy.sol b/test/utils/mocks/MockLifebuoy.sol index 3aed844c4..9d2db56f7 100644 --- a/test/utils/mocks/MockLifebuoy.sol +++ b/test/utils/mocks/MockLifebuoy.sol @@ -37,6 +37,36 @@ contract MockLifebuoy is Lifebuoy, Brutalizer { super.rescueERC721(_brutalized(token), _brutalized(to), tokenId); _checkMemory(); } + + function rescueERC1155( + address token, + address to, + uint256 tokenId, + uint256 amount, + bytes calldata data + ) public payable virtual override { + _brutalizeScratchSpace(); + super.rescueERC1155(_brutalized(token), _brutalized(to), tokenId, amount, data); + _checkMemory(); + } + + function onERC1155Received(address, address, uint256, uint256, bytes calldata) + external + virtual + returns (bytes4) + { + return MockLifebuoy.onERC1155Received.selector; + } + + function onERC1155BatchReceived( + address, + address, + uint256[] calldata, + uint256[] calldata, + bytes calldata + ) external virtual returns (bytes4) { + return MockLifebuoy.onERC1155BatchReceived.selector; + } } /// @dev WARNING! This mock is strictly intended for testing purposes only. From d9c5752263bd7a228d112ee4fa9cb6e777f1aff2 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Fri, 23 Aug 2024 01:49:52 +0000 Subject: [PATCH 2/4] Optimize --- .gas-snapshot | 18 +++++++++--------- src/utils/Lifebuoy.sol | 4 +--- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index e435d48fc..3fed09dd6 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -990,15 +990,15 @@ LibZipTest:testFlzCompressDecompress() (gas: 1254342) LibZipTest:testFlzCompressDecompress(bytes) (runs: 314, μ: 775515, ~: 673172) LibZipTest:testFlzCompressDecompress2() (gas: 763987) LibZipTest:test__codesize() (gas: 20417) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 314, μ: 3033313, ~: 3332659) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 314, μ: 1348709, ~: 1348662) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 314, μ: 1352182, ~: 1344064) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 314, μ: 1334337, ~: 1343048) -LifebuoyTest:testLockEverything() (gas: 950470) -LifebuoyTest:testLockRescue() (gas: 969488) -LifebuoyTest:testLockRescueETH() (gas: 981752) -LifebuoyTest:testRescueAll(bytes32) (runs: 314, μ: 1593894, ~: 981604) -LifebuoyTest:test__codesize() (gas: 45861) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 314, μ: 3042684, ~: 3332053) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 314, μ: 1347522, ~: 1347455) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 314, μ: 1350787, ~: 1342703) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 314, μ: 1332221, ~: 1311818) +LifebuoyTest:testLockEverything() (gas: 949811) +LifebuoyTest:testLockRescue() (gas: 968888) +LifebuoyTest:testLockRescueETH() (gas: 981152) +LifebuoyTest:testRescueAll(bytes32) (runs: 314, μ: 2510237, ~: 981781) +LifebuoyTest:test__codesize() (gas: 45855) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 314, μ: 742571, ~: 640794) MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 314, μ: 37829, ~: 39250) diff --git a/src/utils/Lifebuoy.sol b/src/utils/Lifebuoy.sol index 029cf70aa..ca9f4eea9 100644 --- a/src/utils/Lifebuoy.sol +++ b/src/utils/Lifebuoy.sol @@ -239,9 +239,7 @@ contract Lifebuoy { // Perform the transfer, reverting upon failure. if iszero( and( // The arguments of `and` are evaluated from right to left. - or(eq(mload(0x00), 1), iszero(returndatasize())), // Returned 1 or nothing. - call(gas(), token, callvalue(), 0x10, 0x64, 0x00, 0x20) - ) + eq(mload(0x00), 1), call(gas(), token, callvalue(), 0x10, 0x64, 0x00, 0x20)) ) { revert(0x0c, 0x04) } mstore(0x60, 0) // Restore the zero slot to zero. mstore(0x40, m) // Restore the free memory pointer. From 83f9553c936d400c0d81f94b506e9056a3081459 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Fri, 23 Aug 2024 01:52:48 +0000 Subject: [PATCH 3/4] T --- .gas-snapshot | 18 +++++++++--------- test/utils/mocks/MockLifebuoy.sol | 11 +++++++++++ 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.gas-snapshot b/.gas-snapshot index 3fed09dd6..d8a94efc3 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -990,15 +990,15 @@ LibZipTest:testFlzCompressDecompress() (gas: 1254342) LibZipTest:testFlzCompressDecompress(bytes) (runs: 314, μ: 775515, ~: 673172) LibZipTest:testFlzCompressDecompress2() (gas: 763987) LibZipTest:test__codesize() (gas: 20417) -LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 314, μ: 3042684, ~: 3332053) -LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 314, μ: 1347522, ~: 1347455) -LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 314, μ: 1350787, ~: 1342703) -LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 314, μ: 1332221, ~: 1311818) -LifebuoyTest:testLockEverything() (gas: 949811) -LifebuoyTest:testLockRescue() (gas: 968888) -LifebuoyTest:testLockRescueETH() (gas: 981152) -LifebuoyTest:testRescueAll(bytes32) (runs: 314, μ: 2510237, ~: 981781) -LifebuoyTest:test__codesize() (gas: 45855) +LifebuoyTest:testLifebuoyCreateDeployment(address,address,uint256) (runs: 314, μ: 3048203, ~: 3342222) +LifebuoyTest:testLifebuoyOwnedCloneRescuePermissions(bytes32) (runs: 314, μ: 1367555, ~: 1367483) +LifebuoyTest:testLifebuoyOwnedRescuePermissions(bytes32) (runs: 314, μ: 1371046, ~: 1362890) +LifebuoyTest:testLifebuoyRescuePermissions(bytes32) (runs: 314, μ: 1351557, ~: 1331142) +LifebuoyTest:testLockEverything() (gas: 960877) +LifebuoyTest:testLockRescue() (gas: 978964) +LifebuoyTest:testLockRescueETH() (gas: 991228) +LifebuoyTest:testRescueAll(bytes32) (runs: 314, μ: 1603102, ~: 991996) +LifebuoyTest:test__codesize() (gas: 45955) MerkleProofLibTest:testEmptyCalldataHelpers() (gas: 985) MerkleProofLibTest:testVerifyMultiProof(bool,bool,bool,bool,bytes32) (runs: 314, μ: 742571, ~: 640794) MerkleProofLibTest:testVerifyMultiProofForHeightOneTree(bool,bool,bool,bool,bool,bool[]) (runs: 314, μ: 37829, ~: 39250) diff --git a/test/utils/mocks/MockLifebuoy.sol b/test/utils/mocks/MockLifebuoy.sol index 9d2db56f7..c01c4b414 100644 --- a/test/utils/mocks/MockLifebuoy.sol +++ b/test/utils/mocks/MockLifebuoy.sol @@ -50,6 +50,17 @@ contract MockLifebuoy is Lifebuoy, Brutalizer { _checkMemory(); } + function rescueERC6909(address token, address to, uint256 tokenId, uint256 amount) + public + payable + virtual + override + { + _brutalizeScratchSpace(); + super.rescueERC6909(_brutalized(token), _brutalized(to), tokenId, amount); + _checkMemory(); + } + function onERC1155Received(address, address, uint256, uint256, bytes calldata) external virtual From 1fca97dae86e988fc05441c364f5c13eacc02530 Mon Sep 17 00:00:00 2001 From: Vectorized Date: Fri, 23 Aug 2024 02:04:54 +0000 Subject: [PATCH 4/4] T --- src/utils/Lifebuoy.sol | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/utils/Lifebuoy.sol b/src/utils/Lifebuoy.sol index ca9f4eea9..c8602e0bd 100644 --- a/src/utils/Lifebuoy.sol +++ b/src/utils/Lifebuoy.sol @@ -237,10 +237,10 @@ contract Lifebuoy { // `RescueTransferFailed()` and `transfer(address,uint256,uint256)`. mstore(0x00, shl(96, 0x7ec62e76095bcdb6)) // Perform the transfer, reverting upon failure. - if iszero( - and( // The arguments of `and` are evaluated from right to left. - eq(mload(0x00), 1), call(gas(), token, callvalue(), 0x10, 0x64, 0x00, 0x20)) - ) { revert(0x0c, 0x04) } + if iszero( // The arguments of `and` are evaluated from right to left. + and(eq(mload(0x00), 1), call(gas(), token, callvalue(), 0x10, 0x64, 0x00, 0x20))) { + revert(0x0c, 0x04) + } mstore(0x60, 0) // Restore the zero slot to zero. mstore(0x40, m) // Restore the free memory pointer. }