diff --git a/.devcontainer.json b/.devcontainer.json deleted file mode 100644 index 272e49571..000000000 --- a/.devcontainer.json +++ /dev/null @@ -1,12 +0,0 @@ -{ -"image": "rainprotocol/devcontainer:foundry", -"customizations": { - "vscode": { - "extensions": [ - "JuanBlanco.solidity", - "ms-azuretools.vscode-docker", - "bungcip.better-toml" - ] - } -} -} diff --git a/.env.example b/.env.example deleted file mode 100644 index 63b50c1c3..000000000 --- a/.env.example +++ /dev/null @@ -1,3 +0,0 @@ -CI_DEPLOY_SEPOLIA_RPC_URL= -CI_FORK_SEPOLIA_BLOCK_NUMBER= -CI_FORK_SEPOLIA_DEPLOYER_ADDRESS= \ No newline at end of file diff --git a/.gas-snapshot b/.gas-snapshot index 3b750ce74..88f71765f 100644 --- a/.gas-snapshot +++ b/.gas-snapshot @@ -1,1149 +1,1149 @@ -BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2050, μ: 276310, ~: 276310) -BaseRainterpreterSubParserNPE2CompatibilityTest:testRainterpreterSubParserNPE2Compatibility(bytes32,bytes) (runs: 2050, μ: 655490, ~: 655481) -BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2050, μ: 656376, ~: 656376) -LibAllStandardOpsNPTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 66743) -LibAllStandardOpsNPTest:testIntegrityFunctionPointersLength() (gas: 12090) -LibAllStandardOpsNPTest:testOpcodeFunctionPointersLength() (gas: 12086) -LibEvalNPFBoundsTest:testEvalNPFBoundsModConstant(uint256) (runs: 2050, μ: 86635, ~: 86635) -LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,uint256) (runs: 2050, μ: 9449, ~: 9337) -LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,uint256) (runs: 2050, μ: 8620, ~: 8508) -LibInterpreterStateNPStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2050, μ: 33219, ~: 32808) -LibOpAddTest:testOpAddEval2InputsHappy() (gas: 99920) -LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 54813) -LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 96334) -LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 98937) -LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 92576) -LibOpAddTest:testOpAddEval3InputsHappy() (gas: 313454) -LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 636796) -LibOpAddTest:testOpAddEvalOneInput() (gas: 34553) -LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 91190) -LibOpAddTest:testOpAddEvalTwoOutput() (gas: 41338) -LibOpAddTest:testOpAddEvalZeroInputs() (gas: 28861) -LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 40261) -LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17834, ~: 17844) -LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13783, ~: 13633) -LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13781, ~: 13631) -LibOpAddTest:testOpAddRun(uint256[]) (runs: 2048, μ: 18182, ~: 18436) -LibOpAnyNPTest:testOpAnyNPEval1FalseInput() (gas: 48147) -LibOpAnyNPTest:testOpAnyNPEval1TrueInput() (gas: 48046) -LibOpAnyNPTest:testOpAnyNPEval2FalseInputs() (gas: 53514) -LibOpAnyNPTest:testOpAnyNPEval2MixedInputs() (gas: 54088) -LibOpAnyNPTest:testOpAnyNPEval2MixedInputs2() (gas: 54192) -LibOpAnyNPTest:testOpAnyNPEval2TrueInputs() (gas: 54090) -LibOpAnyNPTest:testOpAnyNPEvalFail() (gas: 28514) -LibOpAnyNPTest:testOpAnyNPIntegrityGas0() (gas: 3273) -LibOpAnyNPTest:testOpAnyNPIntegrityHappy(uint8,uint16) (runs: 2050, μ: 8174, ~: 8297) -LibOpAnyNPTest:testOpAnyNPIntegrityUnhappyZeroInputs() (gas: 4062) -LibOpAnyNPTest:testOpAnyNPRun(uint256[],uint16) (runs: 2048, μ: 17313, ~: 17307) -LibOpAnyNPTest:testOpAnyNPRunGas0() (gas: 3377) -LibOpAnyNPTest:testOpAnyNPTwoOutputs() (gas: 34668) -LibOpAnyNPTest:testOpAnyNPZeroOutputs() (gas: 33652) -LibOpAvgTest:testOpAvgEval() (gas: 394995) -LibOpAvgTest:testOpAvgEvalOneInput() (gas: 34004) -LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17391) -LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 44057) -LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 39741) -LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 38687) -LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13823, ~: 13795) -LibOpAvgTest:testOpAvgRun(uint256,uint256,uint16) (runs: 2050, μ: 20478, ~: 20186) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 711235) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13845, ~: 13817) -LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(uint256,uint256) (runs: 2050, μ: 15151, ~: 15151) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18081) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 34621) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 44695) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 40379) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 29487) -LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 39367) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 709927) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18000) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 34562) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 44636) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 40275) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 29362) -LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 39286) -LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13823, ~: 13795) -LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(uint256,uint256) (runs: 2050, μ: 15127, ~: 15127) -LibOpBlockNumberNPTest:testOpBlockNumberNPEval(uint256) (runs: 2050, μ: 47181, ~: 47049) -LibOpBlockNumberNPTest:testOpBlockNumberNPEvalOneInput() (gas: 33765) -LibOpBlockNumberNPTest:testOpBlockNumberNPEvalTwoOutputs() (gas: 30147) -LibOpBlockNumberNPTest:testOpBlockNumberNPEvalZeroOutputs() (gas: 29152) -LibOpBlockNumberNPTest:testOpBlockNumberNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19177, ~: 19226) -LibOpBlockNumberNPTest:testOpBlockNumberNPRun(uint256,uint16) (runs: 2050, μ: 18790, ~: 18647) -LibOpCallNPTest:testCallTraceInnerOnly() (gas: 59694) -LibOpCallNPTest:testCallTraceOuterAndInner() (gas: 70400) -LibOpCallNPTest:testCallTraceOuterAndTwoInner() (gas: 108818) -LibOpCallNPTest:testCallTraceOuterOnly() (gas: 42763) -LibOpCallNPTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2050, μ: 38328, ~: 36934) -LibOpCallNPTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2050, μ: 35396, ~: 33628) -LibOpCallNPTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2050, μ: 34788, ~: 34698) -LibOpCallNPTest:testOpCallNPRunInputsMismatch() (gas: 71847) -LibOpCallNPTest:testOpCallNPRunNoIO() (gas: 677091) -LibOpCallNPTest:testOpCallNPRunOutputsMismatch() (gas: 64966) -LibOpCallNPTest:testOpCallNPRunRecursive() (gas: 294298) -LibOpCallNPTest:testOpCallNPRunSourceDoesNotExist() (gas: 334821) -LibOpCeilTest:testOpCeilEval() (gas: 197291) -LibOpCeilTest:testOpCeilEvalOperandDisallowed() (gas: 17472) -LibOpCeilTest:testOpCeilIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13867, ~: 13839) -LibOpCeilTest:testOpCeilRun(uint256,uint16) (runs: 2050, μ: 18955, ~: 19167) -LibOpCeilTest:testOpCeilTwoInputs() (gas: 39124) -LibOpCeilTest:testOpCeilTwoOutputs() (gas: 34745) -LibOpCeilTest:testOpCeilZeroInputs() (gas: 28909) -LibOpCeilTest:testOpCeilZeroOutputs() (gas: 33752) -LibOpChainIdNPTest:testOpChainIDNPEval(uint64,uint256) (runs: 2050, μ: 44245, ~: 44245) -LibOpChainIdNPTest:testOpChainIDNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19190, ~: 19223) -LibOpChainIdNPTest:testOpChainIdNPEvalFail() (gas: 33143) -LibOpChainIdNPTest:testOpChainIdNPRun(uint64,uint16) (runs: 2050, μ: 15359, ~: 15359) -LibOpChainIdNPTest:testOpChainIdNPTwoOutputs() (gas: 29828) -LibOpChainIdNPTest:testOpChainIdNPZeroOutputs() (gas: 28813) -LibOpConditionsNPTest:testOpConditionsNPEval1FalseInput1TrueInput() (gas: 67444) -LibOpConditionsNPTest:testOpConditionsNPEval1FalseInputRevert() (gas: 52314) -LibOpConditionsNPTest:testOpConditionsNPEval1TrueInput1FalseInput() (gas: 67318) -LibOpConditionsNPTest:testOpConditionsNPEval1TrueInputZeroOutput() (gas: 54907) -LibOpConditionsNPTest:testOpConditionsNPEval2MixedInputs() (gas: 54910) -LibOpConditionsNPTest:testOpConditionsNPEval2TrueInputs() (gas: 67319) -LibOpConditionsNPTest:testOpConditionsNPEvalErrorCode() (gas: 63956) -LibOpConditionsNPTest:testOpConditionsNPEvalFail0Inputs() (gas: 29175) -LibOpConditionsNPTest:testOpConditionsNPEvalFail1Inputs() (gas: 33419) -LibOpConditionsNPTest:testOpConditionsNPEvalUnhappyOperand() (gas: 17942) -LibOpConditionsNPTest:testOpConditionsNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19639, ~: 19712) -LibOpConditionsNPTest:testOpConditionsNPRun(uint256[],uint256) (runs: 2048, μ: 17803, ~: 17904) -LibOpConditionsNPTest:testOpConditionsNPRunNoConditionsMet(uint256[],string) (runs: 2049, μ: 23431, ~: 23122) -LibOpConditionsNPTest:testOpConditionsNPTwoOutputs() (gas: 38513) -LibOpConditionsNPTest:testOpConditionsNPZeroOutputs() (gas: 37525) -LibOpConstantNPTest:testOpConstantEvalNPE2E() (gas: 51893) -LibOpConstantNPTest:testOpConstantEvalZeroConstants() (gas: 40129) -LibOpConstantNPTest:testOpConstantNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 18888, ~: 18874) -LibOpConstantNPTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 17678, ~: 17684) -LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 30551) -LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 40426) -LibOpConstantNPTest:testOpConstantNPRun(uint256[],uint16) (runs: 2050, μ: 51914, ~: 51959) -LibOpConstantNPTest:testOpConstantNPZeroOutputErrorSugared() (gas: 29211) -LibOpConstantNPTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 39030) -LibOpContextNPTest:testOpContextNPEval00(uint256[][]) (runs: 2050, μ: 7237302, ~: 6123529) -LibOpContextNPTest:testOpContextNPEval01(uint256[][]) (runs: 2050, μ: 7231074, ~: 6114055) -LibOpContextNPTest:testOpContextNPEval10(uint256[][]) (runs: 2050, μ: 7276707, ~: 6181143) -LibOpContextNPTest:testOpContextNPEval11(uint256[][]) (runs: 2050, μ: 7273395, ~: 6200493) -LibOpContextNPTest:testOpContextNPEvalOOBi(uint256[]) (runs: 2050, μ: 74726, ~: 74812) -LibOpContextNPTest:testOpContextNPEvalOOBj(uint256) (runs: 2050, μ: 45724, ~: 45724) -LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 14328, ~: 14300) -LibOpContextNPTest:testOpContextNPOneInput() (gas: 40416) -LibOpContextNPTest:testOpContextNPRun(uint256[][],uint256,uint256) (runs: 2050, μ: 10540788, ~: 8994700) -LibOpContextNPTest:testOpContextNPRunOOBi(uint256[][],uint256,uint256) (runs: 2050, μ: 5493868, ~: 4780175) -LibOpContextNPTest:testOpContextNPRunOOBj(uint256[][],uint256,uint256) (runs: 2050, μ: 5522956, ~: 4826971) -LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 45497) -LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 35940) -LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 34923) -LibOpCtPopNPTest:testOpCtPopNPEval(uint256) (runs: 2050, μ: 61459, ~: 58497) -LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13866, ~: 13838) -LibOpCtPopNPTest:testOpCtPopNPRun(uint256) (runs: 2050, μ: 15357, ~: 15358) -LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 40181) -LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 35868) -LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 29965) -LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 34831) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 796031) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 45980) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 41691) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 35810) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 40608) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2050, μ: 21588, ~: 21786) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2050, μ: 18946, ~: 18901) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13748, ~: 13727) -LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(uint256,uint8,uint8) (runs: 2050, μ: 19416, ~: 19230) -LibOpDivTest:testDebugOpDivRun() (gas: 10758) -LibOpDivTest:testOpDivEvalOneInput() (gas: 121571) -LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 91166) -LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 353399) -LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 198512) -LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 157664) -LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 311793) -LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 134248) -LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 94970) -LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 40446) -LibOpDivTest:testOpDivEvalZeroInputs() (gas: 28861) -LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 39412) -LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17839, ~: 17843) -LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13782, ~: 13632) -LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13804, ~: 13654) -LibOpDivTest:testOpDivRun(uint256[]) (runs: 2048, μ: 23329, ~: 22519) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 54140) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256,uint8) (runs: 2050, μ: 67569, ~: 67624) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 35769) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 18364) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 42001) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoOutputs() (gas: 49007) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 29783) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 47952) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13847, ~: 13819) -LibOpERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256,uint8) (runs: 2050, μ: 24560, ~: 24607) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256,uint8) (runs: 2050, μ: 61578, ~: 61499) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 35825) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 18445) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOverflow(uint256,uint8) (runs: 2048, μ: 57606, ~: 57606) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 47886) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalTwoOutputs() (gas: 42757) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 29881) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 41744) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13867, ~: 13839) -LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16,uint8) (runs: 2048, μ: 24830, ~: 24752) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256,uint8) (runs: 2050, μ: 55033, ~: 54952) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 18651) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOverflow(uint256,uint8) (runs: 2048, μ: 51127, ~: 51127) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 42262) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 36675) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: 30044) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 35639) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13847, ~: 13819) -LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2049, μ: 24287, ~: 24208) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 52058) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalOperandDisallowed() (gas: 18213) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoInputs() (gas: 41826) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoOutputs() (gas: 36275) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroInputs() (gas: 29606) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroOutputs() (gas: 35235) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13824, ~: 13796) -LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPRun(address,address,uint16) (runs: 2050, μ: 21499, ~: 21499) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 29469) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 33757) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 43032) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18155) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2050, μ: 91696, ~: 88124) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 34100) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 43363) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 29823) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 38318) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13849, ~: 13828) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,uint256,address,uint16) (runs: 2050, μ: 21895, ~: 21895) -LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 39350) -LibOpETest:testOpEEval() (gas: 42254) -LibOpETest:testOpEEvalOneInput() (gas: 32875) -LibOpETest:testOpEEvalTwoOutputs() (gas: 29299) -LibOpETest:testOpEEvalZeroOutputs() (gas: 28262) -LibOpETest:testOpEIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19199, ~: 19252) -LibOpETest:testOpERun(uint16) (runs: 2050, μ: 14769, ~: 14769) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 799934) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 40904) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 50977) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 46618) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 35725) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 45628) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2050, μ: 18017, ~: 18034) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2050, μ: 19060, ~: 19007) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13919, ~: 13898) -LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(uint256,uint256,uint8,uint8) (runs: 2050, μ: 19748, ~: 19557) -LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs() (gas: 34711) -LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs2() (gas: 34064) -LibOpEnsureNPTest:testOpEnsureNPEvalHappy() (gas: 160742) -LibOpEnsureNPTest:testOpEnsureNPEvalOne() (gas: 33544) -LibOpEnsureNPTest:testOpEnsureNPEvalThree() (gas: 45003) -LibOpEnsureNPTest:testOpEnsureNPEvalUnhappy() (gas: 106677) -LibOpEnsureNPTest:testOpEnsureNPEvalUnhappyOperand() (gas: 16940) -LibOpEnsureNPTest:testOpEnsureNPEvalZero() (gas: 28318) -LibOpEnsureNPTest:testOpEnsureNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19260, ~: 19355) -LibOpEnsureNPTest:testOpEnsureNPIntegrityUnhappy((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13746, ~: 13596) -LibOpEnsureNPTest:testOpEnsureNPOneOutput() (gas: 38597) -LibOpEnsureNPTest:testOpEnsureNPRun(uint256,string) (runs: 2048, μ: 15256, ~: 15321) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsBothOne() (gas: 53669) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstOneSecondZero() (gas: 54401) -LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstZeroSecondOne() (gas: 54380) -LibOpEqualToNPTest:testOpEqualToNPEval2ZeroInputs() (gas: 53711) -LibOpEqualToNPTest:testOpEqualToNPEvalFail0Inputs() (gas: 28870) -LibOpEqualToNPTest:testOpEqualToNPEvalFail1Input() (gas: 33134) -LibOpEqualToNPTest:testOpEqualToNPEvalFail3Inputs() (gas: 41431) -LibOpEqualToNPTest:testOpEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19202, ~: 19264) -LibOpEqualToNPTest:testOpEqualToNPRun(uint256,uint256) (runs: 2050, μ: 15178, ~: 15179) -LibOpEqualToNPTest:testOpEqualToNPTwoOutputs() (gas: 40042) -LibOpEqualToNPTest:testOpEqualToNPZeroOutputs() (gas: 39054) -LibOpEveryNPTest:testOpAnyNPEvalFail() (gas: 29368) -LibOpEveryNPTest:testOpEveryNPEval1FalseInput() (gas: 48893) -LibOpEveryNPTest:testOpEveryNPEval1TrueInput() (gas: 48933) -LibOpEveryNPTest:testOpEveryNPEval2FalseInputs() (gas: 54228) -LibOpEveryNPTest:testOpEveryNPEval2MixedInputs() (gas: 55016) -LibOpEveryNPTest:testOpEveryNPEval2MixedInputs2() (gas: 54962) -LibOpEveryNPTest:testOpEveryNPEval2TrueInputs() (gas: 55053) -LibOpEveryNPTest:testOpEveryNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19375, ~: 19485) -LibOpEveryNPTest:testOpEveryNPIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13731, ~: 13581) -LibOpEveryNPTest:testOpEveryNPRun(uint256[]) (runs: 2048, μ: 18631, ~: 18703) -LibOpEveryNPTest:testOpEveryNPTwoOutputs() (gas: 35499) -LibOpEveryNPTest:testOpEveryNPZeroOutputs() (gas: 34483) -LibOpExp2Test:testOpExp2Eval() (gas: 201815) -LibOpExp2Test:testOpExp2EvalBad() (gas: 64402) -LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 18154) -LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13823, ~: 13795) -LibOpExp2Test:testOpExp2Run(uint256,uint16) (runs: 2050, μ: 22583, ~: 23726) -LibOpExp2Test:testOpExp2TwoOutputs() (gas: 35385) -LibOpExp2Test:testOpExp2ZeroOutputs() (gas: 34368) -LibOpExpTest:testOpExpEval() (gas: 206855) -LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17389) -LibOpExpTest:testOpExpEvalTwoInputs() (gas: 39020) -LibOpExpTest:testOpExpEvalZeroInputs() (gas: 28827) -LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13844, ~: 13816) -LibOpExpTest:testOpExpRun(uint256,uint16) (runs: 2050, μ: 22844, ~: 24134) -LibOpExpTest:testOpExpTwoOutputs() (gas: 34666) -LibOpExpTest:testOpExpZeroOutputs() (gas: 33671) -LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 657535) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 51100) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 35188) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18596) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoInputs() (gas: 40928) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 46648) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 29627) -LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 45593) -LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13822, ~: 13794) -LibOpExponentialGrowthTest:testOpExponentialGrowthRun(uint256,uint256,uint256,uint16) (runs: 2050, μ: 37217, ~: 37314) -LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 94147) -LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 107900) -LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2050, μ: 32373, ~: 32206) -LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2050, μ: 50985, ~: 50415) -LibOpExternNPTest:testOpExternNPRunHappy(address,uint256[],uint16,uint256[],uint256[]) (runs: 2049, μ: 107710, ~: 107064) -LibOpFloorTest:testOpFloorEval() (gas: 234066) -LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17554) -LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13844, ~: 13816) -LibOpFloorTest:testOpFloorRun(uint256,uint16) (runs: 2050, μ: 18822, ~: 19033) -LibOpFloorTest:testOpFloorTwoInputs() (gas: 39204) -LibOpFloorTest:testOpFloorTwoOutputs() (gas: 34827) -LibOpFloorTest:testOpFloorZeroInputs() (gas: 28968) -LibOpFloorTest:testOpFloorZeroOutputs() (gas: 33812) -LibOpFracTest:testOpFracEval() (gas: 233501) -LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17472) -LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13822, ~: 13794) -LibOpFracTest:testOpFracRun(uint256,uint16) (runs: 2050, μ: 18782, ~: 18992) -LibOpFracTest:testOpFracTwoInputs() (gas: 39114) -LibOpFracTest:testOpFracTwoOutputs() (gas: 34780) -LibOpFracTest:testOpFracZeroInputs() (gas: 28897) -LibOpFracTest:testOpFracZeroOutputs() (gas: 33741) -LibOpGetNPTest:testLibOpGetNPEvalKeyNotSet() (gas: 287432) -LibOpGetNPTest:testLibOpGetNPEvalOperandDisallowed() (gas: 57183) -LibOpGetNPTest:testLibOpGetNPEvalSetThenGet() (gas: 490716) -LibOpGetNPTest:testLibOpGetNPEvalStoreAndSetAndGet() (gas: 242272) -LibOpGetNPTest:testLibOpGetNPEvalStoreThenGet() (gas: 448986) -LibOpGetNPTest:testLibOpGetNPEvalThreeInputs() (gas: 43550) -LibOpGetNPTest:testLibOpGetNPEvalTwoInputs() (gas: 38367) -LibOpGetNPTest:testLibOpGetNPEvalTwoOutputs() (gas: 33948) -LibOpGetNPTest:testLibOpGetNPEvalZeroInputs() (gas: 28479) -LibOpGetNPTest:testLibOpGetNPEvalZeroOutputs() (gas: 32932) -LibOpGetNPTest:testLibOpGetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19848, ~: 19954) -LibOpGetNPTest:testLibOpGetNPRunState(uint256,uint256,uint16) (runs: 2050, μ: 17798, ~: 17803) -LibOpGetNPTest:testLibOpGetNPRunStateAndStore(uint256,uint256,uint256,uint16) (runs: 2050, μ: 45590, ~: 45808) -LibOpGetNPTest:testLibOpGetNPRunStore(uint256,uint256,uint16) (runs: 2050, μ: 47789, ~: 47997) -LibOpGetNPTest:testLibOpGetNPRunStoreDifferentNamespace(uint256,uint256,uint16) (runs: 2050, μ: 49318, ~: 49526) -LibOpGetNPTest:testLibOpGetNPRunUnset(uint256,uint16) (runs: 2050, μ: 23029, ~: 23034) -LibOpGmTest:testOpGmEval() (gas: 399303) -LibOpGmTest:testOpGmEvalOperandDisallowed() (gas: 17332) -LibOpGmTest:testOpGmIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13866, ~: 13838) -LibOpGmTest:testOpGmOneInput() (gas: 34777) -LibOpGmTest:testOpGmRun(uint256,uint256,uint16) (runs: 2050, μ: 21915, ~: 21816) -LibOpGmTest:testOpGmThreeInputs() (gas: 44010) -LibOpGmTest:testOpGmTwoOutputs() (gas: 39627) -LibOpGmTest:testOpGmZeroOutputs() (gas: 38618) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsBothOne() (gas: 54034) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstOneSecondZero() (gas: 54705) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstZeroSecondOne() (gas: 54703) -LibOpGreaterThanNPTest:testOpGreaterThanNPEval2ZeroInputs() (gas: 54011) -LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail0Inputs() (gas: 29205) -LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail1Input() (gas: 33482) -LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail3Inputs() (gas: 41726) -LibOpGreaterThanNPTest:testOpGreaterThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19177, ~: 19233) -LibOpGreaterThanNPTest:testOpGreaterThanNPRun(uint256,uint256) (runs: 2050, μ: 15175, ~: 15171) -LibOpGreaterThanNPTest:testOpGreaterThanNPTwoOutputs() (gas: 41027) -LibOpGreaterThanNPTest:testOpGreaterThanNPZeroOutputs() (gas: 40037) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsBothOne() (gas: 55014) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 55682) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 55703) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2ZeroInputs() (gas: 54994) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail0Inputs() (gas: 30188) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail1Input() (gas: 34461) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail3Inputs() (gas: 42748) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13826, ~: 13805) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPRun(uint256,uint256) (runs: 2050, μ: 15182, ~: 15178) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPTwoOutputs() (gas: 42070) -LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPZeroOutputs() (gas: 40985) -LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 43371) -LibOpHashNPTest:testOpHashNPEval1Input() (gas: 50889) -LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 58914) -LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 59426) -LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 75294) -LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19231, ~: 19298) -LibOpHashNPTest:testOpHashNPRun(uint256[]) (runs: 2048, μ: 17514, ~: 17597) -LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 29556) -LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 28138) -LibOpHeadroomTest:testOpHeadroomEval() (gas: 235334) -LibOpHeadroomTest:testOpHeadroomEvalOperandDisallowed() (gas: 17818) -LibOpHeadroomTest:testOpHeadroomIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13822, ~: 13794) -LibOpHeadroomTest:testOpHeadroomRun(uint256,uint16) (runs: 2050, μ: 18870, ~: 19080) -LibOpHeadroomTest:testOpHeadroomTwoInputs() (gas: 39426) -LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 35092) -LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 29232) -LibOpHeadroomTest:testOpHeadroomZeroOutputs() (gas: 34075) -LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondTwoThirdThree() (gas: 60109) -LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondZeroThirdThree() (gas: 60065) -LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondThreeThirdFour() (gas: 60065) -LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondZeroThirdFour() (gas: 60085) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdTwo() (gas: 60108) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdZero() (gas: 59349) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdOne() (gas: 59261) -LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdThree() (gas: 59283) -LibOpIfNPTest:testOpIfNPEvalEmptyStringTruthy() (gas: 59061) -LibOpIfNPTest:testOpIfNPEvalFail0Inputs() (gas: 28364) -LibOpIfNPTest:testOpIfNPEvalFail1Input() (gas: 32692) -LibOpIfNPTest:testOpIfNPEvalFail2Inputs() (gas: 36832) -LibOpIfNPTest:testOpIfNPEvalFail4Inputs() (gas: 45058) -LibOpIfNPTest:testOpIfNPEvalTwoOutputs() (gas: 45281) -LibOpIfNPTest:testOpIfNPEvalZeroOutputs() (gas: 44227) -LibOpIfNPTest:testOpIfNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19187, ~: 19276) -LibOpIfNPTest:testOpIfNPRun(uint256,uint256,uint256) (runs: 2050, μ: 15336, ~: 15336) -LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17411) -LibOpInvTest:testOpInvEval() (gas: 159569) -LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13845, ~: 13817) -LibOpInvTest:testOpInvRun(uint256,uint16) (runs: 2050, μ: 18905, ~: 19109) -LibOpInvTest:testOpInvTwoInputs() (gas: 39042) -LibOpInvTest:testOpInvTwoOutputs() (gas: 34665) -LibOpInvTest:testOpInvZeroInputs() (gas: 28828) -LibOpInvTest:testOpInvZeroOutputs() (gas: 33672) -LibOpIsZeroNPTest:testOpIsZeroNPEval1NonZeroInput() (gas: 48508) -LibOpIsZeroNPTest:testOpIsZeroNPEval1ZeroInput() (gas: 48208) -LibOpIsZeroNPTest:testOpIsZeroNPEvalFail0Inputs() (gas: 28777) -LibOpIsZeroNPTest:testOpIsZeroNPEvalFail2Inputs() (gas: 37181) -LibOpIsZeroNPTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19299, ~: 19387) -LibOpIsZeroNPTest:testOpIsZeroNPRun(uint256) (runs: 2050, μ: 14947, ~: 14948) -LibOpIsZeroNPTest:testOpIsZeroNPTwoOutputs() (gas: 35253) -LibOpIsZeroNPTest:testOpIsZeroNPZeroOutputs() (gas: 33913) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsBothOne() (gas: 53771) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 54460) -LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstZeroSecondOne() (gas: 54460) -LibOpLessThanNPTest:testOpLessThanNPEval2ZeroInputs() (gas: 53791) -LibOpLessThanNPTest:testOpLessThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19218, ~: 19277) -LibOpLessThanNPTest:testOpLessThanNPRun(uint256,uint256) (runs: 2050, μ: 15160, ~: 15165) -LibOpLessThanNPTest:testOpLessThanNPTwoOutputs() (gas: 41062) -LibOpLessThanNPTest:testOpLessThanNPZeroOutputs() (gas: 39134) -LibOpLessThanNPTest:testOpLessThanToNPEvalFail0Inputs() (gas: 28985) -LibOpLessThanNPTest:testOpLessThanToNPEvalFail1Input() (gas: 33207) -LibOpLessThanNPTest:testOpLessThanToNPEvalFail3Inputs() (gas: 41535) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsBothOne() (gas: 54723) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 55435) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 55437) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2ZeroInputs() (gas: 54767) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail0Inputs() (gas: 29934) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail1Input() (gas: 34231) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail3Inputs() (gas: 42516) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19226, ~: 19284) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPRun(uint256,uint256) (runs: 2050, μ: 15189, ~: 15194) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPTwoOutputs() (gas: 41798) -LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPZeroOutputs() (gas: 40722) -LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 615496) -LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 50728) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 34837) -LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18199) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 40489) -LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 46235) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 29277) -LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 45178) -LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13824, ~: 13796) -LibOpLinearGrowthTest:testOpLinearGrowthRun(uint256,uint256,uint256,uint16) (runs: 2050, μ: 21898, ~: 21804) -LibOpLnTest:testOpLnEval() (gas: 220062) -LibOpLnTest:testOpLnEvalOperandDisallowed() (gas: 17331) -LibOpLnTest:testOpLnIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13845, ~: 13817) -LibOpLnTest:testOpLnRun(uint256,uint16) (runs: 2050, μ: 31843, ~: 31861) -LibOpLnTest:testOpLnTwoInputs() (gas: 38940) -LibOpLnTest:testOpLnTwoOutputs() (gas: 34628) -LibOpLnTest:testOpLnZeroInputs() (gas: 28726) -LibOpLnTest:testOpLnZeroOutputs() (gas: 33570) -LibOpLog10Test:testOpLog10Eval() (gas: 267448) -LibOpLog10Test:testOpLog10EvalOperandDisallowed() (gas: 17574) -LibOpLog10Test:testOpLog10Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13867, ~: 13839) -LibOpLog10Test:testOpLog10Run(uint256,uint16) (runs: 2050, μ: 35404, ~: 35436) -LibOpLog10Test:testOpLog10TwoInputs() (gas: 39226) -LibOpLog10Test:testOpLog10TwoOutputs() (gas: 34828) -LibOpLog10Test:testOpLog10ZeroInputs() (gas: 28967) -LibOpLog10Test:testOpLog10ZeroOutputs() (gas: 33812) -LibOpLog2Test:testOpLog2Eval() (gas: 257321) -LibOpLog2Test:testOpLog2EvalOperandDisallowed() (gas: 17493) -LibOpLog2Test:testOpLog2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13822, ~: 13794) -LibOpLog2Test:testOpLog2Run(uint256) (runs: 2050, μ: 31563, ~: 31594) -LibOpLog2Test:testOpLog2TwoInputs() (gas: 39114) -LibOpLog2Test:testOpLog2TwoOutputs() (gas: 34780) -LibOpLog2Test:testOpLog2ZeroInputs() (gas: 28899) -LibOpLog2Test:testOpLog2ZeroOutputs() (gas: 33762) -LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 522795) -LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 1774671) -LibOpMaxTest:testOpMaxEvalOneInput() (gas: 122576) -LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 58508) -LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 39787) -LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 28863) -LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17839, ~: 17850) -LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13763, ~: 13613) -LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13760, ~: 13610) -LibOpMaxTest:testOpMaxRun(uint256[]) (runs: 2048, μ: 19040, ~: 19160) -LibOpMaxUint256NPTest:testOpMaxUint256NPEval(uint256) (runs: 2050, μ: 42981, ~: 42981) -LibOpMaxUint256NPTest:testOpMaxUint256NPEvalFail() (gas: 33225) -LibOpMaxUint256NPTest:testOpMaxUint256NPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19200, ~: 19262) -LibOpMaxUint256NPTest:testOpMaxUint256NPRun() (gas: 14623) -LibOpMaxUint256NPTest:testOpMaxUint256NPTwoOutputs() (gas: 29953) -LibOpMaxUint256NPTest:testOpMaxUint256NPZeroOutputs() (gas: 28850) -LibOpMinTest:testOpMinEval2InputsHappy() (gas: 522795) -LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3121521) -LibOpMinTest:testOpMinEvalOneInput() (gas: 122512) -LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 58487) -LibOpMinTest:testOpMinEvalZeroInputs() (gas: 28868) -LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17851, ~: 17859) -LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13760, ~: 13610) -LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13782, ~: 13632) -LibOpMinTest:testOpMinRun(uint256[],uint16) (runs: 2048, μ: 19040, ~: 18929) -LibOpModTest:testOpModEval2InputsHappy() (gas: 745935) -LibOpModTest:testOpModEval2InputsUnhappy() (gas: 134072) -LibOpModTest:testOpModEval3InputsHappy() (gas: 1450323) -LibOpModTest:testOpModEval3InputsUnhappy() (gas: 443067) -LibOpModTest:testOpModEvalOneInput() (gas: 122576) -LibOpModTest:testOpModEvalOperandDisallowed() (gas: 58532) -LibOpModTest:testOpModEvalTwoOutputs() (gas: 39785) -LibOpModTest:testOpModEvalZeroInputs() (gas: 28861) -LibOpModTest:testOpModEvalZeroOutputs() (gas: 38753) -LibOpModTest:testOpModIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17808, ~: 17819) -LibOpModTest:testOpModIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13762, ~: 13612) -LibOpModTest:testOpModIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13739, ~: 13589) -LibOpModTest:testOpModRun(uint256[]) (runs: 2048, μ: 19412, ~: 19816) -LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13784, ~: 13634) -LibOpMulTest:testOpMulEvalOneInput() (gas: 121506) -LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 91210) -LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 696070) -LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 157504) -LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 486223) -LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 94909) -LibOpMulTest:testOpMulEvalZeroInputs() (gas: 28884) -LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17792, ~: 17802) -LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13782, ~: 13632) -LibOpMulTest:testOpMulRun(uint256[]) (runs: 2048, μ: 19042, ~: 16680) -LibOpMulTest:testOpMulTwoOutputs() (gas: 39786) -LibOpMulTest:testOpMulZeroOutputs() (gas: 38754) -LibOpPowTest:testOpPowEval() (gas: 401203) -LibOpPowTest:testOpPowEvalOneInput() (gas: 34168) -LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17552) -LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13844, ~: 13816) -LibOpPowTest:testOpPowRun(uint256,uint256) (runs: 2050, μ: 33692, ~: 35466) -LibOpPowTest:testOpPowThreeInputs() (gas: 44219) -LibOpPowTest:testOpPowTwoOutputs() (gas: 39861) -LibOpPowTest:testOpPowZeroOutputs() (gas: 38825) -LibOpScale18DynamicTest:testOpScale18DynamicEval() (gas: 1575800) -LibOpScale18DynamicTest:testOpScale18DynamicEvalOneInput() (gas: 126569) -LibOpScale18DynamicTest:testOpScale18DynamicEvalThreeInputs() (gas: 338386) -LibOpScale18DynamicTest:testOpScale18DynamicEvalZeroInputs() (gas: 30119) -LibOpScale18DynamicTest:testOpScale18DynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17770, ~: 17776) -LibOpScale18DynamicTest:testOpScale18DynamicRun(uint256,uint256,uint256,uint256) (runs: 2050, μ: 22787, ~: 22684) -LibOpScale18DynamicTest:testOpScale18DynamicTwoOutputs() (gas: 41012) -LibOpScale18DynamicTest:testOpScale18DynamicZeroOutputs() (gas: 39998) -LibOpScale18Test:testOpScale18Eval() (gas: 1483763) -LibOpScale18Test:testOpScale18EvalOneInput() (gas: 160996) -LibOpScale18Test:testOpScale18EvalZeroInputs() (gas: 33263) -LibOpScale18Test:testOpScale18Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17717, ~: 17693) -LibOpScale18Test:testOpScale18Run(uint256,uint256,uint256,uint256) (runs: 2050, μ: 22466, ~: 22561) -LibOpScale18Test:testOpScale18TwoOutputs() (gas: 39103) -LibOpScale18Test:testOpScale18ZeroOutputs() (gas: 38085) -LibOpScale18Test:testOpUint256ToDecimal18Eval() (gas: 169107) -LibOpScaleNDynamicTest:testOpScaleNDynamicEval() (gas: 1573580) -LibOpScaleNDynamicTest:testOpScaleNDynamicEvalOneInput() (gas: 126190) -LibOpScaleNDynamicTest:testOpScaleNDynamicEvalThreeInputs() (gas: 337651) -LibOpScaleNDynamicTest:testOpScaleNDynamicEvalZeroInputs() (gas: 30027) -LibOpScaleNDynamicTest:testOpScaleNDynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17792, ~: 17782) -LibOpScaleNDynamicTest:testOpScaleNDynamicRun(uint256,uint256,uint256,uint256) (runs: 2050, μ: 20889, ~: 22336) -LibOpScaleNDynamicTest:testOpScaleNDynamicTwoOutputs() (gas: 40962) -LibOpScaleNDynamicTest:testOpScaleNDynamicZeroOutputs() (gas: 39907) -LibOpScaleNTest:testOpDecimal18ToIntNPEval() (gas: 281994) -LibOpScaleNTest:testOpScaleNEval() (gas: 1460469) -LibOpScaleNTest:testOpScaleNEvalOneInput() (gas: 157966) -LibOpScaleNTest:testOpScaleNEvalZeroInputs() (gas: 32492) -LibOpScaleNTest:testOpScaleNEvalZeroOutputs() (gas: 37356) -LibOpScaleNTest:testOpScaleNIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17736, ~: 17709) -LibOpScaleNTest:testOpScaleNRun(uint256,uint256,uint256,uint256) (runs: 2050, μ: 20682, ~: 22456) -LibOpScaleNTest:testOpScaleNTwoOutputs() (gas: 38371) -LibOpSetNPTest:testLibOpSetNP(uint256,uint256) (runs: 2050, μ: 16038, ~: 16043) -LibOpSetNPTest:testLibOpSetNPEvalOneInput() (gas: 32852) -LibOpSetNPTest:testLibOpSetNPEvalOneOutput() (gas: 38358) -LibOpSetNPTest:testLibOpSetNPEvalOperandsDisallowed() (gas: 55669) -LibOpSetNPTest:testLibOpSetNPEvalSetTwice() (gas: 74198) -LibOpSetNPTest:testLibOpSetNPEvalThreeInputs() (gas: 43181) -LibOpSetNPTest:testLibOpSetNPEvalTwoInputs() (gas: 242520) -LibOpSetNPTest:testLibOpSetNPEvalTwoOutputs() (gas: 39010) -LibOpSetNPTest:testLibOpSetNPEvalZeroInputs() (gas: 28107) -LibOpSetNPTest:testLibOpSetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19747, ~: 19814) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 837361) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 124681) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 43436) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 39092) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 33265) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 38074) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2050, μ: 19661, ~: 19636) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13844, ~: 13823) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 18762, ~: 18768) -LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(uint256,uint8) (runs: 2050, μ: 15354, ~: 15354) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1006227) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 125033) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2050, μ: 19665, ~: 19587) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2050, μ: 13812, ~: 13791) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17437, ~: 17422) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(uint256,uint8) (runs: 2050, μ: 15401, ~: 15401) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 43515) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 39195) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 33302) -LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 38158) -LibOpSnapToUnitTest:testOpSnapToUnitEval() (gas: 586229) -LibOpSnapToUnitTest:testOpSnapToUnitEvalBad() (gas: 99440) -LibOpSnapToUnitTest:testOpSnapToUnitEvalOperandDisallowed() (gas: 18120) -LibOpSnapToUnitTest:testOpSnapToUnitEvalTwoOutputs() (gas: 40437) -LibOpSnapToUnitTest:testOpSnapToUnitEvalZeroOutputs() (gas: 39426) -LibOpSnapToUnitTest:testOpSnapToUnitIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13843, ~: 13815) -LibOpSnapToUnitTest:testOpSnapToUnitRun(uint256,uint256) (runs: 2050, μ: 19135, ~: 18821) -LibOpSqrtTest:testOpSqrtEval() (gas: 200267) -LibOpSqrtTest:testOpSqrtEvalBad() (gas: 63083) -LibOpSqrtTest:testOpSqrtEvalOperandDisallowed() (gas: 17471) -LibOpSqrtTest:testOpSqrtEvalTwoOutputs() (gas: 34746) -LibOpSqrtTest:testOpSqrtEvalZeroOutputs() (gas: 33729) -LibOpSqrtTest:testOpSqrtIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13845, ~: 13817) -LibOpSqrtTest:testOpSqrtRun(uint256) (runs: 2050, μ: 20237, ~: 20533) -LibOpStackNPTest:testOpStackEval() (gas: 53749) -LibOpStackNPTest:testOpStackEvalSeveral() (gas: 86318) -LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,uint256[],uint256) (runs: 2050, μ: 18431, ~: 18298) -LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,uint256[],uint16,uint256) (runs: 2050, μ: 18683, ~: 18663) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 38822) -LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 41751) -LibOpStackNPTest:testOpStackNPRun(uint256[][],uint256) (runs: 2050, μ: 2040033, ~: 1871142) -LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 37434) -LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 40329) -LibOpSubTest:testOpSubEval2InputsSaturatingUnderflow() (gas: 285405) -LibOpSubTest:testOpSubEval2InputsUnhappyUnderflow() (gas: 137715) -LibOpSubTest:testOpSubEval3InputsSaturatingUnderflow() (gas: 736066) -LibOpSubTest:testOpSubEval3InputsUnhappyUnderflow() (gas: 355017) -LibOpSubTest:testOpSubEvalOneInput() (gas: 122467) -LibOpSubTest:testOpSubEvalOneInputSaturating() (gas: 259869) -LibOpSubTest:testOpSubEvalThreeInputs() (gas: 209700) -LibOpSubTest:testOpSubEvalThreeInputsSaturating() (gas: 421830) -LibOpSubTest:testOpSubEvalTwoInputs() (gas: 311512) -LibOpSubTest:testOpSubEvalTwoInputsSaturating() (gas: 637471) -LibOpSubTest:testOpSubEvalZeroInputs() (gas: 28836) -LibOpSubTest:testOpSubEvalZeroInputsSaturating() (gas: 56710) -LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17852, ~: 17854) -LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13784, ~: 13634) -LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13783, ~: 13633) -LibOpSubTest:testOpSubRun(uint256[]) (runs: 2048, μ: 14241, ~: 13765) -LibOpTimestampNPTest:testOpBlockTimestampNPEvalFail() (gas: 62915) -LibOpTimestampNPTest:testOpBlockTimestampNPTwoOutputs() (gas: 55947) -LibOpTimestampNPTest:testOpBlockTimestampNPZeroOutputs() (gas: 53850) -LibOpTimestampNPTest:testOpTimestampNPEval(uint256) (runs: 2050, μ: 79806, ~: 79677) -LibOpTimestampNPTest:testOpTimestampNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19175, ~: 19240) -LibOpTimestampNPTest:testOpTimestampNPRun(uint256) (runs: 2050, μ: 18722, ~: 18593) -LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 757043) -LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 136015) -LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1418516) -LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 448854) -LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 125660) -LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 61124) -LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 40413) -LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 29511) -LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 39402) -LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17809, ~: 17814) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13804, ~: 13654) -LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13759, ~: 13609) -LibOpUint256DivTest:testOpUint256DivRun(uint256[]) (runs: 2048, μ: 19371, ~: 19774) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 54766) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256) (runs: 2050, μ: 66305, ~: 66305) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 36432) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 19012) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 42645) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoOutputs() (gas: 49629) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 30471) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 48573) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13825, ~: 13797) -LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256) (runs: 2050, μ: 22213, ~: 22213) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256) (runs: 2050, μ: 59662, ~: 59662) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 36492) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 19093) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 48512) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalTwoOutputs() (gas: 43405) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 30529) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 42392) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13867, ~: 13839) -LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16) (runs: 2049, μ: 21814, ~: 21814) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256) (runs: 2050, μ: 53126, ~: 53126) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 19299) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 42910) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 37335) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: 30692) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 36277) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2050, μ: 13847, ~: 13819) -LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16) (runs: 2050, μ: 21277, ~: 21277) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2049, μ: 99786, ~: 99947) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2050, μ: 19193, ~: 19251) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 30258) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 34533) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 43768) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 21960) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 34884) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2049, μ: 21901, ~: 21901) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 44109) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 40146) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 30576) -LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 39135) -LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 125212) -LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 95099) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1005000) -LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 621580) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 404569) -LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 135048) -LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 40401) -LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 29520) -LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 39414) -LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17866, ~: 17864) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13760, ~: 13610) -LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13783, ~: 13633) -LibOpUint256MulTest:testOpUint256MulRun(uint256[]) (runs: 2048, μ: 14887, ~: 14469) -LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2050, μ: 17796, ~: 17745) -LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 848704) -LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 136998) -LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 1977622) -LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 608268) -LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 125860) -LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 61726) -LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 40608) -LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 29725) -LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 39532) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13762, ~: 13612) -LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2050, μ: 13739, ~: 13589) -LibOpUint256PowTest:testOpUint256PowRun(uint256[]) (runs: 2048, μ: 16355, ~: 15723) -LibParseCommentsTest:testParseCommentAfterSources() (gas: 68194) -LibParseCommentsTest:testParseCommentBetweenSources() (gas: 68271) -LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 41415) -LibParseCommentsTest:testParseCommentInLHSWhitespace() (gas: 41692) -LibParseCommentsTest:testParseCommentInNamedLHS() (gas: 41563) -LibParseCommentsTest:testParseCommentInRHS() (gas: 41860) -LibParseCommentsTest:testParseCommentInRHS2() (gas: 44678) -LibParseCommentsTest:testParseCommentInRHS3() (gas: 44688) -LibParseCommentsTest:testParseCommentLong() (gas: 61773) -LibParseCommentsTest:testParseCommentManyAstericks() (gas: 54962) -LibParseCommentsTest:testParseCommentManyAstericksTrailing() (gas: 54898) -LibParseCommentsTest:testParseCommentMultiple() (gas: 72897) -LibParseCommentsTest:testParseCommentNoTrailingWhitespace() (gas: 42267) -LibParseCommentsTest:testParseCommentNoWords() (gas: 51433) -LibParseCommentsTest:testParseCommentSingleWord() (gas: 55418) -LibParseCommentsTest:testParseCommentSingleWordSameLine() (gas: 56246) -LibParseCommentsTest:testParseCommentUnclosed() (gas: 41939) -LibParseCommentsTest:testParseCommentUnclosed2() (gas: 42115) -LibParseEmptyGasTest:testParseGasEmpty00() (gas: 37570) -LibParseEmptyGasTest:testParseGasEmpty01() (gas: 42253) -LibParseEmptyGasTest:testParseGasEmpty02() (gas: 46331) -LibParseEmptyGasTest:testParseGasEmpty03() (gas: 50386) -LibParseEmptyGasTest:testParseGasEmpty04() (gas: 54441) -LibParseEmptyTest:testParseEmpty00() (gas: 41746) -LibParseEmptyTest:testParseEmpty01() (gas: 49720) -LibParseEmptyTest:testParseEmpty02() (gas: 57361) -LibParseEmptyTest:testParseEmpty03() (gas: 64801) -LibParseEmptyTest:testParseEmpty04() (gas: 72262) -LibParseEmptyTest:testParseEmpty08() (gas: 102163) -LibParseEmptyTest:testParseEmpty15() (gas: 154427) -LibParseEmptyTest:testParseEmptyError16() (gas: 85274) -LibParseIgnoredLHSTest:testParseIgnoredLHSAlphaTooLong() (gas: 51784) -LibParseIgnoredLHSTest:testParseIgnoredLHSLoneUnderscore() (gas: 50404) -LibParseIgnoredLHSTest:testParseIgnoredLHSMultipleLines() (gas: 53632) -LibParseIgnoredLHSTest:testParseIgnoredLHSTwoAlphas() (gas: 51501) -LibParseIgnoredLHSTest:testParseIgnoredLHSTwoUnderscores() (gas: 51338) -LibParseIgnoredLHSTest:testParseIgnoredLHSUnderscoreAlpha() (gas: 50478) -LibParseIgnoredLHSTest:testParseIgnoredLHSUnderscoreNotInput() (gas: 55415) -LibParseIgnoredLHSTest:testParseIgnoredWordTooLong() (gas: 53029) -LibParseInputsOnlyGasTest:testParseGasInputsOnly00() (gas: 42946) -LibParseInputsOnlyGasTest:testParseGasInputsOnly01() (gas: 43869) -LibParseInputsOnlyGasTest:testParseGasInputsOnly02() (gas: 44765) -LibParseInputsOnlyGasTest:testParseGasInputsOnly03() (gas: 45687) -LibParseInputsOnlyGasTest:testParseGasInputsOnly04() (gas: 46609) -LibParseInputsOnlyGasTest:testParseGasInputsOnly05() (gas: 47531) -LibParseInputsOnlyGasTest:testParseGasInputsOnly06() (gas: 48451) -LibParseInputsOnlyGasTest:testParseGasInputsOnly07() (gas: 49403) -LibParseInputsOnlyGasTest:testParseGasInputsOnly08() (gas: 50292) -LibParseInputsOnlyGasTest:testParseGasInputsOnly09() (gas: 51214) -LibParseInputsOnlyTest:testParseInputsOnlyMultiple() (gas: 51293) -LibParseInputsOnlyTest:testParseInputsOnlySingle() (gas: 50395) -LibParseIsMaskTest:testIsMaskPastEnd(uint256,uint256,uint256) (runs: 2050, μ: 16916, ~: 18818) -LibParseIsMaskTest:testIsMaskReference(string,uint256,uint256) (runs: 2050, μ: 8238, ~: 8289) -LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexBounds() (gas: 17333) -LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2050, μ: 43433, ~: 42204) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 406343) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 5216) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 5194) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 5195) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 5194) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 6037) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 5218) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatEmpty() (gas: 5183) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert() (gas: 5163) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert2() (gas: 6253) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert3() (gas: 6269) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert4() (gas: 5216) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 5237) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 5238) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 443340) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 2050, μ: 45603, ~: 37336) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 64472) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 7259) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 6008) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 5194) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 28246) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 28124) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 27281) -LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 36407) -LibParseLiteralDecimalTest:testParseLiteralDecimalDecimals() (gas: 169939) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError() (gas: 5137) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError2() (gas: 5137) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError3() (gas: 5765) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError4() (gas: 5117) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError5() (gas: 5094) -LibParseLiteralDecimalTest:testParseLiteralDecimalDotError6() (gas: 5095) -LibParseLiteralDecimalTest:testParseLiteralDecimalEmpty() (gas: 5049) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponents() (gas: 166109) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponents2() (gas: 235133) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponents2Capital() (gas: 169693) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponents3() (gas: 256423) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponents4() (gas: 136502) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError() (gas: 5136) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError3() (gas: 5870) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError4() (gas: 5138) -LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError5() (gas: 5138) -LibParseLiteralDecimalTest:testParseLiteralDecimalNegativeExponents() (gas: 219344) -LibParseLiteralDecimalTest:testParseLiteralDecimalNegativeExponentsError() (gas: 6489) -LibParseLiteralDecimalTest:testParseLiteralDecimalNonDecimal() (gas: 5041) -LibParseLiteralDecimalTest:testParseLiteralDecimalOverflow() (gas: 7472) -LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimal() (gas: 7330) -LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimalMax() (gas: 11787) -LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimalSmall() (gas: 11450) -LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossInteger() (gas: 7192) -LibParseLiteralDecimalTest:testParseLiteralDecimalRoundTrip(uint256) (runs: 2050, μ: 21595, ~: 20921) -LibParseLiteralDecimalTest:testParseLiteralDecimalSpecific() (gas: 49442) -LibParseLiteralDecimalTest:testParseLiteralDecimalTrailingZeros() (gas: 198848) -LibParseLiteralDecimalTest:testParseLiteralDecimalUnrelated() (gas: 70886) -LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(uint256) (runs: 2050, μ: 18084, ~: 13270) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 55518) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 62770) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal02() (gas: 69243) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalENotation() (gas: 87706) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensBoth() (gas: 45583) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensLeft() (gas: 45625) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensRight() (gas: 45484) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256Max() (gas: 77678) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256MaxLeadingZeros() (gas: 78178) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingDigit() (gas: 64314) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingDigitLeadingZeros() (gas: 64434) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingZeros() (gas: 64597) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowSimple() (gas: 64424) -LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalYang() (gas: 46061) -LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex00() (gas: 54645) -LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 60281) -LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 65275) -LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 71345) -LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2049, μ: 15969, ~: 16015) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2050, μ: 29103, ~: 29036) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2049, μ: 18088, ~: 17911) -LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2049, μ: 30535, ~: 30107) -LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2048, μ: 13111, ~: 13014) -LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2048, μ: 18032, ~: 17971) -LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 53559) -LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 5543) -LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 2049, μ: 67976, ~: 67556) -LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 2050, μ: 65929, ~: 65817) -LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 2049, μ: 67397, ~: 66965) -LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 2049, μ: 61266, ~: 61313) -LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 53662) -LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 2048, μ: 74302, ~: 74242) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableBody() (gas: 52887) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableEmptyBody() (gas: 16526) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2050, μ: 85253, ~: 84760) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchEmpty() (gas: 7839) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosed() (gas: 7844) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace0() (gas: 7837) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace1() (gas: 7794) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatch0() (gas: 8252) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchBody() (gas: 8414) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchWhitespace0() (gas: 8346) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchWhitespace1() (gas: 7817) -LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDoubleOpen() (gas: 8274) -LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsEmptySource() (gas: 44180) -LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsLHSItems() (gas: 42131) -LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsLoneColon() (gas: 41247) -LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsSingleWord() (gas: 44158) -LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsTrailingComma() (gas: 42405) -LibParseNOutputTest:testParseBalanceStackOffsetsInputs() (gas: 60488) -LibParseNOutputTest:testParseNOutputExcessRHS0() (gas: 49623) -LibParseNOutputTest:testParseNOutputExcessRHS1() (gas: 47915) -LibParseNOutputTest:testParseNOutputExcessRHS2() (gas: 48314) -LibParseNOutputTest:testParseNOutputExcessRHS3() (gas: 49647) -LibParseNOutputTest:testParseNOutputNestedRHS() (gas: 55754) -LibParseNamedLHSTest:testParseNamedDuplicateDifferentSource() (gas: 54420) -LibParseNamedLHSTest:testParseNamedError32() (gas: 44047) -LibParseNamedLHSTest:testParseNamedError33() (gas: 44024) -LibParseNamedLHSTest:testParseNamedErrorDuplicateSameSource() (gas: 44482) -LibParseNamedLHSTest:testParseNamedLHSEmptySourceExamples() (gas: 151264) -LibParseNamedLHSTest:testParseNamedLHSStackIndex() (gas: 57179) -LibParseNamedLHSTest:testParseNamedLHSTwoInputs() (gas: 59946) -LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential00() (gas: 77379) -LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential01() (gas: 92236) -LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential02() (gas: 87634) -LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential03() (gas: 189412) -LibParseNamedRHSTest:testParseSingleWord() (gas: 53392) -LibParseNamedRHSTest:testParseTwoFullLinesSingleRHSEach() (gas: 73943) -LibParseNamedRHSTest:testParseTwoFullSourcesSingleRHSEach() (gas: 64768) -LibParseNamedRHSTest:testParseTwoNested() (gas: 56794) -LibParseNamedRHSTest:testParseTwoNestedAsThirdInput() (gas: 66587) -LibParseNamedRHSTest:testParseTwoSequential() (gas: 58429) -LibParseNamedRHSTest:testParseTwoSequentialWithInputs() (gas: 71329) -LibParseOperand8M1M1Test:testOperand8M1M1Elided() (gas: 91043) -LibParseOperand8M1M1Test:testOperand8M1M1Single() (gas: 264585) -LibParseOperand8M1M1Test:testOperand8M1M1SingleBit() (gas: 546146) -LibParseOperand8M1M1Test:testOperand8M1M1SingleBitsPart1() (gas: 1552186) -LibParseOperand8M1M1Test:testOperand8M1M1Unclosed() (gas: 301312) -LibParseOperand8M1M1Test:testOperand8M1M1Unopened() (gas: 46550) -LibParseOperandDisallowedTest:testOperandDisallowed() (gas: 43291) -LibParseOperandDisallowedTest:testOperandDisallowed1() (gas: 43759) -LibParseOperandDisallowedTest:testOperandDisallowed3() (gas: 45670) -LibParseOperandDisallowedTest:testOperandDisallowed4() (gas: 45692) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultElided() (gas: 42781) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultEmpty() (gas: 43171) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultFirst() (gas: 45744) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultMultipleWhitespace() (gas: 57474) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultPostfixWhitespace() (gas: 56713) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultPrefixWhitespace() (gas: 56689) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecond() (gas: 56328) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondMax() (gas: 57447) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondMaxZero() (gas: 56808) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondOverflow() (gas: 50078) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondOverflowFirst() (gas: 50079) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondZero() (gas: 56193) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondZeroMax() (gas: 56830) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultThird() (gas: 51663) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnclosed() (gas: 48493) -LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnopened() (gas: 42782) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2050, μ: 10903, ~: 10989) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2050, μ: 10933, ~: 10751) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2050, μ: 9338, ~: 9329) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2050, μ: 9354, ~: 9088) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2050, μ: 7827, ~: 7886) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(uint256) (runs: 2050, μ: 7770, ~: 7979) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(uint256[]) (runs: 2050, μ: 14020, ~: 14029) -LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1NoValues() (gas: 3508) -LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(uint256[]) (runs: 2050, μ: 13808, ~: 13855) -LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedNoValues() (gas: 3212) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2050, μ: 9096, ~: 9214) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2050, μ: 9180, ~: 8895) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(uint256[]) (runs: 2050, μ: 13916, ~: 13891) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultNoValues() (gas: 3507) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2050, μ: 7384, ~: 7658) -LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2050, μ: 9298, ~: 9277) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(uint256[]) (runs: 2050, μ: 13918, ~: 13893) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1NoValues() (gas: 3544) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2050, μ: 7634, ~: 7602) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2050, μ: 7694, ~: 7372) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2050, μ: 9175, ~: 9201) -LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2050, μ: 9269, ~: 9038) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(uint256[]) (runs: 2050, μ: 13867, ~: 13889) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(uint256[]) (runs: 2050, μ: 13911, ~: 13933) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultNoValues() (gas: 3502) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2050, μ: 7193, ~: 7466) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoValues() (gas: 3237) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2050, μ: 7408, ~: 7677) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2050, μ: 8096, ~: 8210) -LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2050, μ: 9119, ~: 9227) -LibParseOperandM1M1Test:testOperandM1M1Both() (gas: 56440) -LibParseOperandM1M1Test:testOperandM1M1BothZero() (gas: 55368) -LibParseOperandM1M1Test:testOperandM1M1Elided() (gas: 50298) -LibParseOperandM1M1Test:testOperandM1M1Empty() (gas: 50690) -LibParseOperandM1M1Test:testOperandM1M1First() (gas: 53339) -LibParseOperandM1M1Test:testOperandM1M1FirstOverflow() (gas: 46070) -LibParseOperandM1M1Test:testOperandM1M1Second() (gas: 56361) -LibParseOperandM1M1Test:testOperandM1M1SecondOverflow() (gas: 49170) -LibParseOperandM1M1Test:testOperandM1M1SecondZero() (gas: 56240) -LibParseOperandM1M1Test:testOperandM1M1Unclosed() (gas: 247498) -LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 47893) -LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 2050, μ: 42200, ~: 42204) -LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],uint256[4],string[5],string) (runs: 2050, μ: 341874, ~: 341749) -LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 2050, μ: 42151, ~: 42155) -LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,uint256,string,string,string) (runs: 2050, μ: 149774, ~: 149753) -LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,uint256,uint256,uint256,string,string,string,string,string) (runs: 2050, μ: 275746, ~: 276623) -LibParseOperandParseOperandTest:testParseOperandTooManyValues() (gas: 52964) -LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,uint256,uint256,string,string,string,string) (runs: 2050, μ: 214097, ~: 213889) -LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 52478) -LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 49578) -LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 50041) -LibParseOperandSingleFullTest:testOperandSingleFullEmpty() (gas: 50366) -LibParseOperandSingleFullTest:testOperandSingleFullHexOne() (gas: 52186) -LibParseOperandSingleFullTest:testOperandSingleFullHexUint16Max() (gas: 52798) -LibParseOperandSingleFullTest:testOperandSingleFullHexUint16MaxOverflow() (gas: 46015) -LibParseOperandSingleFullTest:testOperandSingleFullHexZero() (gas: 52187) -LibParseOperandSingleFullTest:testOperandSingleFullLeadingAndTrailingWhitespace() (gas: 52871) -LibParseOperandSingleFullTest:testOperandSingleFullLeadingWhitespace() (gas: 53485) -LibParseOperandSingleFullTest:testOperandSingleFullMultiple() (gas: 46901) -LibParseOperandSingleFullTest:testOperandSingleFullOne() (gas: 53143) -LibParseOperandSingleFullTest:testOperandSingleFullTrailingWhitespace() (gas: 53529) -LibParseOperandSingleFullTest:testOperandSingleFullUint16Max() (gas: 54241) -LibParseOperandSingleFullTest:testOperandSingleFullUint16MaxOverflow() (gas: 47108) -LibParseOperandSingleFullTest:testOperandSingleFullUnclosed() (gas: 45626) -LibParseOperandSingleFullTest:testOperandSingleFullUnopened() (gas: 43806) -LibParseOperandSingleFullTest:testOperandSingleFullZero() (gas: 53088) -LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2050, μ: 9351, ~: 9368) -LibParseParseWordTest:testLibParseParseWordExamples() (gas: 26461) -LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2048, μ: 6455, ~: 6236) -LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2050, μ: 9041, ~: 9033) -LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 2050, μ: 8256, ~: 8252) -LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),string) (runs: 2050, μ: 16560, ~: 16437) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParser(string,address,uint256,string) (runs: 2050, μ: 181202, ~: 176089) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 2050, μ: 358987, ~: 357598) -LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserSpecificStrings() (gas: 246981) -LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 2050, μ: 19767, ~: 17118) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8094) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8154) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8238) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored03() (gas: 8319) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored04() (gas: 8422) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored05() (gas: 8461) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored06() (gas: 8587) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored07() (gas: 8626) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored08() (gas: 8705) -LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored09() (gas: 8811) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed00() (gas: 8794) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed01() (gas: 8895) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed02() (gas: 8933) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed03() (gas: 9035) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed04() (gas: 9117) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed05() (gas: 9200) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed06() (gas: 9278) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed07() (gas: 9382) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed08() (gas: 9463) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed09() (gas: 9543) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed10() (gas: 9602) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed11() (gas: 9662) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed12() (gas: 9786) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed13() (gas: 9847) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed14() (gas: 9927) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed15() (gas: 9985) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed16() (gas: 10111) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed17() (gas: 10170) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed18() (gas: 10272) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed19() (gas: 10311) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed20() (gas: 10391) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed21() (gas: 10494) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed22() (gas: 10552) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed23() (gas: 10636) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed24() (gas: 10714) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed25() (gas: 10840) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed26() (gas: 10899) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed27() (gas: 10959) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed28() (gas: 11070) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed29() (gas: 11118) -LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed30() (gas: 11202) -LibParseSingleRHSNamedGasTest:testParseGasRHS00() (gas: 115165) -LibParseSingleRHSNamedGasTest:testParseGasRHS01() (gas: 115267) -LibParseSingleRHSNamedGasTest:testParseGasRHS02() (gas: 115326) -LibParseSingleRHSNamedGasTest:testParseGasRHS03() (gas: 115406) -LibParseSingleRHSNamedGasTest:testParseGasRHS04() (gas: 115489) -LibParseSingleRHSNamedGasTest:testParseGasRHS05() (gas: 115569) -LibParseSingleRHSNamedGasTest:testParseGasRHS06() (gas: 115629) -LibParseSingleRHSNamedGasTest:testParseGasRHS07() (gas: 115710) -LibParseSingleRHSNamedGasTest:testParseGasRHS08() (gas: 115811) -LibParseSingleRHSNamedGasTest:testParseGasRHS09() (gas: 115872) -LibParseSingleRHSNamedGasTest:testParseGasRHS10() (gas: 115995) -LibParseSingleRHSNamedGasTest:testParseGasRHS11() (gas: 116031) -LibParseSingleRHSNamedGasTest:testParseGasRHS12() (gas: 116145) -LibParseSingleRHSNamedGasTest:testParseGasRHS13() (gas: 116217) -LibParseSingleRHSNamedGasTest:testParseGasRHS14() (gas: 116275) -LibParseSingleRHSNamedGasTest:testParseGasRHS15() (gas: 116379) -LibParseSingleRHSNamedGasTest:testParseGasRHS16() (gas: 116439) -LibParseSingleRHSNamedGasTest:testParseGasRHS17() (gas: 116519) -LibParseSingleRHSNamedGasTest:testParseGasRHS18() (gas: 116644) -LibParseSingleRHSNamedGasTest:testParseGasRHS19() (gas: 116725) -LibParseSingleRHSNamedGasTest:testParseGasRHS20() (gas: 116784) -LibParseSingleRHSNamedGasTest:testParseGasRHS21() (gas: 116886) -LibParseSingleRHSNamedGasTest:testParseGasRHS22() (gas: 116924) -LibParseSingleRHSNamedGasTest:testParseGasRHS23() (gas: 117028) -LibParseSingleRHSNamedGasTest:testParseGasRHS24() (gas: 117107) -LibParseSingleRHSNamedGasTest:testParseGasRHS25() (gas: 117188) -LibParseSingleRHSNamedGasTest:testParseGasRHS26() (gas: 117250) -LibParseSingleRHSNamedGasTest:testParseGasRHS27() (gas: 117341) -LibParseSingleRHSNamedGasTest:testParseGasRHS28() (gas: 117445) -LibParseSingleRHSNamedGasTest:testParseGasRHS29() (gas: 117536) -LibParseSingleRHSNamedGasTest:testParseGasRHS30() (gas: 117598) -LibParseSourceInputsTest:testParseSourceInputsEmptyLinePrefix() (gas: 48331) -LibParseSourceInputsTest:testParseSourceInputsMultipleLines() (gas: 51041) -LibParseSourceInputsTest:testParseSourceInputsSingle() (gas: 48308) -LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2050, μ: 20694, ~: 20680) -LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32) (runs: 2050, μ: 17937, ~: 18124) -LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),uint256) (runs: 2050, μ: 323090, ~: 274813) -LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32) (runs: 2050, μ: 17816, ~: 18003) -LibParseStateConstantValueBloomTest:testConstantValueBloom(uint256) (runs: 2050, μ: 3357, ~: 3357) -LibParseStateConstantValueBloomTest:testConstantValueBloomAllBits() (gas: 44617) -LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(uint256) (runs: 2050, μ: 3417, ~: 3417) -LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address[]) (runs: 2050, μ: 151933, ~: 152126) -LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2050, μ: 12573, ~: 12696) -LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2050, μ: 6529, ~: 6529) -LibParseStateNewActiveSourcePointerTest:testPreUnalignedNewPointer() (gas: 8436) -LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2050, μ: 4604, ~: 4601) -LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2050, μ: 6321, ~: 6318) -LibParseStatePushConstantValueTest:testPushConstantValueMany(uint256[]) (runs: 2050, μ: 226420, ~: 227538) -LibParseStatePushConstantValueTest:testPushConstantValueSingle(uint256) (runs: 2050, μ: 6924, ~: 6924) -LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address[]) (runs: 2050, μ: 135534, ~: 136056) -LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address,address,address) (runs: 2050, μ: 16835, ~: 16834) -LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),uint256) (runs: 2050, μ: 19138, ~: 18934) -LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address) (runs: 2050, μ: 15697, ~: 15656) -LibParseUnclosedLeftParenTest:testParseUnclosedLeftParen() (gas: 44207) -LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested() (gas: 63377) -LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested2() (gas: 64859) -LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested3() (gas: 74307) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2050, μ: 41969, ~: 41970) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2050, μ: 47702, ~: 47786) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOF() (gas: 41043) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOL() (gas: 41044) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2050, μ: 41587, ~: 41587) -LibParseUnexpectedLHSTest:testParseUnexpectedLHSUnderscoreTail() (gas: 42035) -LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2050, μ: 41917, ~: 41917) -LibParseUnexpectedRHSTest:testParseUnexpectedRHSLeftParen() (gas: 41411) -LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 40924) -LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 46503) -LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2050, μ: 12953, ~: 12904) -LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2050, μ: 7691, ~: 7427) -RainterpreterExpressionDeployerNPE2DeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 9499762) -RainterpreterExpressionDeployerNPE2DescribedByMetaV1Test:testRainterpreterExpressionDeployerNPE2DescribedByMetaV1Happy() (gas: 9506782) -RainterpreterExpressionDeployerNPE2IERC165Test:testRainterpreterExpressionDeployerNPE2IERC165(bytes4) (runs: 2050, μ: 9507878, ~: 9507878) -RainterpreterExpressionDeployerNPE2MetaTest:testRainterpreterExpressionDeployerNPE2ExpectedConstructionMetaHash() (gas: 6173) -RainterpreterNPE2IERC165Test:testRainterpreterNPE2IERC165(bytes4) (runs: 2050, μ: 4105796, ~: 4105796) -RainterpreterNPE2PointersTest:testOpcodeFunctionPointers() (gas: 4112532) -RainterpreterNPE2Test:testRainterpreterNPE2OddFunctionPointersLength() (gas: 3690) -RainterpreterParserNPE2IERC165Test:testRainterpreterParserNPE2IERC165(bytes4) (runs: 2050, μ: 3720510, ~: 3720510) -RainterpreterParserNPE2ParserPragma:testParsePragmaNoPragma() (gas: 18575805) -RainterpreterParserNPE2ParserPragma:testParsePragmaSinglePragma() (gas: 11195849) -RainterpreterParserNPE2ParserPragma:testParsePragmaWithInterstitial() (gas: 11199078) -RainterpreterParserNPE2PointersTest:testLiteralParserFunctionPointers() (gas: 3717503) -RainterpreterParserNPE2PointersTest:testOperandHandlerFunctionPointers() (gas: 3725674) -RainterpreterParserNPE2PointersTest:testParserParseMeta() (gas: 5324665) -RainterpreterReferenceExternNPE2ContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 1700182) -RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 1699796) -RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 1698620) -RainterpreterReferenceExternNPE2DescribedByMetaV1:testRainterpreterReferenceExternNPE2DescribedByMetaV1Happy() (gas: 1624445) -RainterpreterReferenceExternNPE2IERC165Test:testRainterpreterReferenceExternNPE2IERC165(bytes4) (runs: 2050, μ: 1630367, ~: 1630367) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappySugared() (gas: 1720541) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappyUnsugared() (gas: 1714504) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncIntegrity(uint256,uint256,uint256) (runs: 2050, μ: 3613, ~: 3613) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncRun(uint256,uint256[]) (runs: 2050, μ: 167010, ~: 153544) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseKnownWord(uint16,bytes1) (runs: 2050, μ: 1638495, ~: 1638770) -RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 2048, μ: 1635042, ~: 1634765) -RainterpreterReferenceExternNPE2PointersTest:testIntegrityFunctionPointers() (gas: 1624934) -RainterpreterReferenceExternNPE2PointersTest:testOpcodeFunctionPointers() (gas: 1624999) -RainterpreterReferenceExternNPE2PointersTest:testSubParserFunctionPointers() (gas: 1625444) -RainterpreterReferenceExternNPE2PointersTest:testSubParserLiteralParsers() (gas: 1624976) -RainterpreterReferenceExternNPE2PointersTest:testSubParserOperandParsers() (gas: 1625449) -RainterpreterReferenceExternNPE2PointersTest:testSubParserParseMeta() (gas: 18170) -RainterpreterReferenceExternNPE2RepeatTest:testRainterpreterReferenceExternNPE2RepeatHappy() (gas: 1747852) -RainterpreterReferenceExternNPE2StackOperandTest:testRainterpreterReferenceExternNPE2StackOperandSingle(uint256) (runs: 2050, μ: 1706930, ~: 1707287) -RainterpreterReferenceExternNPE2UnknownWordTest:testRainterpreterReferenceExternNPE2UnknownWord() (gas: 1671158) -RainterpreterStoreNPE2IERC165Test:testRainterpreterStoreNPE2IERC165(bytes4) (runs: 2050, μ: 224769, ~: 224769) -RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2IERC165(uint32) (runs: 2050, μ: 224786, ~: 224786) -RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetDupes((uint256,uint256[11])[]) (runs: 2048, μ: 1503674, ~: 1460139) -RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetNoDupesMany((uint256,uint256[])[]) (runs: 2050, μ: 3512055, ~: 3343134) -RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetNoDupesSingle(uint256,uint256[]) (runs: 2050, μ: 1931151, ~: 1944236) -RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetOddLength(uint256,uint256[]) (runs: 2049, μ: 243348, ~: 243330) -TestLibParseLiteralDecimalUnsafeStrToInt:testUnsafeStrToIntOverflowVeryLarge(uint256,uint256,uint8) (runs: 2050, μ: 42686, ~: 37168) -TestLibParseLiteralDecimalUnsafeStrToInt:testUnsafeStrToIntRoundTrip(uint256,uint8) (runs: 2050, μ: 29700, ~: 22983) -TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntOverflowNegative(uint256,uint8) (runs: 2050, μ: 46115, ~: 36528) -TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntOverflowPositive(uint256,uint8) (runs: 2050, μ: 46156, ~: 36569) -TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntRoundTrip(uint256,uint8,bool) (runs: 2050, μ: 34797, ~: 29273) \ No newline at end of file +BaseRainterpreterExternNPE2IERC165Test:testRainterpreterExternNPE2IERC165(bytes4) (runs: 2048, μ: 287281, ~: 287281) +BaseRainterpreterSubParserNPE2CompatibilityTest:testRainterpreterSubParserNPE2Compatibility(bytes32,bytes) (runs: 2048, μ: 679858, ~: 679810) +BaseRainterpreterSubParserNPE2IERC165Test:testRainterpreterSubParserNPE2IERC165(uint32) (runs: 2048, μ: 680462, ~: 680462) +LibAllStandardOpsNPTest:testIntegrityAndOpcodeFunctionPointersLength() (gas: 90234) +LibAllStandardOpsNPTest:testIntegrityFunctionPointersLength() (gas: 12096) +LibAllStandardOpsNPTest:testOpcodeFunctionPointersLength() (gas: 12090) +LibEvalNPFBoundsTest:testEvalNPFBoundsModConstant(uint256) (runs: 2048, μ: 86864, ~: 86864) +LibExternCodecTest:testLibExternCodecEncodeExternCall(uint256,uint256) (runs: 2048, μ: 9644, ~: 9532) +LibExternCodecTest:testLibExternCodecEncodeExternDispatch(uint256,uint256) (runs: 2048, μ: 8812, ~: 8700) +LibInterpreterStateNPStackTraceTest:testStackTraceCall(uint256,uint256,uint256[]) (runs: 2048, μ: 43098, ~: 42742) +LibOpAddTest:testOpAddEval2InputsHappy() (gas: 104831) +LibOpAddTest:testOpAddEval2InputsHappyZero() (gas: 57054) +LibOpAddTest:testOpAddEval2InputsHappyZeroMax() (gas: 100817) +LibOpAddTest:testOpAddEval2InputsHappyZeroOne() (gas: 103826) +LibOpAddTest:testOpAddEval2InputsUnhappy() (gas: 96963) +LibOpAddTest:testOpAddEval3InputsHappy() (gas: 329667) +LibOpAddTest:testOpAddEval3InputsUnhappy() (gas: 667141) +LibOpAddTest:testOpAddEvalOneInput() (gas: 35897) +LibOpAddTest:testOpAddEvalOperandDisallowed() (gas: 93453) +LibOpAddTest:testOpAddEvalTwoOutput() (gas: 42745) +LibOpAddTest:testOpAddEvalZeroInputs() (gas: 30156) +LibOpAddTest:testOpAddEvalZeroOutputs() (gas: 41657) +LibOpAddTest:testOpAddIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17968, ~: 17968) +LibOpAddTest:testOpAddIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13798, ~: 13645) +LibOpAddTest:testOpAddIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13797, ~: 13644) +LibOpAddTest:testOpAddRun(uint256[]) (runs: 2048, μ: 19869, ~: 20060) +LibOpAnyNPTest:testOpAnyNPEval1FalseInput() (gas: 50005) +LibOpAnyNPTest:testOpAnyNPEval1TrueInput() (gas: 49903) +LibOpAnyNPTest:testOpAnyNPEval2FalseInputs() (gas: 55414) +LibOpAnyNPTest:testOpAnyNPEval2MixedInputs() (gas: 56181) +LibOpAnyNPTest:testOpAnyNPEval2MixedInputs2() (gas: 56285) +LibOpAnyNPTest:testOpAnyNPEval2TrueInputs() (gas: 56183) +LibOpAnyNPTest:testOpAnyNPEvalFail() (gas: 29691) +LibOpAnyNPTest:testOpAnyNPIntegrityGas0() (gas: 3279) +LibOpAnyNPTest:testOpAnyNPIntegrityHappy(uint8,uint16) (runs: 2048, μ: 8303, ~: 8432) +LibOpAnyNPTest:testOpAnyNPIntegrityUnhappyZeroInputs() (gas: 4079) +LibOpAnyNPTest:testOpAnyNPRun(uint256[],uint16) (runs: 2048, μ: 19148, ~: 19140) +LibOpAnyNPTest:testOpAnyNPRunGas0() (gas: 3382) +LibOpAnyNPTest:testOpAnyNPTwoOutputs() (gas: 36001) +LibOpAnyNPTest:testOpAnyNPZeroOutputs() (gas: 34974) +LibOpAvgTest:testOpAvgEval() (gas: 416320) +LibOpAvgTest:testOpAvgEvalOneInput() (gas: 35336) +LibOpAvgTest:testOpAvgEvalOperandDisallowed() (gas: 17754) +LibOpAvgTest:testOpAvgEvalThreeInputs() (gas: 45473) +LibOpAvgTest:testOpAvgEvalTwoOutputs() (gas: 41123) +LibOpAvgTest:testOpAvgEvalZeroOutputs() (gas: 40058) +LibOpAvgTest:testOpAvgIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13835, ~: 13805) +LibOpAvgTest:testOpAvgRun(uint256,uint256,uint16) (runs: 2048, μ: 22103, ~: 21813) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPEvalHappy() (gas: 749629) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13857, ~: 13827) +LibOpBitwiseAndNPTest:testOpBitwiseAndNPRun(uint256,uint256) (runs: 2048, μ: 16544, ~: 16544) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18444) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35953) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 46111) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41761) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30781) +LibOpBitwiseAndNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40738) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEval() (gas: 748313) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalBadOperand() (gas: 18363) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalOneInput() (gas: 35894) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalThreeInputs() (gas: 46052) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalTwoOutputs() (gas: 41657) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroInputs() (gas: 30656) +LibOpBitwiseOrNPTest:testOpBitwiseORNPEvalZeroOutputs() (gas: 40657) +LibOpBitwiseOrNPTest:testOpBitwiseORNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13835, ~: 13805) +LibOpBitwiseOrNPTest:testOpBitwiseORNPRun(uint256,uint256) (runs: 2048, μ: 16520, ~: 16520) +LibOpBlockNumberNPTest:testOpBlockNumberNPEval(uint256) (runs: 2048, μ: 48928, ~: 48797) +LibOpBlockNumberNPTest:testOpBlockNumberNPEvalOneInput() (gas: 35094) +LibOpBlockNumberNPTest:testOpBlockNumberNPEvalTwoOutputs() (gas: 31448) +LibOpBlockNumberNPTest:testOpBlockNumberNPEvalZeroOutputs() (gas: 30442) +LibOpBlockNumberNPTest:testOpBlockNumberNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19422, ~: 19456) +LibOpBlockNumberNPTest:testOpBlockNumberNPRun(uint256,uint16) (runs: 2048, μ: 20146, ~: 20009) +LibOpCallNPTest:testCallTraceInnerOnly() (gas: 62207) +LibOpCallNPTest:testCallTraceOuterAndInner() (gas: 73065) +LibOpCallNPTest:testCallTraceOuterAndTwoInner() (gas: 113087) +LibOpCallNPTest:testCallTraceOuterOnly() (gas: 44866) +LibOpCallNPTest:testOpCallNPIntegrityIO((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2048, μ: 39810, ~: 38276) +LibOpCallNPTest:testOpCallNPIntegritySourceIndexOutOfBounds((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint256,uint256,bytes32) (runs: 2048, μ: 37505, ~: 35590) +LibOpCallNPTest:testOpCallNPIntegrityTooManyOutputs((uint256,uint256,uint256,uint256[],uint256,bytes),uint256,uint256,uint8,bytes32) (runs: 2048, μ: 36210, ~: 35993) +LibOpCallNPTest:testOpCallNPRunInputsMismatch() (gas: 73763) +LibOpCallNPTest:testOpCallNPRunNoIO() (gas: 708857) +LibOpCallNPTest:testOpCallNPRunOutputsMismatch() (gas: 66546) +LibOpCallNPTest:testOpCallNPRunRecursive() (gas: 302226) +LibOpCallNPTest:testOpCallNPRunSourceDoesNotExist() (gas: 351530) +LibOpCeilTest:testOpCeilEval() (gas: 208294) +LibOpCeilTest:testOpCeilEvalOperandDisallowed() (gas: 17835) +LibOpCeilTest:testOpCeilIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13879, ~: 13849) +LibOpCeilTest:testOpCeilRun(uint256,uint16) (runs: 2048, μ: 20396, ~: 20603) +LibOpCeilTest:testOpCeilTwoInputs() (gas: 40498) +LibOpCeilTest:testOpCeilTwoOutputs() (gas: 36085) +LibOpCeilTest:testOpCeilZeroInputs() (gas: 30203) +LibOpCeilTest:testOpCeilZeroOutputs() (gas: 35081) +LibOpChainIdNPTest:testOpChainIDNPEval(uint64,uint256) (runs: 2048, μ: 46206, ~: 46206) +LibOpChainIdNPTest:testOpChainIDNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19439, ~: 19492) +LibOpChainIdNPTest:testOpChainIdNPEvalFail() (gas: 34363) +LibOpChainIdNPTest:testOpChainIdNPRun(uint64,uint16) (runs: 2048, μ: 16607, ~: 16607) +LibOpChainIdNPTest:testOpChainIdNPTwoOutputs() (gas: 31129) +LibOpChainIdNPTest:testOpChainIdNPZeroOutputs() (gas: 30103) +LibOpConditionsNPTest:testOpConditionsNPEval1FalseInput1TrueInput() (gas: 70019) +LibOpConditionsNPTest:testOpConditionsNPEval1FalseInputRevert() (gas: 54464) +LibOpConditionsNPTest:testOpConditionsNPEval1TrueInput1FalseInput() (gas: 69893) +LibOpConditionsNPTest:testOpConditionsNPEval1TrueInputZeroOutput() (gas: 57011) +LibOpConditionsNPTest:testOpConditionsNPEval2MixedInputs() (gas: 57013) +LibOpConditionsNPTest:testOpConditionsNPEval2TrueInputs() (gas: 69894) +LibOpConditionsNPTest:testOpConditionsNPEvalErrorCode() (gas: 66410) +LibOpConditionsNPTest:testOpConditionsNPEvalFail0Inputs() (gas: 30360) +LibOpConditionsNPTest:testOpConditionsNPEvalFail1Inputs() (gas: 34639) +LibOpConditionsNPTest:testOpConditionsNPEvalUnhappyOperand() (gas: 18305) +LibOpConditionsNPTest:testOpConditionsNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19997, ~: 20089) +LibOpConditionsNPTest:testOpConditionsNPRun(uint256[],uint256) (runs: 2048, μ: 19641, ~: 19743) +LibOpConditionsNPTest:testOpConditionsNPRunNoConditionsMet(uint256[],string) (runs: 2048, μ: 25208, ~: 24938) +LibOpConditionsNPTest:testOpConditionsNPTwoOutputs() (gas: 39888) +LibOpConditionsNPTest:testOpConditionsNPZeroOutputs() (gas: 38889) +LibOpConstantNPTest:testOpConstantEvalNPE2E() (gas: 53786) +LibOpConstantNPTest:testOpConstantEvalZeroConstants() (gas: 41484) +LibOpConstantNPTest:testOpConstantNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 19241, ~: 19225) +LibOpConstantNPTest:testOpConstantNPIntegrityOOBConstants((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 18107, ~: 18108) +LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorSugared() (gas: 31852) +LibOpConstantNPTest:testOpConstantNPMultipleOutputErrorUnsugared() (gas: 41813) +LibOpConstantNPTest:testOpConstantNPRun(uint256[],uint16) (runs: 2048, μ: 53277, ~: 53322) +LibOpConstantNPTest:testOpConstantNPZeroOutputErrorSugared() (gas: 30496) +LibOpConstantNPTest:testOpConstantNPZeroOutputErrorUnsugared() (gas: 40402) +LibOpContextNPTest:testOpContextNPEval00(uint256[][]) (runs: 2048, μ: 7239042, ~: 6126133) +LibOpContextNPTest:testOpContextNPEval01(uint256[][]) (runs: 2048, μ: 7232806, ~: 6116670) +LibOpContextNPTest:testOpContextNPEval10(uint256[][]) (runs: 2048, μ: 7278488, ~: 6183761) +LibOpContextNPTest:testOpContextNPEval11(uint256[][]) (runs: 2048, μ: 7275172, ~: 6203107) +LibOpContextNPTest:testOpContextNPEvalOOBi(uint256[]) (runs: 2048, μ: 76577, ~: 76665) +LibOpContextNPTest:testOpContextNPEvalOOBj(uint256) (runs: 2048, μ: 47576, ~: 47576) +LibOpContextNPTest:testOpContextNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 14558, ~: 14528) +LibOpContextNPTest:testOpContextNPOneInput() (gas: 41806) +LibOpContextNPTest:testOpContextNPRun(uint256[][],uint256,uint256) (runs: 2048, μ: 10520944, ~: 8961145) +LibOpContextNPTest:testOpContextNPRunOOBi(uint256[][],uint256,uint256) (runs: 2048, μ: 5494721, ~: 4781618) +LibOpContextNPTest:testOpContextNPRunOOBj(uint256[][],uint256,uint256) (runs: 2048, μ: 5522188, ~: 4828386) +LibOpContextNPTest:testOpContextNPTwoInputs() (gas: 46929) +LibOpContextNPTest:testOpContextNPTwoOutputs() (gas: 37298) +LibOpContextNPTest:testOpContextNPZeroOutputs() (gas: 36270) +LibOpCtPopNPTest:testOpCtPopNPEval(uint256) (runs: 2048, μ: 63962, ~: 60857) +LibOpCtPopNPTest:testOpCtPopNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13878, ~: 13848) +LibOpCtPopNPTest:testOpCtPopNPRun(uint256) (runs: 2048, μ: 16679, ~: 16680) +LibOpCtPopNPTest:testOpCtPopNPTwoInputs() (gas: 41554) +LibOpCtPopNPTest:testOpCtPopNPTwoOutputs() (gas: 37207) +LibOpCtPopNPTest:testOpCtPopNPZeroInputs() (gas: 31258) +LibOpCtPopNPTest:testOpCtPopNPZeroOutputs() (gas: 36159) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalHappy() (gas: 836330) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoInputs() (gas: 47409) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalTwoOutputs() (gas: 43086) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroInputs() (gas: 37159) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPEvalZeroOutputs() (gas: 41992) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8,uint8) (runs: 2048, μ: 22060, ~: 22206) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2048, μ: 19426, ~: 19364) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 13873, ~: 13849) +LibOpDecodeBitsNPTest:testOpDecodeBitsNPRun(uint256,uint8,uint8) (runs: 2048, μ: 20851, ~: 20668) +LibOpDivTest:testDebugOpDivRun() (gas: 11706) +LibOpDivTest:testOpDivEvalOneInput() (gas: 126900) +LibOpDivTest:testOpDivEvalOperandsDisallowed() (gas: 93429) +LibOpDivTest:testOpDivEvalThreeInputsHappy() (gas: 370588) +LibOpDivTest:testOpDivEvalThreeInputsUnhappy() (gas: 207933) +LibOpDivTest:testOpDivEvalThreeInputsUnhappyOverflow() (gas: 165561) +LibOpDivTest:testOpDivEvalTwoInputsHappy() (gas: 328277) +LibOpDivTest:testOpDivEvalTwoInputsUnhappy() (gas: 141121) +LibOpDivTest:testOpDivEvalTwoInputsUnhappyOverflow() (gas: 99815) +LibOpDivTest:testOpDivEvalTwoOutputs() (gas: 41831) +LibOpDivTest:testOpDivEvalZeroInputs() (gas: 30156) +LibOpDivTest:testOpDivEvalZeroOutputs() (gas: 40786) +LibOpDivTest:testOpDivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17971, ~: 17979) +LibOpDivTest:testOpDivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13797, ~: 13644) +LibOpDivTest:testOpDivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13820, ~: 13667) +LibOpDivTest:testOpDivRun(uint256[]) (runs: 2048, μ: 25144, ~: 24769) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 55762) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256,uint8) (runs: 2048, μ: 70963, ~: 71019) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 37109) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 18791) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 43521) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoOutputs() (gas: 50587) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 31077) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 49521) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13859, ~: 13829) +LibOpERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256,uint8) (runs: 2048, μ: 26859, ~: 26907) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256,uint8) (runs: 2048, μ: 64673, ~: 64592) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 37165) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 18872) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOverflow(uint256,uint8) (runs: 2048, μ: 60637, ~: 60637) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 49456) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalTwoOutputs() (gas: 44285) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 31175) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 43261) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13879, ~: 13849) +LibOpERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16,uint8) (runs: 2048, μ: 26934, ~: 26855) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256,uint8) (runs: 2048, μ: 57821, ~: 57738) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 19078) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOverflow(uint256,uint8) (runs: 2048, μ: 53851, ~: 53851) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 43782) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 38151) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: 31338) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 37104) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13859, ~: 13829) +LibOpERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16,uint8) (runs: 2048, μ: 26193, ~: 26109) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalHappy() (gas: 54484) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalOperandDisallowed() (gas: 18576) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoInputs() (gas: 43346) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalTwoOutputs() (gas: 37623) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroInputs() (gas: 30900) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerNPEvalZeroOutputs() (gas: 36572) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13836, ~: 13806) +LibOpERC5313OwnerNPTest:testOpERC5313OwnerOfNPRun(address,address,uint16) (runs: 2048, μ: 23167, ~: 23167) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail0() (gas: 30653) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail1() (gas: 34976) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFail3() (gas: 44395) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalFailOperand() (gas: 18409) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalHappy(address,uint256,address) (runs: 2048, μ: 95436, ~: 91777) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalOneInput() (gas: 35428) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalThreeInputs() (gas: 44899) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroInputs() (gas: 31117) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPEvalZeroOutputs() (gas: 39683) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 13861, ~: 13838) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPRun(address,uint256,address,uint16) (runs: 2048, μ: 23764, ~: 23764) +LibOpERC721OwnerOfTest:testOpERC721OwnerOfNPTwoOutputs() (gas: 40726) +LibOpETest:testOpEEval() (gas: 43885) +LibOpETest:testOpEEvalOneInput() (gas: 34204) +LibOpETest:testOpEEvalTwoOutputs() (gas: 30600) +LibOpETest:testOpEEvalZeroOutputs() (gas: 29552) +LibOpETest:testOpEIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19443, ~: 19492) +LibOpETest:testOpERun(uint16) (runs: 2048, μ: 16015, ~: 16015) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalHappy() (gas: 839051) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalOneInput() (gas: 42290) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalThreeInputs() (gas: 52447) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalTwoOutputs() (gas: 48054) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroInputs() (gas: 37073) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPEvalZeroOutputs() (gas: 47053) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2048, μ: 18146, ~: 18133) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFail((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8) (runs: 2048, μ: 19550, ~: 19556) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPIntegrityFailZeroLength((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 14045, ~: 14021) +LibOpEncodeBitsNPTest:testOpEncodeBitsNPRun(uint256,uint256,uint8,uint8) (runs: 2048, μ: 21261, ~: 21069) +LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs() (gas: 35192) +LibOpEnsureNPTest:testOpEnsureNPEvalBadOutputs2() (gas: 34532) +LibOpEnsureNPTest:testOpEnsureNPEvalHappy() (gas: 168250) +LibOpEnsureNPTest:testOpEnsureNPEvalOne() (gas: 34869) +LibOpEnsureNPTest:testOpEnsureNPEvalThree() (gas: 46416) +LibOpEnsureNPTest:testOpEnsureNPEvalUnhappy() (gas: 111811) +LibOpEnsureNPTest:testOpEnsureNPEvalUnhappyOperand() (gas: 17295) +LibOpEnsureNPTest:testOpEnsureNPEvalZero() (gas: 29605) +LibOpEnsureNPTest:testOpEnsureNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19504, ~: 19557) +LibOpEnsureNPTest:testOpEnsureNPIntegrityUnhappy((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13764, ~: 13611) +LibOpEnsureNPTest:testOpEnsureNPOneOutput() (gas: 39962) +LibOpEnsureNPTest:testOpEnsureNPRun(uint256,string) (runs: 2048, μ: 16542, ~: 16613) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsBothOne() (gas: 55573) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstOneSecondZero() (gas: 56500) +LibOpEqualToNPTest:testOpEqualToNPEval2InputsFirstZeroSecondOne() (gas: 56479) +LibOpEqualToNPTest:testOpEqualToNPEval2ZeroInputs() (gas: 55615) +LibOpEqualToNPTest:testOpEqualToNPEvalFail0Inputs() (gas: 30053) +LibOpEqualToNPTest:testOpEqualToNPEvalFail1Input() (gas: 34352) +LibOpEqualToNPTest:testOpEqualToNPEvalFail3Inputs() (gas: 42725) +LibOpEqualToNPTest:testOpEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19444, ~: 19492) +LibOpEqualToNPTest:testOpEqualToNPRun(uint256,uint256) (runs: 2048, μ: 16571, ~: 16572) +LibOpEqualToNPTest:testOpEqualToNPTwoOutputs() (gas: 41423) +LibOpEqualToNPTest:testOpEqualToNPZeroOutputs() (gas: 40424) +LibOpEveryNPTest:testOpAnyNPEvalFail() (gas: 30560) +LibOpEveryNPTest:testOpEveryNPEval1FalseInput() (gas: 50766) +LibOpEveryNPTest:testOpEveryNPEval1TrueInput() (gas: 50805) +LibOpEveryNPTest:testOpEveryNPEval2FalseInputs() (gas: 56143) +LibOpEveryNPTest:testOpEveryNPEval2MixedInputs() (gas: 57125) +LibOpEveryNPTest:testOpEveryNPEval2MixedInputs2() (gas: 57071) +LibOpEveryNPTest:testOpEveryNPEval2TrueInputs() (gas: 57161) +LibOpEveryNPTest:testOpEveryNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19630, ~: 19699) +LibOpEveryNPTest:testOpEveryNPIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13747, ~: 13594) +LibOpEveryNPTest:testOpEveryNPRun(uint256[]) (runs: 2048, μ: 20480, ~: 20545) +LibOpEveryNPTest:testOpEveryNPTwoOutputs() (gas: 36847) +LibOpEveryNPTest:testOpEveryNPZeroOutputs() (gas: 35820) +LibOpExp2Test:testOpExp2Eval() (gas: 212859) +LibOpExp2Test:testOpExp2EvalBad() (gas: 67085) +LibOpExp2Test:testOpExp2EvalOperandDisallowed() (gas: 18525) +LibOpExp2Test:testOpExp2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13835, ~: 13805) +LibOpExp2Test:testOpExp2Run(uint256,uint16) (runs: 2048, μ: 24021, ~: 25086) +LibOpExp2Test:testOpExp2TwoOutputs() (gas: 36733) +LibOpExp2Test:testOpExp2ZeroOutputs() (gas: 35705) +LibOpExpTest:testOpExpEval() (gas: 217864) +LibOpExpTest:testOpExpEvalOperandDisallowed() (gas: 17752) +LibOpExpTest:testOpExpEvalTwoInputs() (gas: 40394) +LibOpExpTest:testOpExpEvalZeroInputs() (gas: 30121) +LibOpExpTest:testOpExpIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13856, ~: 13826) +LibOpExpTest:testOpExpRun(uint256,uint16) (runs: 2048, μ: 24317, ~: 25588) +LibOpExpTest:testOpExpTwoOutputs() (gas: 36006) +LibOpExpTest:testOpExpZeroOutputs() (gas: 35000) +LibOpExponentialGrowthTest:testOpExponentialGrowthEval() (gas: 689027) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalFourInputs() (gas: 52560) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOneInput() (gas: 36520) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalOperandDisallowed() (gas: 18959) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoInputs() (gas: 42304) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalTwoOutputs() (gas: 48074) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroInputs() (gas: 30917) +LibOpExponentialGrowthTest:testOpExponentialGrowthEvalZeroOutputs() (gas: 47008) +LibOpExponentialGrowthTest:testOpExponentialGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13834, ~: 13804) +LibOpExponentialGrowthTest:testOpExponentialGrowthRun(uint256,uint256,uint256,uint16) (runs: 2048, μ: 39048, ~: 39160) +LibOpExternNPTest:testOpExternNPEvalHappy() (gas: 99409) +LibOpExternNPTest:testOpExternNPEvalMultipleInputsOutputsHappy() (gas: 114332) +LibOpExternNPTest:testOpExternNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2048, μ: 34374, ~: 34223) +LibOpExternNPTest:testOpExternNPIntegrityNotAnExternContract((uint256,uint256,uint256,uint256[],uint256,bytes),address,uint16,uint8,uint8) (runs: 2048, μ: 52617, ~: 52172) +LibOpExternNPTest:testOpExternNPRunHappy(address,uint256[],uint16,uint256[],uint256[]) (runs: 2048, μ: 116351, ~: 115761) +LibOpFloorTest:testOpFloorEval() (gas: 247261) +LibOpFloorTest:testOpFloorEvalOperandDisallowed() (gas: 17917) +LibOpFloorTest:testOpFloorIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13856, ~: 13826) +LibOpFloorTest:testOpFloorRun(uint256,uint16) (runs: 2048, μ: 20258, ~: 20466) +LibOpFloorTest:testOpFloorTwoInputs() (gas: 40578) +LibOpFloorTest:testOpFloorTwoOutputs() (gas: 36167) +LibOpFloorTest:testOpFloorZeroInputs() (gas: 30262) +LibOpFloorTest:testOpFloorZeroOutputs() (gas: 35141) +LibOpFracTest:testOpFracEval() (gas: 246698) +LibOpFracTest:testOpFracEvalOperandDisallowed() (gas: 17835) +LibOpFracTest:testOpFracIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13834, ~: 13804) +LibOpFracTest:testOpFracRun(uint256,uint16) (runs: 2048, μ: 20218, ~: 20425) +LibOpFracTest:testOpFracTwoInputs() (gas: 40488) +LibOpFracTest:testOpFracTwoOutputs() (gas: 36120) +LibOpFracTest:testOpFracZeroInputs() (gas: 30191) +LibOpFracTest:testOpFracZeroOutputs() (gas: 35070) +LibOpGetNPTest:testLibOpGetNPEvalKeyNotSet() (gas: 303282) +LibOpGetNPTest:testLibOpGetNPEvalOperandDisallowed() (gas: 58646) +LibOpGetNPTest:testLibOpGetNPEvalSetThenGet() (gas: 516383) +LibOpGetNPTest:testLibOpGetNPEvalStoreAndSetAndGet() (gas: 252945) +LibOpGetNPTest:testLibOpGetNPEvalStoreThenGet() (gas: 468972) +LibOpGetNPTest:testLibOpGetNPEvalThreeInputs() (gas: 44966) +LibOpGetNPTest:testLibOpGetNPEvalTwoInputs() (gas: 39739) +LibOpGetNPTest:testLibOpGetNPEvalTwoOutputs() (gas: 35284) +LibOpGetNPTest:testLibOpGetNPEvalZeroInputs() (gas: 29769) +LibOpGetNPTest:testLibOpGetNPEvalZeroOutputs() (gas: 34257) +LibOpGetNPTest:testLibOpGetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 20314, ~: 20410) +LibOpGetNPTest:testLibOpGetNPRunState(uint256,uint256,uint16) (runs: 2048, μ: 19501, ~: 19505) +LibOpGetNPTest:testLibOpGetNPRunStateAndStore(uint256,uint256,uint256,uint16) (runs: 2048, μ: 47306, ~: 47524) +LibOpGetNPTest:testLibOpGetNPRunStore(uint256,uint256,uint16) (runs: 2048, μ: 49516, ~: 49724) +LibOpGetNPTest:testLibOpGetNPRunStoreDifferentNamespace(uint256,uint256,uint16) (runs: 2048, μ: 51046, ~: 51254) +LibOpGetNPTest:testLibOpGetNPRunUnset(uint256,uint16) (runs: 2048, μ: 24523, ~: 24528) +LibOpGmTest:testOpGmEval() (gas: 420651) +LibOpGmTest:testOpGmEvalOperandDisallowed() (gas: 17695) +LibOpGmTest:testOpGmIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13878, ~: 13848) +LibOpGmTest:testOpGmOneInput() (gas: 36120) +LibOpGmTest:testOpGmRun(uint256,uint256,uint16) (runs: 2048, μ: 23534, ~: 23449) +LibOpGmTest:testOpGmThreeInputs() (gas: 45426) +LibOpGmTest:testOpGmTwoOutputs() (gas: 41009) +LibOpGmTest:testOpGmZeroOutputs() (gas: 39989) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsBothOne() (gas: 55939) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstOneSecondZero() (gas: 56803) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2InputsFirstZeroSecondOne() (gas: 56802) +LibOpGreaterThanNPTest:testOpGreaterThanNPEval2ZeroInputs() (gas: 55916) +LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail0Inputs() (gas: 30388) +LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail1Input() (gas: 34700) +LibOpGreaterThanNPTest:testOpGreaterThanNPEvalFail3Inputs() (gas: 43020) +LibOpGreaterThanNPTest:testOpGreaterThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19425, ~: 19486) +LibOpGreaterThanNPTest:testOpGreaterThanNPRun(uint256,uint256) (runs: 2048, μ: 16567, ~: 16563) +LibOpGreaterThanNPTest:testOpGreaterThanNPTwoOutputs() (gas: 42410) +LibOpGreaterThanNPTest:testOpGreaterThanNPZeroOutputs() (gas: 41409) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsBothOne() (gas: 56982) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 57844) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 57866) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEval2ZeroInputs() (gas: 56962) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail0Inputs() (gas: 31371) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail1Input() (gas: 35743) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPEvalFail3Inputs() (gas: 44106) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 13838, ~: 13815) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPRun(uint256,uint256) (runs: 2048, μ: 16574, ~: 16570) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPTwoOutputs() (gas: 43581) +LibOpGreaterThanOrEqualToNPTest:testOpGreaterThanOrEqualToNPZeroOutputs() (gas: 42357) +LibOpHashNPTest:testOpHashNPEval0Inputs() (gas: 45329) +LibOpHashNPTest:testOpHashNPEval1Input() (gas: 52776) +LibOpHashNPTest:testOpHashNPEval2Inputs() (gas: 60931) +LibOpHashNPTest:testOpHashNPEval2InputsDifferent() (gas: 61637) +LibOpHashNPTest:testOpHashNPEval2InputsOtherStack() (gas: 78001) +LibOpHashNPTest:testOpHashNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19479, ~: 19599) +LibOpHashNPTest:testOpHashNPRun(uint256[]) (runs: 2048, μ: 19321, ~: 19429) +LibOpHashNPTest:testOpHashNPTwoOutputs() (gas: 30856) +LibOpHashNPTest:testOpHashNPZeroOutputs() (gas: 29423) +LibOpHeadroomTest:testOpHeadroomEval() (gas: 248521) +LibOpHeadroomTest:testOpHeadroomEvalOperandDisallowed() (gas: 18181) +LibOpHeadroomTest:testOpHeadroomIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13834, ~: 13804) +LibOpHeadroomTest:testOpHeadroomRun(uint256,uint16) (runs: 2048, μ: 20307, ~: 20513) +LibOpHeadroomTest:testOpHeadroomTwoInputs() (gas: 40800) +LibOpHeadroomTest:testOpHeadroomTwoOutputs() (gas: 36432) +LibOpHeadroomTest:testOpHeadroomZeroInputs() (gas: 30526) +LibOpHeadroomTest:testOpHeadroomZeroOutputs() (gas: 35404) +LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondTwoThirdThree() (gas: 62443) +LibOpIfNPTest:testOpIfNPEval3InputsFirstOneSecondZeroThirdThree() (gas: 62400) +LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondThreeThirdFour() (gas: 62399) +LibOpIfNPTest:testOpIfNPEval3InputsFirstTwoSecondZeroThirdFour() (gas: 62420) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdTwo() (gas: 62442) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondOneThirdZero() (gas: 61490) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdOne() (gas: 61401) +LibOpIfNPTest:testOpIfNPEval3InputsFirstZeroSecondZeroThirdThree() (gas: 61423) +LibOpIfNPTest:testOpIfNPEvalEmptyStringTruthy() (gas: 61389) +LibOpIfNPTest:testOpIfNPEvalFail0Inputs() (gas: 29547) +LibOpIfNPTest:testOpIfNPEvalFail1Input() (gas: 33910) +LibOpIfNPTest:testOpIfNPEvalFail2Inputs() (gas: 38088) +LibOpIfNPTest:testOpIfNPEvalFail4Inputs() (gas: 46390) +LibOpIfNPTest:testOpIfNPEvalTwoOutputs() (gas: 46706) +LibOpIfNPTest:testOpIfNPEvalZeroOutputs() (gas: 45641) +LibOpIfNPTest:testOpIfNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19426, ~: 19477) +LibOpIfNPTest:testOpIfNPRun(uint256,uint256,uint256) (runs: 2048, μ: 16803, ~: 16803) +LibOpInvTest:testOpExpEvalOperandDisallowed() (gas: 17774) +LibOpInvTest:testOpInvEval() (gas: 168366) +LibOpInvTest:testOpInvIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13857, ~: 13827) +LibOpInvTest:testOpInvRun(uint256,uint16) (runs: 2048, μ: 20339, ~: 20544) +LibOpInvTest:testOpInvTwoInputs() (gas: 40416) +LibOpInvTest:testOpInvTwoOutputs() (gas: 36005) +LibOpInvTest:testOpInvZeroInputs() (gas: 30122) +LibOpInvTest:testOpInvZeroOutputs() (gas: 35001) +LibOpIsZeroNPTest:testOpIsZeroNPEval1NonZeroInput() (gas: 50374) +LibOpIsZeroNPTest:testOpIsZeroNPEval1ZeroInput() (gas: 50070) +LibOpIsZeroNPTest:testOpIsZeroNPEvalFail0Inputs() (gas: 29960) +LibOpIsZeroNPTest:testOpIsZeroNPEvalFail2Inputs() (gas: 38437) +LibOpIsZeroNPTest:testOpIsZeroNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19536, ~: 19600) +LibOpIsZeroNPTest:testOpIsZeroNPRun(uint256) (runs: 2048, μ: 16268, ~: 16269) +LibOpIsZeroNPTest:testOpIsZeroNPTwoOutputs() (gas: 36595) +LibOpIsZeroNPTest:testOpIsZeroNPZeroOutputs() (gas: 35241) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsBothOne() (gas: 55676) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstOneSecondZero() (gas: 56559) +LibOpLessThanNPTest:testOpLessThanNPEval2InputsFirstZeroSecondOne() (gas: 56558) +LibOpLessThanNPTest:testOpLessThanNPEval2ZeroInputs() (gas: 55696) +LibOpLessThanNPTest:testOpLessThanNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19478, ~: 19520) +LibOpLessThanNPTest:testOpLessThanNPRun(uint256,uint256) (runs: 2048, μ: 16553, ~: 16558) +LibOpLessThanNPTest:testOpLessThanNPTwoOutputs() (gas: 42448) +LibOpLessThanNPTest:testOpLessThanNPZeroOutputs() (gas: 40504) +LibOpLessThanNPTest:testOpLessThanToNPEvalFail0Inputs() (gas: 30168) +LibOpLessThanNPTest:testOpLessThanToNPEvalFail1Input() (gas: 34425) +LibOpLessThanNPTest:testOpLessThanToNPEvalFail3Inputs() (gas: 42829) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsBothOne() (gas: 56627) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstOneSecondZero() (gas: 57534) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2InputsFirstZeroSecondOne() (gas: 57535) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEval2ZeroInputs() (gas: 56671) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail0Inputs() (gas: 31117) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail1Input() (gas: 35449) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPEvalFail3Inputs() (gas: 43874) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19470, ~: 19537) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPRun(uint256,uint256) (runs: 2048, μ: 16582, ~: 16587) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPTwoOutputs() (gas: 43181) +LibOpLessThanOrEqualToNPTest:testOpLessThanOrEqualToNPZeroOutputs() (gas: 42094) +LibOpLinearGrowthTest:testOpLinearGrowthEval() (gas: 646689) +LibOpLinearGrowthTest:testOpLinearGrowthEvalFourInputs() (gas: 52188) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOneInput() (gas: 36169) +LibOpLinearGrowthTest:testOpLinearGrowthEvalOperandDisallowed() (gas: 18562) +LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoInputs() (gas: 41865) +LibOpLinearGrowthTest:testOpLinearGrowthEvalTwoOutputs() (gas: 47661) +LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroInputs() (gas: 30567) +LibOpLinearGrowthTest:testOpLinearGrowthEvalZeroOutputs() (gas: 46593) +LibOpLinearGrowthTest:testOpLinearGrowthIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13836, ~: 13806) +LibOpLinearGrowthTest:testOpLinearGrowthRun(uint256,uint256,uint256,uint16) (runs: 2048, μ: 23714, ~: 23623) +LibOpLnTest:testOpLnEval() (gas: 231118) +LibOpLnTest:testOpLnEvalOperandDisallowed() (gas: 17694) +LibOpLnTest:testOpLnIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13857, ~: 13827) +LibOpLnTest:testOpLnRun(uint256,uint16) (runs: 2048, μ: 33279, ~: 33302) +LibOpLnTest:testOpLnTwoInputs() (gas: 40314) +LibOpLnTest:testOpLnTwoOutputs() (gas: 35968) +LibOpLnTest:testOpLnZeroInputs() (gas: 30020) +LibOpLnTest:testOpLnZeroOutputs() (gas: 34899) +LibOpLog10Test:testOpLog10Eval() (gas: 280702) +LibOpLog10Test:testOpLog10EvalOperandDisallowed() (gas: 17937) +LibOpLog10Test:testOpLog10Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13879, ~: 13849) +LibOpLog10Test:testOpLog10Run(uint256,uint16) (runs: 2048, μ: 36859, ~: 36877) +LibOpLog10Test:testOpLog10TwoInputs() (gas: 40600) +LibOpLog10Test:testOpLog10TwoOutputs() (gas: 36168) +LibOpLog10Test:testOpLog10ZeroInputs() (gas: 30261) +LibOpLog10Test:testOpLog10ZeroOutputs() (gas: 35141) +LibOpLog2Test:testOpLog2Eval() (gas: 270570) +LibOpLog2Test:testOpLog2EvalOperandDisallowed() (gas: 17856) +LibOpLog2Test:testOpLog2Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13834, ~: 13804) +LibOpLog2Test:testOpLog2Run(uint256) (runs: 2048, μ: 32995, ~: 33036) +LibOpLog2Test:testOpLog2TwoInputs() (gas: 40488) +LibOpLog2Test:testOpLog2TwoOutputs() (gas: 36120) +LibOpLog2Test:testOpLog2ZeroInputs() (gas: 30193) +LibOpLog2Test:testOpLog2ZeroOutputs() (gas: 35091) +LibOpMaxTest:testOpMaxEval2InputsHappy() (gas: 551020) +LibOpMaxTest:testOpMaxEval3InputsHappy() (gas: 1864517) +LibOpMaxTest:testOpMaxEvalOneInput() (gas: 127927) +LibOpMaxTest:testOpMaxEvalOperandDisallowed() (gas: 59987) +LibOpMaxTest:testOpMaxEvalTwoOutputs() (gas: 41170) +LibOpMaxTest:testOpMaxEvalZeroInputs() (gas: 30158) +LibOpMaxTest:testOpMaxIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17971, ~: 17970) +LibOpMaxTest:testOpMaxIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13778, ~: 13625) +LibOpMaxTest:testOpMaxIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13776, ~: 13623) +LibOpMaxTest:testOpMaxRun(uint256[]) (runs: 2048, μ: 20921, ~: 21069) +LibOpMaxUint256NPTest:testOpMaxUint256NPEval(uint256) (runs: 2048, μ: 44613, ~: 44613) +LibOpMaxUint256NPTest:testOpMaxUint256NPEvalFail() (gas: 34445) +LibOpMaxUint256NPTest:testOpMaxUint256NPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19442, ~: 19477) +LibOpMaxUint256NPTest:testOpMaxUint256NPRun() (gas: 15866) +LibOpMaxUint256NPTest:testOpMaxUint256NPTwoOutputs() (gas: 31254) +LibOpMaxUint256NPTest:testOpMaxUint256NPZeroOutputs() (gas: 30140) +LibOpMinTest:testOpMinEval2InputsHappy() (gas: 551025) +LibOpMinTest:testOpMinEval3InputsHappy() (gas: 3279221) +LibOpMinTest:testOpMinEvalOneInput() (gas: 127863) +LibOpMinTest:testOpMinEvalOperandDisallowed() (gas: 59966) +LibOpMinTest:testOpMinEvalZeroInputs() (gas: 30163) +LibOpMinTest:testOpMinIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17979, ~: 17976) +LibOpMinTest:testOpMinIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13775, ~: 13622) +LibOpMinTest:testOpMinIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13798, ~: 13645) +LibOpMinTest:testOpMinRun(uint256[],uint16) (runs: 2048, μ: 20910, ~: 20764) +LibOpModTest:testOpModEval2InputsHappy() (gas: 785908) +LibOpModTest:testOpModEval2InputsUnhappy() (gas: 140823) +LibOpModTest:testOpModEval3InputsHappy() (gas: 1524493) +LibOpModTest:testOpModEval3InputsUnhappy() (gas: 464466) +LibOpModTest:testOpModEvalOneInput() (gas: 127927) +LibOpModTest:testOpModEvalOperandDisallowed() (gas: 60011) +LibOpModTest:testOpModEvalTwoOutputs() (gas: 41168) +LibOpModTest:testOpModEvalZeroInputs() (gas: 30156) +LibOpModTest:testOpModEvalZeroOutputs() (gas: 40125) +LibOpModTest:testOpModIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17940, ~: 17947) +LibOpModTest:testOpModIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13777, ~: 13624) +LibOpModTest:testOpModIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13755, ~: 13602) +LibOpModTest:testOpModRun(uint256[]) (runs: 2048, μ: 21251, ~: 21667) +LibOpMulTest:testOpDecimal18MulNPIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13799, ~: 13646) +LibOpMulTest:testOpMulEvalOneInput() (gas: 126835) +LibOpMulTest:testOpMulEvalOperandsDisallowed() (gas: 93473) +LibOpMulTest:testOpMulEvalThreeInputsHappy() (gas: 729920) +LibOpMulTest:testOpMulEvalThreeInputsUnhappyOverflow() (gas: 165387) +LibOpMulTest:testOpMulEvalTwoInputsHappy() (gas: 512115) +LibOpMulTest:testOpMulEvalTwoInputsUnhappyOverflow() (gas: 99621) +LibOpMulTest:testOpMulEvalZeroInputs() (gas: 30179) +LibOpMulTest:testOpMulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17925, ~: 17926) +LibOpMulTest:testOpMulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13798, ~: 13645) +LibOpMulTest:testOpMulRun(uint256[]) (runs: 2048, μ: 20737, ~: 18603) +LibOpMulTest:testOpMulTwoOutputs() (gas: 41169) +LibOpMulTest:testOpMulZeroOutputs() (gas: 40126) +LibOpPowTest:testOpPowEval() (gas: 422565) +LibOpPowTest:testOpPowEvalOneInput() (gas: 35500) +LibOpPowTest:testOpPowEvalOperandDisallowed() (gas: 17915) +LibOpPowTest:testOpPowIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13856, ~: 13826) +LibOpPowTest:testOpPowRun(uint256,uint256) (runs: 2048, μ: 35357, ~: 37120) +LibOpPowTest:testOpPowThreeInputs() (gas: 45635) +LibOpPowTest:testOpPowTwoOutputs() (gas: 41243) +LibOpPowTest:testOpPowZeroOutputs() (gas: 40196) +LibOpScale18DynamicTest:testOpScale18DynamicEval() (gas: 1655856) +LibOpScale18DynamicTest:testOpScale18DynamicEvalOneInput() (gas: 132030) +LibOpScale18DynamicTest:testOpScale18DynamicEvalThreeInputs() (gas: 349735) +LibOpScale18DynamicTest:testOpScale18DynamicEvalZeroInputs() (gas: 31415) +LibOpScale18DynamicTest:testOpScale18DynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17899, ~: 17902) +LibOpScale18DynamicTest:testOpScale18DynamicRun(uint256,uint256,uint256,uint256) (runs: 2048, μ: 24552, ~: 24439) +LibOpScale18DynamicTest:testOpScale18DynamicTwoOutputs() (gas: 42396) +LibOpScale18DynamicTest:testOpScale18DynamicZeroOutputs() (gas: 41371) +LibOpScale18Test:testOpScale18Eval() (gas: 1556824) +LibOpScale18Test:testOpScale18EvalOneInput() (gas: 166647) +LibOpScale18Test:testOpScale18EvalZeroInputs() (gas: 34595) +LibOpScale18Test:testOpScale18Integrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17846, ~: 17825) +LibOpScale18Test:testOpScale18Run(uint256,uint256,uint256,uint256) (runs: 2048, μ: 24117, ~: 24241) +LibOpScale18Test:testOpScale18TwoOutputs() (gas: 40481) +LibOpScale18Test:testOpScale18ZeroOutputs() (gas: 39452) +LibOpScale18Test:testOpUint256ToDecimal18Eval() (gas: 177947) +LibOpScaleNDynamicTest:testOpScaleNDynamicEval() (gas: 1653526) +LibOpScaleNDynamicTest:testOpScaleNDynamicEvalOneInput() (gas: 131523) +LibOpScaleNDynamicTest:testOpScaleNDynamicEvalThreeInputs() (gas: 349000) +LibOpScaleNDynamicTest:testOpScaleNDynamicEvalZeroInputs() (gas: 31323) +LibOpScaleNDynamicTest:testOpScaleNDynamicIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17918, ~: 17925) +LibOpScaleNDynamicTest:testOpScaleNDynamicRun(uint256,uint256,uint256,uint256) (runs: 2048, μ: 22379, ~: 24087) +LibOpScaleNDynamicTest:testOpScaleNDynamicTwoOutputs() (gas: 42346) +LibOpScaleNDynamicTest:testOpScaleNDynamicZeroOutputs() (gas: 41280) +LibOpScaleNTest:testOpDecimal18ToIntNPEval() (gas: 297412) +LibOpScaleNTest:testOpScaleNEval() (gas: 1533292) +LibOpScaleNTest:testOpScaleNEvalOneInput() (gas: 163585) +LibOpScaleNTest:testOpScaleNEvalZeroInputs() (gas: 33816) +LibOpScaleNTest:testOpScaleNEvalZeroOutputs() (gas: 38715) +LibOpScaleNTest:testOpScaleNIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17864, ~: 17846) +LibOpScaleNTest:testOpScaleNRun(uint256,uint256,uint256,uint256) (runs: 2048, μ: 22153, ~: 24136) +LibOpScaleNTest:testOpScaleNTwoOutputs() (gas: 39741) +LibOpSetNPTest:testLibOpSetNP(uint256,uint256) (runs: 2048, μ: 17584, ~: 17589) +LibOpSetNPTest:testLibOpSetNPEvalOneInput() (gas: 34177) +LibOpSetNPTest:testLibOpSetNPEvalOneOutput() (gas: 39732) +LibOpSetNPTest:testLibOpSetNPEvalOperandsDisallowed() (gas: 57116) +LibOpSetNPTest:testLibOpSetNPEvalSetTwice() (gas: 77419) +LibOpSetNPTest:testLibOpSetNPEvalThreeInputs() (gas: 44594) +LibOpSetNPTest:testLibOpSetNPEvalTwoInputs() (gas: 255478) +LibOpSetNPTest:testLibOpSetNPEvalTwoOutputs() (gas: 40392) +LibOpSetNPTest:testLibOpSetNPEvalZeroInputs() (gas: 29394) +LibOpSetNPTest:testLibOpSetNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 20206, ~: 20257) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPEval() (gas: 882117) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailBadShiftAmount() (gas: 128896) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoInputs() (gas: 44838) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailTwoOutputs() (gas: 40460) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroInputs() (gas: 34587) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityFailZeroOutputs() (gas: 39431) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2048, μ: 19963, ~: 20043) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 14033, ~: 14009) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 19172, ~: 19136) +LibOpShiftBitsLeftNPTest:testOpShiftBitsLeftNPRun(uint256,uint8) (runs: 2048, μ: 16675, ~: 16675) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPEval() (gas: 1061600) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityFailBadShiftAmount() (gas: 129440) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint8) (runs: 2048, μ: 19924, ~: 19926) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityNoop((uint256,uint256,uint256,uint256[],uint256,bytes),uint8) (runs: 2048, μ: 14001, ~: 13977) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPIntegrityZero((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17740, ~: 17725) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPRun(uint256,uint8) (runs: 2048, μ: 16722, ~: 16722) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoInputs() (gas: 44917) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPTwoOutputs() (gas: 40563) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroInputs() (gas: 34624) +LibOpShiftBitsRightNPTest:testOpShiftBitsRightNPZeroOutputs() (gas: 39515) +LibOpSnapToUnitTest:testOpSnapToUnitEval() (gas: 617598) +LibOpSnapToUnitTest:testOpSnapToUnitEvalBad() (gas: 103480) +LibOpSnapToUnitTest:testOpSnapToUnitEvalOperandDisallowed() (gas: 18483) +LibOpSnapToUnitTest:testOpSnapToUnitEvalTwoOutputs() (gas: 41819) +LibOpSnapToUnitTest:testOpSnapToUnitEvalZeroOutputs() (gas: 40797) +LibOpSnapToUnitTest:testOpSnapToUnitIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13855, ~: 13825) +LibOpSnapToUnitTest:testOpSnapToUnitRun(uint256,uint256) (runs: 2048, μ: 20648, ~: 20331) +LibOpSqrtTest:testOpSqrtEval() (gas: 211285) +LibOpSqrtTest:testOpSqrtEvalBad() (gas: 65750) +LibOpSqrtTest:testOpSqrtEvalOperandDisallowed() (gas: 17834) +LibOpSqrtTest:testOpSqrtEvalTwoOutputs() (gas: 36086) +LibOpSqrtTest:testOpSqrtEvalZeroOutputs() (gas: 35058) +LibOpSqrtTest:testOpSqrtIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13857, ~: 13827) +LibOpSqrtTest:testOpSqrtRun(uint256) (runs: 2048, μ: 21681, ~: 21976) +LibOpStackNPTest:testOpStackEval() (gas: 55644) +LibOpStackNPTest:testOpStackEvalSeveral() (gas: 88525) +LibOpStackNPTest:testOpStackNPIntegrity(bytes,uint256,uint256[],uint256) (runs: 2048, μ: 18685, ~: 18489) +LibOpStackNPTest:testOpStackNPIntegrityOOBStack(bytes,uint16,uint256[],uint16,uint256) (runs: 2048, μ: 19232, ~: 19194) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorSugared() (gas: 40192) +LibOpStackNPTest:testOpStackNPMultipleOutputErrorUnsugared() (gas: 43149) +LibOpStackNPTest:testOpStackNPRun(uint256[][],uint256) (runs: 2048, μ: 2041044, ~: 1872279) +LibOpStackNPTest:testOpStackNPZeroOutputErrorSugared() (gas: 38786) +LibOpStackNPTest:testOpStackNPZeroOutputErrorUnsugared() (gas: 41709) +LibOpSubTest:testOpSubEval2InputsSaturatingUnderflow() (gas: 300204) +LibOpSubTest:testOpSubEval2InputsUnhappyUnderflow() (gas: 144893) +LibOpSubTest:testOpSubEval3InputsSaturatingUnderflow() (gas: 773283) +LibOpSubTest:testOpSubEval3InputsUnhappyUnderflow() (gas: 372713) +LibOpSubTest:testOpSubEvalOneInput() (gas: 127814) +LibOpSubTest:testOpSubEvalOneInputSaturating() (gas: 270666) +LibOpSubTest:testOpSubEvalThreeInputs() (gas: 219696) +LibOpSubTest:testOpSubEvalThreeInputsSaturating() (gas: 442319) +LibOpSubTest:testOpSubEvalTwoInputs() (gas: 327479) +LibOpSubTest:testOpSubEvalTwoInputsSaturating() (gas: 670104) +LibOpSubTest:testOpSubEvalZeroInputs() (gas: 30130) +LibOpSubTest:testOpSubEvalZeroInputsSaturating() (gas: 59323) +LibOpSubTest:testOpSubIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17988, ~: 17991) +LibOpSubTest:testOpSubIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13799, ~: 13646) +LibOpSubTest:testOpSubIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13799, ~: 13646) +LibOpSubTest:testOpSubRun(uint256[]) (runs: 2048, μ: 15641, ~: 15258) +LibOpTimestampNPTest:testOpBlockTimestampNPEvalFail() (gas: 65754) +LibOpTimestampNPTest:testOpBlockTimestampNPTwoOutputs() (gas: 58730) +LibOpTimestampNPTest:testOpBlockTimestampNPZeroOutputs() (gas: 56611) +LibOpTimestampNPTest:testOpTimestampNPEval(uint256) (runs: 2048, μ: 83699, ~: 83571) +LibOpTimestampNPTest:testOpTimestampNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19416, ~: 19470) +LibOpTimestampNPTest:testOpTimestampNPRun(uint256) (runs: 2048, μ: 20084, ~: 19956) +LibOpUint256DivTest:testOpUint256DivEval2InputsHappy() (gas: 797390) +LibOpUint256DivTest:testOpUint256DivEval2InputsUnhappy() (gas: 142766) +LibOpUint256DivTest:testOpUint256DivEval3InputsHappy() (gas: 1493157) +LibOpUint256DivTest:testOpUint256DivEval3InputsUnhappy() (gas: 470381) +LibOpUint256DivTest:testOpUint256DivEvalOneInput() (gas: 131022) +LibOpUint256DivTest:testOpUint256DivEvalOperandDisallowed() (gas: 62603) +LibOpUint256DivTest:testOpUint256DivEvalTwoOutputs() (gas: 41796) +LibOpUint256DivTest:testOpUint256DivEvalZeroInputs() (gas: 30806) +LibOpUint256DivTest:testOpUint256DivEvalZeroOutputs() (gas: 40774) +LibOpUint256DivTest:testOpUint256DivIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17946, ~: 17938) +LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13819, ~: 13666) +LibOpUint256DivTest:testOpUint256DivIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13775, ~: 13622) +LibOpUint256DivTest:testOpUint256DivRun(uint256[]) (runs: 2048, μ: 21211, ~: 21625) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalFourInputs() (gas: 56516) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalHappy(uint256) (runs: 2048, μ: 69475, ~: 69475) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOneInput() (gas: 37900) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalOperandDisallowed() (gas: 19439) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoInputs() (gas: 44165) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalTwoOutputs() (gas: 51209) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroInputs() (gas: 31765) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPEvalZeroOutputs() (gas: 50142) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13837, ~: 13807) +LibOpUint256ERC20AllowanceTest:testOpERC20AllowanceNPRun(address,address,address,uint256) (runs: 2048, μ: 24285, ~: 24285) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalHappy(uint256) (runs: 2048, μ: 62524, ~: 62524) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOneInput() (gas: 37960) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalOperandDisallowed() (gas: 19520) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalThreeInputs() (gas: 50082) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalTwoOutputs() (gas: 44933) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroInputs() (gas: 31823) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPEvalZeroOutputs() (gas: 43909) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13879, ~: 13849) +LibOpUint256ERC20BalanceOfTest:testOpERC20BalanceOfNPRun(address,address,uint256,uint16) (runs: 2048, μ: 23683, ~: 23683) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalHappy(uint256) (runs: 2048, μ: 55681, ~: 55681) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalOperandDisallowed() (gas: 19726) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoInputs() (gas: 44430) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalTwoOutputs() (gas: 38811) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroInputs() (gas: 31986) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPEvalZeroOutputs() (gas: 37742) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint256) (runs: 2048, μ: 13859, ~: 13829) +LibOpUint256ERC20TotalSupplyTest:testOpERC20TotalSupplyNPRun(address,uint256,uint16) (runs: 2048, μ: 22945, ~: 22945) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfEvalHappy(address,address,uint256) (runs: 2048, μ: 611442, ~: 103631) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrity((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint8,uint16) (runs: 2048, μ: 19431, ~: 19469) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail0() (gas: 31441) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail1() (gas: 35815) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFail3() (gas: 45130) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfIntegrityFailOperand() (gas: 22392) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfOneInput() (gas: 36339) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfRun(address,address,uint256,uint16) (runs: 2048, μ: 23770, ~: 23770) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfThreeInputs() (gas: 45644) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfTwoOutputs() (gas: 41649) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroInputs() (gas: 31869) +LibOpUint256ERC721BalanceOfTest:testOpERC721BalanceOfZeroOutputs() (gas: 40627) +LibOpUint256MulTest:testOpUint256MulEvalOneInput() (gas: 130563) +LibOpUint256MulTest:testOpUint256MulEvalOperandsDisallowed() (gas: 97362) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsHappy() (gas: 1055506) +LibOpUint256MulTest:testOpUint256MulEvalThreeInputsUnhappy() (gas: 650225) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsHappy() (gas: 425754) +LibOpUint256MulTest:testOpUint256MulEvalTwoInputsUnhappy() (gas: 141809) +LibOpUint256MulTest:testOpUint256MulEvalTwoOutputs() (gas: 41784) +LibOpUint256MulTest:testOpUint256MulEvalZeroInputs() (gas: 30815) +LibOpUint256MulTest:testOpUint256MulEvalZeroOutputs() (gas: 40786) +LibOpUint256MulTest:testOpUint256MulIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17993, ~: 17995) +LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13775, ~: 13622) +LibOpUint256MulTest:testOpUint256MulIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13799, ~: 13646) +LibOpUint256MulTest:testOpUint256MulRun(uint256[]) (runs: 2048, μ: 16312, ~: 15956) +LibOpUint256PowTest:testOpUint256ExpIntegrityHappy((uint256,uint256,uint256,uint256[],uint256,bytes),uint8,uint16) (runs: 2048, μ: 17932, ~: 17931) +LibOpUint256PowTest:testOpUint256PowEval2InputsHappy() (gas: 893983) +LibOpUint256PowTest:testOpUint256PowEval2InputsUnhappy() (gas: 143765) +LibOpUint256PowTest:testOpUint256PowEval3InputsHappy() (gas: 2078307) +LibOpUint256PowTest:testOpUint256PowEval3InputsUnhappy() (gas: 637876) +LibOpUint256PowTest:testOpUint256PowEvalOneInput() (gas: 131211) +LibOpUint256PowTest:testOpUint256PowEvalOperandDisallowed() (gas: 63205) +LibOpUint256PowTest:testOpUint256PowEvalTwoOutputs() (gas: 41991) +LibOpUint256PowTest:testOpUint256PowEvalZeroInputs() (gas: 31020) +LibOpUint256PowTest:testOpUint256PowEvalZeroOutputs() (gas: 40904) +LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyOneInput((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13777, ~: 13624) +LibOpUint256PowTest:testOpUint256PowIntegrityUnhappyZeroInputs((uint256,uint256,uint256,uint256[],uint256,bytes)) (runs: 2048, μ: 13755, ~: 13602) +LibOpUint256PowTest:testOpUint256PowRun(uint256[]) (runs: 2048, μ: 17674, ~: 17124) +LibParseCommentsTest:testParseCommentAfterSources() (gas: 69470) +LibParseCommentsTest:testParseCommentBetweenSources() (gas: 69548) +LibParseCommentsTest:testParseCommentInIgnoredLHS() (gas: 42114) +LibParseCommentsTest:testParseCommentInLHSWhitespace() (gas: 42395) +LibParseCommentsTest:testParseCommentInNamedLHS() (gas: 42264) +LibParseCommentsTest:testParseCommentInRHS() (gas: 42561) +LibParseCommentsTest:testParseCommentInRHS2() (gas: 45415) +LibParseCommentsTest:testParseCommentInRHS3() (gas: 45425) +LibParseCommentsTest:testParseCommentLong() (gas: 62861) +LibParseCommentsTest:testParseCommentManyAstericks() (gas: 55971) +LibParseCommentsTest:testParseCommentManyAstericksTrailing() (gas: 55907) +LibParseCommentsTest:testParseCommentMultiple() (gas: 74232) +LibParseCommentsTest:testParseCommentNoTrailingWhitespace() (gas: 42975) +LibParseCommentsTest:testParseCommentNoWords() (gas: 52406) +LibParseCommentsTest:testParseCommentSingleWord() (gas: 56433) +LibParseCommentsTest:testParseCommentSingleWordSameLine() (gas: 57270) +LibParseCommentsTest:testParseCommentUnclosed() (gas: 42647) +LibParseCommentsTest:testParseCommentUnclosed2() (gas: 42825) +LibParseEmptyGasTest:testParseGasEmpty00() (gas: 38090) +LibParseEmptyGasTest:testParseGasEmpty01() (gas: 42935) +LibParseEmptyGasTest:testParseGasEmpty02() (gas: 47171) +LibParseEmptyGasTest:testParseGasEmpty03() (gas: 51384) +LibParseEmptyGasTest:testParseGasEmpty04() (gas: 55597) +LibParseEmptyTest:testParseEmpty00() (gas: 42493) +LibParseEmptyTest:testParseEmpty01() (gas: 50675) +LibParseEmptyTest:testParseEmpty02() (gas: 58519) +LibParseEmptyTest:testParseEmpty03() (gas: 66163) +LibParseEmptyTest:testParseEmpty04() (gas: 73828) +LibParseEmptyTest:testParseEmpty08() (gas: 104673) +LibParseEmptyTest:testParseEmpty15() (gas: 158493) +LibParseEmptyTest:testParseEmptyError16() (gas: 86202) +LibParseIgnoredLHSTest:testParseIgnoredLHSAlphaTooLong() (gas: 52762) +LibParseIgnoredLHSTest:testParseIgnoredLHSLoneUnderscore() (gas: 51361) +LibParseIgnoredLHSTest:testParseIgnoredLHSMultipleLines() (gas: 54618) +LibParseIgnoredLHSTest:testParseIgnoredLHSTwoAlphas() (gas: 52471) +LibParseIgnoredLHSTest:testParseIgnoredLHSTwoUnderscores() (gas: 52304) +LibParseIgnoredLHSTest:testParseIgnoredLHSUnderscoreAlpha() (gas: 51437) +LibParseIgnoredLHSTest:testParseIgnoredLHSUnderscoreNotInput() (gas: 56424) +LibParseIgnoredLHSTest:testParseIgnoredWordTooLong() (gas: 54050) +LibParseInputsOnlyGasTest:testParseGasInputsOnly00() (gas: 43633) +LibParseInputsOnlyGasTest:testParseGasInputsOnly01() (gas: 44565) +LibParseInputsOnlyGasTest:testParseGasInputsOnly02() (gas: 45470) +LibParseInputsOnlyGasTest:testParseGasInputsOnly03() (gas: 46401) +LibParseInputsOnlyGasTest:testParseGasInputsOnly04() (gas: 47332) +LibParseInputsOnlyGasTest:testParseGasInputsOnly05() (gas: 48263) +LibParseInputsOnlyGasTest:testParseGasInputsOnly06() (gas: 49192) +LibParseInputsOnlyGasTest:testParseGasInputsOnly07() (gas: 50153) +LibParseInputsOnlyGasTest:testParseGasInputsOnly08() (gas: 51051) +LibParseInputsOnlyGasTest:testParseGasInputsOnly09() (gas: 51982) +LibParseInputsOnlyTest:testParseInputsOnlyMultiple() (gas: 52259) +LibParseInputsOnlyTest:testParseInputsOnlySingle() (gas: 51352) +LibParseIsMaskTest:testIsMaskPastEnd(uint256,uint256,uint256) (runs: 2048, μ: 17082, ~: 18994) +LibParseIsMaskTest:testIsMaskReference(string,uint256,uint256) (runs: 2048, μ: 8346, ~: 8396) +LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexBounds() (gas: 18768) +LibParseLiteralBoundLiteralHexTest:testParseLiteralBoundLiteralHexFuzz(string,bytes1,string) (runs: 2048, μ: 45074, ~: 43868) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDecimals() (gas: 411326) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE() (gas: 5430) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotE0() (gas: 5408) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert() (gas: 5409) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert2() (gas: 5408) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatDotRevert3() (gas: 6259) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatEDot() (gas: 5432) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatEmpty() (gas: 5397) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert() (gas: 5377) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert2() (gas: 6479) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert3() (gas: 6497) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert4() (gas: 5430) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert5() (gas: 5451) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponentRevert6() (gas: 5452) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatExponents() (gas: 448597) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatFuzz(uint256,uint8,bool) (runs: 2048, μ: 46682, ~: 38192) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatLeadingZeros() (gas: 65265) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeE() (gas: 7499) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNegativeFrac() (gas: 6230) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatNonDecimal() (gas: 5408) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert0() (gas: 28706) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatPrecisionRevert1() (gas: 28584) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatSpecific() (gas: 27606) +LibParseLiteralDecimalParseDecimalFloatTest:testParseLiteralDecimalFloatUnrelated() (gas: 36849) +LibParseLiteralDecimalTest:testParseLiteralDecimalDecimals() (gas: 171897) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError() (gas: 5341) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError2() (gas: 5341) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError3() (gas: 5976) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError4() (gas: 5321) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError5() (gas: 5298) +LibParseLiteralDecimalTest:testParseLiteralDecimalDotError6() (gas: 5299) +LibParseLiteralDecimalTest:testParseLiteralDecimalEmpty() (gas: 5250) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponents() (gas: 168036) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponents2() (gas: 237834) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponents2Capital() (gas: 171655) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponents3() (gas: 259413) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponents4() (gas: 138106) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError() (gas: 5340) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError3() (gas: 6083) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError4() (gas: 5342) +LibParseLiteralDecimalTest:testParseLiteralDecimalExponentsError5() (gas: 5342) +LibParseLiteralDecimalTest:testParseLiteralDecimalNegativeExponents() (gas: 221911) +LibParseLiteralDecimalTest:testParseLiteralDecimalNegativeExponentsError() (gas: 6710) +LibParseLiteralDecimalTest:testParseLiteralDecimalNonDecimal() (gas: 5245) +LibParseLiteralDecimalTest:testParseLiteralDecimalOverflow() (gas: 7703) +LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimal() (gas: 7558) +LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimalMax() (gas: 12063) +LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossDecimalSmall() (gas: 11721) +LibParseLiteralDecimalTest:testParseLiteralDecimalPrecisionLossInteger() (gas: 7420) +LibParseLiteralDecimalTest:testParseLiteralDecimalRoundTrip(uint256) (runs: 2048, μ: 21969, ~: 21156) +LibParseLiteralDecimalTest:testParseLiteralDecimalSpecific() (gas: 49997) +LibParseLiteralDecimalTest:testParseLiteralDecimalTrailingZeros() (gas: 201496) +LibParseLiteralDecimalTest:testParseLiteralDecimalUnrelated() (gas: 71717) +LibParseLiteralHexBoundHexTest:testParseLiteralHexRoundTrip(uint256) (runs: 2048, μ: 18385, ~: 14263) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal00() (gas: 56515) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal01() (gas: 63825) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimal02() (gas: 70353) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalENotation() (gas: 88972) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensBoth() (gas: 46319) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensLeft() (gas: 46361) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalParensRight() (gas: 46223) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256Max() (gas: 78917) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256MaxLeadingZeros() (gas: 79426) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingDigit() (gas: 65262) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingDigitLeadingZeros() (gas: 65386) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowLeadingZeros() (gas: 65549) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalUint256OverflowSimple() (gas: 65372) +LibParseLiteralIntegerDecimalTest:testParseIntegerLiteralDecimalYang() (gas: 46805) +LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex00() (gas: 55638) +LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex01() (gas: 61322) +LibParseLiteralIntegerHexTest:testParseIntegerLiteralHex02() (gas: 66361) +LibParseLiteralIntegerHexTest:testParseIntegerLiteralHexUint256Max() (gas: 72462) +LibParseLiteralStringBoundTest:testParseStringLiteralBounds(string) (runs: 2048, μ: 16695, ~: 16752) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsInvalidCharBefore(string,uint256) (runs: 2048, μ: 30342, ~: 30223) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsParserOutOfBounds(string,uint256) (runs: 2048, μ: 18751, ~: 18606) +LibParseLiteralStringBoundTest:testParseStringLiteralBoundsTooLong(string) (runs: 2048, μ: 31812, ~: 31361) +LibParseLiteralStringTest:testParseStringLiteralAny(bytes) (runs: 2048, μ: 13386, ~: 13290) +LibParseLiteralStringTest:testParseStringLiteralCorrupt(bytes,uint256) (runs: 2048, μ: 18612, ~: 18540) +LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 54332) +LibParseLiteralStringTest:testParseStringLiteralEmpty() (gas: 5585) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharAfter(string,string) (runs: 2048, μ: 69516, ~: 69114) +LibParseLiteralStringTest:testParseStringLiteralInvalidCharWithin(string,uint256) (runs: 2048, μ: 67303, ~: 67223) +LibParseLiteralStringTest:testParseStringLiteralLongASCII(string) (runs: 2048, μ: 68846, ~: 68385) +LibParseLiteralStringTest:testParseStringLiteralShortASCII(string) (runs: 2048, μ: 62233, ~: 62294) +LibParseLiteralStringTest:testParseStringLiteralSimple() (gas: 54434) +LibParseLiteralStringTest:testParseStringLiteralTwo(string,string) (runs: 2048, μ: 75501, ~: 75448) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableBody() (gas: 64781) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableEmptyBody() (gas: 19685) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableHappyFuzz(string,string,string) (runs: 2048, μ: 89730, ~: 89233) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchEmpty() (gas: 9223) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosed() (gas: 9228) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace0() (gas: 9221) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableMissingDispatchUnclosedWhitespace1() (gas: 9178) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatch0() (gas: 9646) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchBody() (gas: 9812) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchWhitespace0() (gas: 9742) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDispatchWhitespace1() (gas: 9201) +LibParseLiteralSubParseableTest:testParseLiteralSubParseableUnclosedDoubleOpen() (gas: 9668) +LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsEmptySource() (gas: 44895) +LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsLHSItems() (gas: 42838) +LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsLoneColon() (gas: 41943) +LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsSingleWord() (gas: 44890) +LibParseMissingFinalSemiTest:testParseMissingFinalSemiRevertsTrailingComma() (gas: 43111) +LibParseNOutputTest:testParseBalanceStackOffsetsInputs() (gas: 61554) +LibParseNOutputTest:testParseNOutputExcessRHS0() (gas: 50564) +LibParseNOutputTest:testParseNOutputExcessRHS1() (gas: 48694) +LibParseNOutputTest:testParseNOutputExcessRHS2() (gas: 49097) +LibParseNOutputTest:testParseNOutputExcessRHS3() (gas: 50446) +LibParseNOutputTest:testParseNOutputNestedRHS() (gas: 56760) +LibParseNamedLHSTest:testParseNamedDuplicateDifferentSource() (gas: 55410) +LibParseNamedLHSTest:testParseNamedError32() (gas: 44980) +LibParseNamedLHSTest:testParseNamedError33() (gas: 44957) +LibParseNamedLHSTest:testParseNamedErrorDuplicateSameSource() (gas: 45201) +LibParseNamedLHSTest:testParseNamedLHSEmptySourceExamples() (gas: 153516) +LibParseNamedLHSTest:testParseNamedLHSStackIndex() (gas: 57996) +LibParseNamedLHSTest:testParseNamedLHSTwoInputs() (gas: 61112) +LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential00() (gas: 78612) +LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential01() (gas: 93835) +LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential02() (gas: 89122) +LibParseNamedRHSTest:testParseSingleLHSNestingAndSequential03() (gas: 192678) +LibParseNamedRHSTest:testParseSingleWord() (gas: 54374) +LibParseNamedRHSTest:testParseTwoFullLinesSingleRHSEach() (gas: 75133) +LibParseNamedRHSTest:testParseTwoFullSourcesSingleRHSEach() (gas: 65993) +LibParseNamedRHSTest:testParseTwoNested() (gas: 57814) +LibParseNamedRHSTest:testParseTwoNestedAsThirdInput() (gas: 67706) +LibParseNamedRHSTest:testParseTwoSequential() (gas: 59464) +LibParseNamedRHSTest:testParseTwoSequentialWithInputs() (gas: 72497) +LibParseOperand8M1M1Test:testOperand8M1M1Elided() (gas: 92668) +LibParseOperand8M1M1Test:testOperand8M1M1Single() (gas: 271311) +LibParseOperand8M1M1Test:testOperand8M1M1SingleBit() (gas: 558958) +LibParseOperand8M1M1Test:testOperand8M1M1SingleBitsPart1() (gas: 1585625) +LibParseOperand8M1M1Test:testOperand8M1M1Unclosed() (gas: 306844) +LibParseOperand8M1M1Test:testOperand8M1M1Unopened() (gas: 47361) +LibParseOperandDisallowedTest:testOperandDisallowed() (gas: 44015) +LibParseOperandDisallowedTest:testOperandDisallowed1() (gas: 44486) +LibParseOperandDisallowedTest:testOperandDisallowed3() (gas: 46350) +LibParseOperandDisallowedTest:testOperandDisallowed4() (gas: 46372) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultElided() (gas: 43433) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultEmpty() (gas: 43827) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultFirst() (gas: 46423) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultMultipleWhitespace() (gas: 58502) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultPostfixWhitespace() (gas: 57724) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultPrefixWhitespace() (gas: 57700) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecond() (gas: 57332) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondMax() (gas: 58463) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondMaxZero() (gas: 57817) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondOverflow() (gas: 50929) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondOverflowFirst() (gas: 50930) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondZero() (gas: 57195) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultSecondZeroMax() (gas: 57839) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultThird() (gas: 52402) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnclosed() (gas: 49261) +LibParseOperandDoublePerByteNoDefaultTest:testOperandDoublePerByteNoDefaultUnopened() (gas: 43434) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValues(uint256,uint256,uint256) (runs: 2048, μ: 11205, ~: 11288) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1AllValuesThirdValueTooLarge(uint256,uint256,uint256) (runs: 2048, μ: 11468, ~: 11285) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValue(uint256,uint256) (runs: 2048, μ: 9538, ~: 9532) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstAndSecondValueSecondValueTooLarge(uint256,uint256) (runs: 2048, μ: 9791, ~: 9525) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueOnly(uint256) (runs: 2048, μ: 7933, ~: 7994) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1FirstValueTooLarge(uint256) (runs: 2048, μ: 8115, ~: 8321) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1ManyValues(uint256[]) (runs: 2048, μ: 14113, ~: 14123) +LibParseOperandHandleOperand8M1M1Test:testHandleOperand8M1M1NoValues() (gas: 3601) +LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedAnyValues(uint256[]) (runs: 2048, μ: 13901, ~: 13949) +LibParseOperandHandleOperandDisallowedTest:testHandleOperandDisallowedNoValues() (gas: 3219) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultBothValuesWithinOneByte(uint256,uint256) (runs: 2048, μ: 9294, ~: 9414) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultFirstValueTooLarge(uint256,uint256) (runs: 2048, μ: 9619, ~: 9329) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultManyValues(uint256[]) (runs: 2048, μ: 14008, ~: 13984) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultNoValues() (gas: 3599) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultOneValue(uint256) (runs: 2048, μ: 7573, ~: 7848) +LibParseOperandHandleOperandDoublePerByteNoDefaultTest:testHandleOperandDoublePerByteNoDefaultSecondValueTooLarge(uint256,uint256) (runs: 2048, μ: 9739, ~: 9713) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1ManyValues(uint256[]) (runs: 2048, μ: 14010, ~: 13986) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1NoValues() (gas: 3554) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValue(uint256) (runs: 2048, μ: 7740, ~: 7704) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1OneValueTooLarge(uint256) (runs: 2048, μ: 8040, ~: 7712) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValues(uint256,uint256) (runs: 2048, μ: 9376, ~: 9402) +LibParseOperandHandleOperandM1M1Test:testHandleOperandM1M1TwoValuesSecondValueTooLarge(uint256,uint256) (runs: 2048, μ: 9712, ~: 9474) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullManyValues(uint256[]) (runs: 2048, μ: 13960, ~: 13983) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultManyValues(uint256[]) (runs: 2048, μ: 14004, ~: 14027) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultNoValues() (gas: 3595) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoDefaultSingleValue(uint256) (runs: 2048, μ: 7292, ~: 7569) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullNoValues() (gas: 3244) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValue(uint256) (runs: 2048, μ: 7506, ~: 7782) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueDisallowed(uint256) (runs: 2048, μ: 8442, ~: 8555) +LibParseOperandHandleOperandSingleFullTest:testHandleOperandSingleFullSingleValueNoDefaultDisallowed(uint256) (runs: 2048, μ: 9553, ~: 9663) +LibParseOperandM1M1Test:testOperandM1M1Both() (gas: 57445) +LibParseOperandM1M1Test:testOperandM1M1BothZero() (gas: 56265) +LibParseOperandM1M1Test:testOperandM1M1Elided() (gas: 51246) +LibParseOperandM1M1Test:testOperandM1M1Empty() (gas: 51642) +LibParseOperandM1M1Test:testOperandM1M1First() (gas: 54314) +LibParseOperandM1M1Test:testOperandM1M1FirstOverflow() (gas: 46881) +LibParseOperandM1M1Test:testOperandM1M1Second() (gas: 57365) +LibParseOperandM1M1Test:testOperandM1M1SecondOverflow() (gas: 50011) +LibParseOperandM1M1Test:testOperandM1M1SecondZero() (gas: 57243) +LibParseOperandM1M1Test:testOperandM1M1Unclosed() (gas: 252075) +LibParseOperandM1M1Test:testOperandM1M1Unopened() (gas: 48781) +LibParseOperandParseOperandTest:testParseOperandEmptyOperand(string) (runs: 2048, μ: 42731, ~: 42735) +LibParseOperandParseOperandTest:testParseOperandFourDecimalLiterals(bool[4],uint256[4],string[5],string) (runs: 2048, μ: 351820, ~: 351379) +LibParseOperandParseOperandTest:testParseOperandNoOpeningCharacter(string) (runs: 2048, μ: 42679, ~: 42683) +LibParseOperandParseOperandTest:testParseOperandSingleDecimalLiteral(bool,uint256,string,string,string) (runs: 2048, μ: 153470, ~: 153712) +LibParseOperandParseOperandTest:testParseOperandThreeDecimalLiterals(bool,bool,bool,uint256,uint256,uint256,string,string,string,string,string) (runs: 2048, μ: 283326, ~: 284035) +LibParseOperandParseOperandTest:testParseOperandTooManyValues() (gas: 53781) +LibParseOperandParseOperandTest:testParseOperandTwoDecimalLiterals(bool,bool,uint256,uint256,string,string,string,string) (runs: 2048, μ: 219544, ~: 219276) +LibParseOperandParseOperandTest:testParseOperandUnclosed() (gas: 53286) +LibParseOperandParseOperandTest:testParseOperandUnexpectedChars() (gas: 50358) +LibParseOperandSingleFullTest:testOperandSingleFullElided() (gas: 50986) +LibParseOperandSingleFullTest:testOperandSingleFullEmpty() (gas: 51315) +LibParseOperandSingleFullTest:testOperandSingleFullHexOne() (gas: 53153) +LibParseOperandSingleFullTest:testOperandSingleFullHexUint16Max() (gas: 53769) +LibParseOperandSingleFullTest:testOperandSingleFullHexUint16MaxOverflow() (gas: 46827) +LibParseOperandSingleFullTest:testOperandSingleFullHexZero() (gas: 53154) +LibParseOperandSingleFullTest:testOperandSingleFullLeadingAndTrailingWhitespace() (gas: 53852) +LibParseOperandSingleFullTest:testOperandSingleFullLeadingWhitespace() (gas: 54464) +LibParseOperandSingleFullTest:testOperandSingleFullMultiple() (gas: 47603) +LibParseOperandSingleFullTest:testOperandSingleFullOne() (gas: 54115) +LibParseOperandSingleFullTest:testOperandSingleFullTrailingWhitespace() (gas: 54508) +LibParseOperandSingleFullTest:testOperandSingleFullUint16Max() (gas: 55225) +LibParseOperandSingleFullTest:testOperandSingleFullUint16MaxOverflow() (gas: 47929) +LibParseOperandSingleFullTest:testOperandSingleFullUnclosed() (gas: 46366) +LibParseOperandSingleFullTest:testOperandSingleFullUnopened() (gas: 44533) +LibParseOperandSingleFullTest:testOperandSingleFullZero() (gas: 54059) +LibParseParseWordTest:testLibParseParseWordEnd(uint256) (runs: 2048, μ: 9471, ~: 9471) +LibParseParseWordTest:testLibParseParseWordExamples() (gas: 26926) +LibParseParseWordTest:testLibParseParseWordReferenceImplementation(bytes,uint256) (runs: 2048, μ: 6474, ~: 6254) +LibParseParseWordTest:testLibParseParseWordTooLong(bytes) (runs: 2048, μ: 9694, ~: 9627) +LibParsePragmaKeywordTest:testPragmaKeywordNoWhitespace(uint256,string) (runs: 2048, μ: 8923, ~: 8888) +LibParsePragmaKeywordTest:testPragmaKeywordNoop((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),string) (runs: 2048, μ: 16581, ~: 16456) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParser(string,address,uint256,string) (runs: 2048, μ: 186117, ~: 180938) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserCoupleOfAddresses(string,string,address,address,uint256,string) (runs: 2048, μ: 369124, ~: 367816) +LibParsePragmaKeywordTest:testPragmaKeywordParseSubParserSpecificStrings() (gas: 252034) +LibParsePragmaKeywordTest:testPragmaKeywordWhitespaceNoHex(uint256,string) (runs: 2048, μ: 20268, ~: 17493) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored00() (gas: 8317) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored01() (gas: 8379) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored02() (gas: 8465) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored03() (gas: 8548) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored04() (gas: 8653) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored05() (gas: 8694) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored06() (gas: 8822) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored07() (gas: 8863) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored08() (gas: 8944) +LibParseSingleLHSIgnoredGasTest:testParseGasSingleLHSIgnored09() (gas: 9052) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed00() (gas: 9018) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed01() (gas: 9119) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed02() (gas: 9157) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed03() (gas: 9259) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed04() (gas: 9341) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed05() (gas: 9424) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed06() (gas: 9502) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed07() (gas: 9606) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed08() (gas: 9687) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed09() (gas: 9767) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed10() (gas: 9826) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed11() (gas: 9886) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed12() (gas: 10010) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed13() (gas: 10071) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed14() (gas: 10151) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed15() (gas: 10209) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed16() (gas: 10335) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed17() (gas: 10394) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed18() (gas: 10496) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed19() (gas: 10535) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed20() (gas: 10615) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed21() (gas: 10718) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed22() (gas: 10776) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed23() (gas: 10860) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed24() (gas: 10938) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed25() (gas: 11064) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed26() (gas: 11123) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed27() (gas: 11183) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed28() (gas: 11294) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed29() (gas: 11342) +LibParseSingleLHSNamedGasTest:testParseGasSingleLHSNamed30() (gas: 11426) +LibParseSingleRHSNamedGasTest:testParseGasRHS00() (gas: 117215) +LibParseSingleRHSNamedGasTest:testParseGasRHS01() (gas: 117317) +LibParseSingleRHSNamedGasTest:testParseGasRHS02() (gas: 117376) +LibParseSingleRHSNamedGasTest:testParseGasRHS03() (gas: 117456) +LibParseSingleRHSNamedGasTest:testParseGasRHS04() (gas: 117539) +LibParseSingleRHSNamedGasTest:testParseGasRHS05() (gas: 117619) +LibParseSingleRHSNamedGasTest:testParseGasRHS06() (gas: 117679) +LibParseSingleRHSNamedGasTest:testParseGasRHS07() (gas: 117760) +LibParseSingleRHSNamedGasTest:testParseGasRHS08() (gas: 117861) +LibParseSingleRHSNamedGasTest:testParseGasRHS09() (gas: 117922) +LibParseSingleRHSNamedGasTest:testParseGasRHS10() (gas: 118045) +LibParseSingleRHSNamedGasTest:testParseGasRHS11() (gas: 118081) +LibParseSingleRHSNamedGasTest:testParseGasRHS12() (gas: 118195) +LibParseSingleRHSNamedGasTest:testParseGasRHS13() (gas: 118267) +LibParseSingleRHSNamedGasTest:testParseGasRHS14() (gas: 118325) +LibParseSingleRHSNamedGasTest:testParseGasRHS15() (gas: 118429) +LibParseSingleRHSNamedGasTest:testParseGasRHS16() (gas: 118489) +LibParseSingleRHSNamedGasTest:testParseGasRHS17() (gas: 118569) +LibParseSingleRHSNamedGasTest:testParseGasRHS18() (gas: 118694) +LibParseSingleRHSNamedGasTest:testParseGasRHS19() (gas: 118775) +LibParseSingleRHSNamedGasTest:testParseGasRHS20() (gas: 118834) +LibParseSingleRHSNamedGasTest:testParseGasRHS21() (gas: 118936) +LibParseSingleRHSNamedGasTest:testParseGasRHS22() (gas: 118974) +LibParseSingleRHSNamedGasTest:testParseGasRHS23() (gas: 119078) +LibParseSingleRHSNamedGasTest:testParseGasRHS24() (gas: 119157) +LibParseSingleRHSNamedGasTest:testParseGasRHS25() (gas: 119238) +LibParseSingleRHSNamedGasTest:testParseGasRHS26() (gas: 119300) +LibParseSingleRHSNamedGasTest:testParseGasRHS27() (gas: 119391) +LibParseSingleRHSNamedGasTest:testParseGasRHS28() (gas: 119495) +LibParseSingleRHSNamedGasTest:testParseGasRHS29() (gas: 119586) +LibParseSingleRHSNamedGasTest:testParseGasRHS30() (gas: 119648) +LibParseSourceInputsTest:testParseSourceInputsEmptyLinePrefix() (gas: 49254) +LibParseSourceInputsTest:testParseSourceInputsMultipleLines() (gas: 51991) +LibParseSourceInputsTest:testParseSourceInputsSingle() (gas: 49231) +LibParseStackNameTest:testPushAndRetrieveStackNameDouble((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32,bytes32) (runs: 2048, μ: 20724, ~: 20700) +LibParseStackNameTest:testPushAndRetrieveStackNameDoubleIdentical((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32) (runs: 2048, μ: 17960, ~: 18143) +LibParseStackNameTest:testPushAndRetrieveStackNameMany((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),uint256) (runs: 2048, μ: 318847, ~: 260840) +LibParseStackNameTest:testPushAndRetrieveStackNameSingle((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),bytes32) (runs: 2048, μ: 17838, ~: 18021) +LibParseStateConstantValueBloomTest:testConstantValueBloom(uint256) (runs: 2048, μ: 3363, ~: 3363) +LibParseStateConstantValueBloomTest:testConstantValueBloomAllBits() (gas: 45132) +LibParseStateConstantValueBloomTest:testConstantValueBloomSingleBit(uint256) (runs: 2048, μ: 3423, ~: 3423) +LibParseStateExportSubParsersTest:testExportSubParsers((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address[]) (runs: 2048, μ: 152065, ~: 152276) +LibParseStateNewActiveSourcePointerTest:testAlignedOldPointer(uint256,uint256) (runs: 2048, μ: 13310, ~: 13428) +LibParseStateNewActiveSourcePointerTest:testPostUnalignedNewPointer(uint256) (runs: 2048, μ: 7131, ~: 7131) +LibParseStateNewActiveSourcePointerTest:testPreUnalignedNewPointer() (gas: 9152) +LibParseStateNewActiveSourcePointerTest:testZeroOldPointer(bytes) (runs: 2048, μ: 4787, ~: 4784) +LibParseStatePushConstantValueTest:testPushConstantValueEmpty(bytes,bytes,bytes,bytes) (runs: 2048, μ: 6365, ~: 6362) +LibParseStatePushConstantValueTest:testPushConstantValueMany(uint256[]) (runs: 2048, μ: 227338, ~: 228479) +LibParseStatePushConstantValueTest:testPushConstantValueSingle(uint256) (runs: 2048, μ: 6968, ~: 6968) +LibParseStatePushSubParserTest:testPushSubParserList((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address[]) (runs: 2048, μ: 135665, ~: 136207) +LibParseStatePushSubParserTest:testPushSubParserMultiple((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address,address,address) (runs: 2048, μ: 16856, ~: 16855) +LibParseStatePushSubParserTest:testPushSubParserOverflow((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),uint256) (runs: 2048, μ: 19413, ~: 19203) +LibParseStatePushSubParserTest:testPushSubParserZero((uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,uint256[],uint256,bytes,bytes),address) (runs: 2048, μ: 15715, ~: 15673) +LibParseUnclosedLeftParenTest:testParseUnclosedLeftParen() (gas: 44936) +LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested() (gas: 64305) +LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested2() (gas: 65819) +LibParseUnclosedLeftParenTest:testParseUnclosedLeftParenNested3() (gas: 75373) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadIgnoredTail(uint8) (runs: 2048, μ: 42670, ~: 42671) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSBadNamedTail(uint8,bytes) (runs: 2048, μ: 48704, ~: 48743) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOF() (gas: 41739) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSEOL() (gas: 41740) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSSingleChar(uint8) (runs: 2048, μ: 42285, ~: 42285) +LibParseUnexpectedLHSTest:testParseUnexpectedLHSUnderscoreTail() (gas: 42735) +LibParseUnexpectedRHSTest:testParseUnexpectedRHS(uint8) (runs: 2048, μ: 42617, ~: 42617) +LibParseUnexpectedRHSTest:testParseUnexpectedRHSLeftParen() (gas: 42109) +LibParseUnexpectedRightParenTest:testParseUnexpectedRightParen() (gas: 41612) +LibParseUnexpectedRightParenTest:testParseUnexpectedRightParenNested() (gas: 47262) +LibSubParseSubParserExternTest:testLibSubParseSubParserExtern(address,uint8,uint8,uint8,uint16,uint8) (runs: 2048, μ: 13169, ~: 13112) +LibSubParseSubParserExternTest:testLibSubParseSubParserExternConstantsHeightOverflow(address,uint256,uint8,uint8,uint16,uint8) (runs: 2048, μ: 7949, ~: 7689) +RainterpreterExpressionDeployerNPE2DeployCheckTest:testRainterpreterExpressionDeployerDeployNoEIP1820() (gas: 9685569) +RainterpreterExpressionDeployerNPE2DescribedByMetaV1Test:testRainterpreterExpressionDeployerNPE2DescribedByMetaV1Happy() (gas: 9699668) +RainterpreterExpressionDeployerNPE2IERC165Test:testRainterpreterExpressionDeployerNPE2IERC165(bytes4) (runs: 2048, μ: 9693706, ~: 9693706) +RainterpreterExpressionDeployerNPE2MetaTest:testRainterpreterExpressionDeployerNPE2ExpectedConstructionMetaHash() (gas: 6178) +RainterpreterNPE2IERC165Test:testRainterpreterNPE2IERC165(bytes4) (runs: 2048, μ: 4164319, ~: 4164319) +RainterpreterNPE2PointersTest:testOpcodeFunctionPointers() (gas: 4172525) +RainterpreterNPE2Test:testRainterpreterNPE2OddFunctionPointersLength() (gas: 3695) +RainterpreterParserNPE2IERC165Test:testRainterpreterParserNPE2IERC165(bytes4) (runs: 2048, μ: 3793588, ~: 3793588) +RainterpreterParserNPE2ParserPragma:testParsePragmaNoPragma() (gas: 18941509) +RainterpreterParserNPE2ParserPragma:testParsePragmaSinglePragma() (gas: 11416232) +RainterpreterParserNPE2ParserPragma:testParsePragmaWithInterstitial() (gas: 11419509) +RainterpreterParserNPE2PointersTest:testLiteralParserFunctionPointers() (gas: 3791002) +RainterpreterParserNPE2PointersTest:testOperandHandlerFunctionPointers() (gas: 3800200) +RainterpreterParserNPE2PointersTest:testParserParseMeta() (gas: 5488449) +RainterpreterReferenceExternNPE2ContextRainlenTest:testRainterpreterReferenceExterNPE2ContextRainlenHappy() (gas: 1740911) +RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextContractHappy() (gas: 1740518) +RainterpreterReferenceExternNPE2ContextSenderTest:testRainterpreterReferenceExterNPE2ContextSenderHappy() (gas: 1739214) +RainterpreterReferenceExternNPE2DescribedByMetaV1:testRainterpreterReferenceExternNPE2DescribedByMetaV1Happy() (gas: 1662715) +RainterpreterReferenceExternNPE2IERC165Test:testRainterpreterReferenceExternNPE2IERC165(bytes4) (runs: 2048, μ: 1667797, ~: 1667797) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappySugared() (gas: 1762131) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncHappyUnsugared() (gas: 1755423) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncIntegrity(uint256,uint256,uint256) (runs: 2048, μ: 3618, ~: 3618) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncRun(uint256,uint256[]) (runs: 2048, μ: 167201, ~: 153965) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseKnownWord(uint16,bytes1) (runs: 2048, μ: 1676560, ~: 1676836) +RainterpreterReferenceExternNPE2IntIncTest:testRainterpreterReferenceExternNPE2IntIncSubParseUnknownWord(uint16,bytes1,bytes) (runs: 2048, μ: 1672960, ~: 1672739) +RainterpreterReferenceExternNPE2PointersTest:testIntegrityFunctionPointers() (gas: 1662748) +RainterpreterReferenceExternNPE2PointersTest:testOpcodeFunctionPointers() (gas: 1662813) +RainterpreterReferenceExternNPE2PointersTest:testSubParserFunctionPointers() (gas: 1663258) +RainterpreterReferenceExternNPE2PointersTest:testSubParserLiteralParsers() (gas: 1662790) +RainterpreterReferenceExternNPE2PointersTest:testSubParserOperandParsers() (gas: 1663263) +RainterpreterReferenceExternNPE2PointersTest:testSubParserParseMeta() (gas: 21933) +RainterpreterReferenceExternNPE2RepeatTest:testRainterpreterReferenceExternNPE2RepeatHappy() (gas: 1791925) +RainterpreterReferenceExternNPE2StackOperandTest:testRainterpreterReferenceExternNPE2StackOperandSingle(uint256) (runs: 2048, μ: 1748189, ~: 1748586) +RainterpreterReferenceExternNPE2UnknownWordTest:testRainterpreterReferenceExternNPE2UnknownWord() (gas: 1710356) +RainterpreterStoreNPE2IERC165Test:testRainterpreterStoreNPE2IERC165(bytes4) (runs: 2048, μ: 229944, ~: 229944) +RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2IERC165(uint32) (runs: 2048, μ: 229961, ~: 229961) +RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetDupes((uint256,uint256[11])[]) (runs: 2048, μ: 1509710, ~: 1466264) +RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetNoDupesMany((uint256,uint256[])[]) (runs: 2048, μ: 3518035, ~: 3349331) +RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetGetNoDupesSingle(uint256,uint256[]) (runs: 2048, μ: 1936429, ~: 1943575) +RainterpreterStoreNPE2Test:testRainterpreterStoreNPE2SetOddLength(uint256,uint256[]) (runs: 2048, μ: 248679, ~: 248662) +TestLibParseLiteralDecimalUnsafeStrToInt:testUnsafeStrToIntOverflowVeryLarge(uint256,uint256,uint8) (runs: 2048, μ: 43057, ~: 37832) +TestLibParseLiteralDecimalUnsafeStrToInt:testUnsafeStrToIntRoundTrip(uint256,uint8) (runs: 2048, μ: 28863, ~: 23189) +TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntOverflowNegative(uint256,uint8) (runs: 2048, μ: 46330, ~: 37118) +TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntOverflowPositive(uint256,uint8) (runs: 2048, μ: 46357, ~: 37147) +TestLibParseLiteralDecimalUnsafeStrToSignedInt:testUnsafeStrToSignedIntRoundTrip(uint256,uint8,bool) (runs: 2048, μ: 36005, ~: 29676) \ No newline at end of file diff --git a/.github/workflows/git-clean.yaml b/.github/workflows/git-clean.yaml index bb78bd710..c38d32289 100644 --- a/.github/workflows/git-clean.yaml +++ b/.github/workflows/git-clean.yaml @@ -10,8 +10,23 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/magic-nix-cache-action@main + - uses: nixbuild/nix-quick-install-action@v30 + with: + nix_conf: | + keep-env-derivations = true + keep-outputs = true + + - name: Restore and save Nix store + uses: nix-community/cache-nix-action@v6 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until the Nix store size (in bytes) is at most this number + # before trying to save a new cache + # 1G = 1073741824 + gc-max-store-size-linux: 1G # Build metas etc. required to do a correct pointer build. - run: nix develop -c i9r-prelude diff --git a/.github/workflows/manual-sol-artifacts.yaml b/.github/workflows/manual-sol-artifacts.yaml index f1833e4b1..aad279abf 100644 --- a/.github/workflows/manual-sol-artifacts.yaml +++ b/.github/workflows/manual-sol-artifacts.yaml @@ -3,7 +3,7 @@ on: workflow_dispatch: inputs: network: - description: 'Network to deploy to' + description: "Network to deploy to" required: true type: choice options: @@ -19,6 +19,7 @@ on: - polygon - sepolia - songbird + - linea jobs: deploy: @@ -38,8 +39,23 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/magic-nix-cache-action@main + - uses: nixbuild/nix-quick-install-action@v30 + with: + nix_conf: | + keep-env-derivations = true + keep-outputs = true + + - name: Restore and save Nix store + uses: nix-community/cache-nix-action@v6 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until the Nix store size (in bytes) is at most this number + # before trying to save a new cache + # 1G = 1073741824 + gc-max-store-size-linux: 1G - run: nix develop --command rainix-sol-prelude - run: nix develop --command rainix-rs-prelude @@ -47,11 +63,11 @@ jobs: - name: deploy to ${{ inputs.network }} run: nix develop --command rainix-sol-artifacts env: - DEPLOY_BROADCAST: '1' - DEPLOYMENT_KEY: ${{ github.ref == 'refs/heads/main' && secrets.PRIVATE_KEY || secrets.PRIVATE_KEY_DEV }} + DEPLOY_BROADCAST: "1" + DEPLOYMENT_KEY: ${{ (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/3.x') && secrets.PRIVATE_KEY || secrets.PRIVATE_KEY_DEV }} ETH_RPC_URL: ${{ secrets[env.rpc_secret_name] || vars[env.rpc_secret_name] || '' }} ETHERSCAN_API_KEY: ${{ secrets[env.etherscan_api_key_secret_name] || vars[env.etherscan_api_key_secret_name] || ''}} DEPLOY_VERIFY: ${{ secrets[env.verify_secret_name] || vars[env.verify_secret_name] || '' }} DEPLOY_VERIFIER: ${{ secrets[env.verifier_secret_name] || vars[env.verifier_secret_name] || '' }} DEPLOY_VERIFIER_URL: ${{ secrets[env.verifier_url_secret_name] || vars[env.verifier_url_secret_name] || '' }} - DEPLOY_METABOARD_ADDRESS: ${{ secrets[env.metaboard_address_secret_name] || vars[env.metaboard_address_secret_name] || '' }} \ No newline at end of file + DEPLOY_METABOARD_ADDRESS: ${{ secrets[env.metaboard_address_secret_name] || vars[env.metaboard_address_secret_name] || '' }} diff --git a/.github/workflows/rainix.yaml b/.github/workflows/rainix.yaml index 9124547c2..90b05430c 100644 --- a/.github/workflows/rainix.yaml +++ b/.github/workflows/rainix.yaml @@ -6,7 +6,7 @@ jobs: strategy: matrix: os: [ubuntu-latest, macos-latest] - task: [rainix-rs-test, rainix-rs-artifacts] + task: [rainix-rs-test, rainix-rs-artifacts, rainix-sol-legal] include: # Solidity doesn't need to be tested on multiple platforms - os: ubuntu-latest @@ -31,8 +31,23 @@ jobs: submodules: recursive fetch-depth: 0 - - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/magic-nix-cache-action@main + - uses: nixbuild/nix-quick-install-action@v30 + with: + nix_conf: | + keep-env-derivations = true + keep-outputs = true + + - name: Restore and save Nix store + uses: nix-community/cache-nix-action@v6 + with: + # restore and save a cache using this key + primary-key: nix-${{ runner.os }}-${{ hashFiles('**/*.nix', '**/flake.lock') }} + # if there's no cache hit, restore a cache by this prefix + restore-prefixes-first-match: nix-${{ runner.os }}- + # collect garbage until the Nix store size (in bytes) is at most this number + # before trying to save a new cache + # 1G = 1073741824 + gc-max-store-size-linux: 1G - run: nix develop --command rainix-sol-prelude - run: nix develop --command rainix-rs-prelude diff --git a/.gitmodules b/.gitmodules index 009d12055..621c38ac4 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,30 +1,27 @@ -[submodule "lib/rain.metadata"] - path = lib/rain.metadata - url = https://github.com/rainprotocol/rain.metadata -[submodule "lib/rain.lib.memkv"] - path = lib/rain.lib.memkv - url = https://github.com/rainprotocol/rain.lib.memkv [submodule "lib/prb-math"] path = lib/prb-math url = https://github.com/PaulRBerg/prb-math -[submodule "lib/sol.lib.binmaskflag"] - path = lib/sol.lib.binmaskflag - url = https://github.com/rainprotocol/sol.lib.binmaskflag -[submodule "lib/rain.math.fixedpoint"] - path = lib/rain.math.fixedpoint - url = https://github.com/rainprotocol/rain.math.fixedpoint -[submodule "lib/rain.chainlink"] - path = lib/rain.chainlink - url = https://github.com/rainprotocol/rain.chainlink [submodule "lib/rain.intorastring"] path = lib/rain.intorastring url = https://github.com/rainlanguage/rain.intorastring -[submodule "lib/rain.interpreter.interface"] - path = lib/rain.interpreter.interface - url = https://github.com/rainlanguage/rain.interpreter.interface +[submodule "lib/rain.datacontract"] + path = lib/rain.datacontract + url = https://github.com/rainlanguage/rain.datacontract +[submodule "lib/rain.lib.memkv"] + path = lib/rain.lib.memkv + url = https://github.com/rainlanguage/rain.lib.memkv +[submodule "lib/rain.math.fixedpoint"] + path = lib/rain.math.fixedpoint + url = https://github.com/rainlanguage/rain.math.fixedpoint +[submodule "lib/rain.metadata"] + path = lib/rain.metadata + url = https://github.com/rainlanguage/rain.metadata [submodule "lib/rain.sol.codegen"] path = lib/rain.sol.codegen url = https://github.com/rainlanguage/rain.sol.codegen -[submodule "lib/rain.math.float"] - path = lib/rain.math.float - url = https://github.com/rainlanguage/rain.math.float +[submodule "lib/rain.sol.binmaskflag"] + path = lib/rain.sol.binmaskflag + url = https://github.com/rainlanguage/rain.sol.binmaskflag +[submodule "lib/rain.interpreter.interface"] + path = lib/rain.interpreter.interface + url = https://github.com/rainlanguage/rain.interpreter.interface diff --git a/Cargo.lock b/Cargo.lock index 1abb99423..622b3a4e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -73,12 +73,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ba1c79677c9ce51c8d45e20845b05e6fb070ea2c863fba03ad6af2c778474bd" dependencies = [ "alloy-consensus", + "alloy-contract", "alloy-core", "alloy-eips", "alloy-genesis", + "alloy-network", + "alloy-node-bindings", "alloy-provider", "alloy-rpc-client", + "alloy-rpc-types", "alloy-serde", + "alloy-signer", + "alloy-signer-local", + "alloy-transport", "alloy-transport-http", ] @@ -100,7 +107,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da374e868f54c7f4ad2ad56829827badca388efd645f8cf5fccc61c2b5343504" dependencies = [ "alloy-eips", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rlp", "alloy-serde", "c-kzg", @@ -113,13 +120,13 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dc6957ff706f9e5f6fd42f52a93e4bce476b726c92d077b348de28c4a76730c" dependencies = [ - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", + "alloy-dyn-abi", + "alloy-json-abi", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-provider", "alloy-rpc-types-eth", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "alloy-transport", "futures", "futures-util", @@ -132,27 +139,10 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "529fc6310dc1126c8de51c376cbc59c79c7f662bd742be7dc67055d5421a81b4" dependencies = [ - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-types 0.7.7", -] - -[[package]] -name = "alloy-dyn-abi" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2919acdad13336bc5dc26b636cdd6892c2f27fb0d4a58320a00c2713cf6a4e9a" -dependencies = [ - "alloy-json-abi 0.6.4", - "alloy-primitives 0.6.4", - "alloy-sol-type-parser 0.6.4", - "alloy-sol-types 0.6.4", - "const-hex", - "itoa", - "serde", - "serde_json", - "winnow 0.6.18", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", ] [[package]] @@ -161,10 +151,10 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "413902aa18a97569e60f679c23f46a18db1656d87ab4d4e49d0e1e52042f66df" dependencies = [ - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-type-parser 0.7.7", - "alloy-sol-types 0.7.7", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-type-parser", + "alloy-sol-types", "arbitrary", "const-hex", "derive_arbitrary", @@ -182,7 +172,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f76ecab54890cdea1e4808fc0891c7e6cfcf71fe1a9fe26810c7280ef768f4ed" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rlp", "alloy-serde", "c-kzg", @@ -194,7 +184,7 @@ dependencies = [ [[package]] name = "alloy-ethers-typecast" version = "0.2.0" -source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=0881930a22e84db49ba955c5b88e790e1266ac66#0881930a22e84db49ba955c5b88e790e1266ac66" +source = "git+https://github.com/rainlanguage/alloy-ethers-typecast?rev=adda117b1f43e1a4dfa012299e71f2b0e73f46f4#adda117b1f43e1a4dfa012299e71f2b0e73f46f4" dependencies = [ "alloy", "async-trait", @@ -217,31 +207,19 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bca15afde1b6d15e3fc1c97421262b1bbb37aee45752e3c8b6d6f13f776554ff" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-serde", "serde", ] -[[package]] -name = "alloy-json-abi" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24ed0f2a6c3a1c947b4508522a53a190dba8f94dcd4e3e1a5af945a498e78f2f" -dependencies = [ - "alloy-primitives 0.6.4", - "alloy-sol-type-parser 0.6.4", - "serde", - "serde_json", -] - [[package]] name = "alloy-json-abi" version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc05b04ac331a9f07e3a4036ef7926e49a8bf84a99a1ccfc7e2ab55a5fcbb372" dependencies = [ - "alloy-primitives 0.7.7", - "alloy-sol-type-parser 0.7.7", + "alloy-primitives", + "alloy-sol-type-parser", "serde", "serde_json", ] @@ -252,7 +230,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d6f34930b7e3e2744bcc79056c217f00cb2abb33bc5d4ff88da7623c5bb078b" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "serde", "serde_json", "thiserror", @@ -268,11 +246,11 @@ dependencies = [ "alloy-consensus", "alloy-eips", "alloy-json-rpc", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "alloy-signer", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "async-trait", "auto_impl", "futures-utils-wasm", @@ -280,26 +258,19 @@ dependencies = [ ] [[package]] -name = "alloy-primitives" -version = "0.6.4" +name = "alloy-node-bindings" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600d34d8de81e23b6d909c094e23b3d357e01ca36b78a8c5424c501eedbe86f0" +checksum = "494b2fb0276a78ec13791446a417c2517eee5c8e8a8c520ae0681975b8056e5c" dependencies = [ - "alloy-rlp", - "bytes", - "cfg-if", - "const-hex", - "derive_more", - "getrandom", - "hex-literal", - "itoa", + "alloy-genesis", + "alloy-primitives", "k256", - "keccak-asm", - "proptest", - "rand", - "ruint", - "serde", - "tiny-keccak", + "serde_json", + "tempfile", + "thiserror", + "tracing", + "url", ] [[package]] @@ -340,9 +311,12 @@ dependencies = [ "alloy-eips", "alloy-json-rpc", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-node-bindings", + "alloy-primitives", "alloy-rpc-client", + "alloy-rpc-types-anvil", "alloy-rpc-types-eth", + "alloy-signer-local", "alloy-transport", "alloy-transport-http", "async-stream", @@ -368,7 +342,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0a7341322d9bc0e49f6e9fd9f2eb8e30f73806f2dd12cbb3d6bab2694c921f87" dependencies = [ "alloy-json-rpc", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-transport", "bimap", "futures", @@ -435,6 +409,17 @@ dependencies = [ "alloy-serde", ] +[[package]] +name = "alloy-rpc-types-anvil" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c7cf4356a9d00df76d6e90d002e2a7b5edc1c8476e90e6f17ab868d99db6435" +dependencies = [ + "alloy-primitives", + "alloy-serde", + "serde", +] + [[package]] name = "alloy-rpc-types-engine" version = "0.1.4" @@ -443,7 +428,7 @@ checksum = "6e765962e3b82fd6f276a0873b5bd897e5d75a25f78fa9a6a21bd350d8e98a4e" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rlp", "alloy-rpc-types-eth", "alloy-serde", @@ -461,10 +446,10 @@ checksum = "ab4123ee21f99ba4bd31bfa36ba89112a18a500f8b452f02b35708b1b951e2b9" dependencies = [ "alloy-consensus", "alloy-eips", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rlp", "alloy-serde", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "itertools 0.13.0", "serde", "serde_json", @@ -477,7 +462,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "567933b1d95fd42cb70b75126e32afec2e5e2c3c16e7100a3f83dc1c80f4dc0e" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rpc-types-eth", "alloy-serde", "serde", @@ -491,7 +476,7 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9416c52959e66ead795a11f4a86c248410e9e368a0765710e57055b8a1774dd6" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "serde", "serde_json", ] @@ -502,9 +487,9 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b33753c09fa1ad85e5b092b8dc2372f1e337a42e84b9b4cff9fede75ba4adb32" dependencies = [ - "alloy-dyn-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-types 0.7.7", + "alloy-dyn-abi", + "alloy-primitives", + "alloy-sol-types", "async-trait", "auto_impl", "elliptic-curve", @@ -519,11 +504,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "575e4c924b23132234c75bd1f8f3871c1bc12ba462f76af9b59249515a38253e" dependencies = [ "alloy-consensus", - "alloy-dyn-abi 0.7.7", + "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-signer", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "async-trait", "coins-ledger 0.11.1", "futures-util", @@ -540,7 +525,7 @@ checksum = "6dfc9c26fe6c6f1bad818c9a976de9044dd12e1f75f1f156a801ee3e8148c1b6" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-signer", "async-trait", "coins-bip32 0.11.1", @@ -560,7 +545,7 @@ checksum = "fd82e86e4a6604fd11f84b170638d16dcdac9db6c2b5f5b91a3941b7e7af7f94" dependencies = [ "alloy-consensus", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-signer", "async-trait", "semver 1.0.23", @@ -569,24 +554,6 @@ dependencies = [ "trezor-client", ] -[[package]] -name = "alloy-sol-macro" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86ec0a47740b20bc5613b8712d0d321d031c4efc58e9645af96085d5cccfc27" -dependencies = [ - "const-hex", - "dunce", - "heck 0.4.1", - "indexmap", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.74", - "syn-solidity 0.6.4", - "tiny-keccak", -] - [[package]] name = "alloy-sol-macro" version = "0.7.7" @@ -607,16 +574,16 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "867a5469d61480fea08c7333ffeca52d5b621f5ca2e44f271b117ec1fc9a0525" dependencies = [ - "alloy-json-abi 0.7.7", + "alloy-json-abi", "alloy-sol-macro-input", "const-hex", - "heck 0.5.0", + "heck", "indexmap", "proc-macro-error", "proc-macro2", "quote", "syn 2.0.74", - "syn-solidity 0.7.7", + "syn-solidity", "tiny-keccak", ] @@ -626,24 +593,15 @@ version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e482dc33a32b6fadbc0f599adea520bd3aaa585c141a80b404d0a3e3fa72528" dependencies = [ - "alloy-json-abi 0.7.7", + "alloy-json-abi", "const-hex", "dunce", - "heck 0.5.0", + "heck", "proc-macro2", "quote", "serde_json", "syn 2.0.74", - "syn-solidity 0.7.7", -] - -[[package]] -name = "alloy-sol-type-parser" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0045cc89524e1451ccf33e8581355b6027ac7c6e494bb02959d4213ad0d8e91d" -dependencies = [ - "winnow 0.6.18", + "syn-solidity", ] [[package]] @@ -656,27 +614,15 @@ dependencies = [ "winnow 0.6.18", ] -[[package]] -name = "alloy-sol-types" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad09ec5853fa700d12d778ad224dcdec636af424d29fad84fb9a2f16a5b0ef09" -dependencies = [ - "alloy-primitives 0.6.4", - "alloy-sol-macro 0.6.4", - "const-hex", - "serde", -] - [[package]] name = "alloy-sol-types" version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a91ca40fa20793ae9c3841b83e74569d1cc9af29a2f5237314fd3452d51e38c7" dependencies = [ - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-macro 0.7.7", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-macro", "const-hex", "serde", ] @@ -1590,7 +1536,7 @@ version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "syn 2.0.74", @@ -2801,8 +2747,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ecb3c05dbf9454cf58c6c440f84c5d2c8f4e94edb4b16f87cfad9e4d818065a" dependencies = [ "alloy-chains", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers", "reqwest 0.12.5", "semver 1.0.23", @@ -2817,15 +2763,15 @@ name = "foundry-cheatcodes" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-dyn-abi 0.7.7", + "alloy-dyn-abi", "alloy-genesis", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "alloy-provider", "alloy-rpc-types", "alloy-signer", "alloy-signer-local", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "base64 0.22.1", "dialoguer", "eyre", @@ -2857,7 +2803,7 @@ name = "foundry-cheatcodes-spec" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-sol-types 0.7.7", + "alloy-sol-types", "foundry-macros", "serde", ] @@ -2868,16 +2814,16 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ "alloy-contract", - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", + "alloy-dyn-abi", + "alloy-json-abi", "alloy-json-rpc", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-provider", "alloy-pubsub", "alloy-rpc-client", "alloy-rpc-types", "alloy-serde", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "alloy-transport", "alloy-transport-http", "alloy-transport-ipc", @@ -2914,8 +2860,8 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ "alloy-consensus", - "alloy-dyn-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-dyn-abi", + "alloy-primitives", "alloy-rpc-types", "alloy-serde", "chrono", @@ -2930,8 +2876,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f506a672502997fbc778f1d30eb4a06a58654049ccc6cd0bdb93a785175f682" dependencies = [ - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "auto_impl", "derivative", "dirs", @@ -2975,8 +2921,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49104d442d6f0266c07edbdd23baa9a1db0f01d04bfdc69b6ac060a57e6f3e27" dependencies = [ - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers-core", "futures-util", "md-5", @@ -2998,8 +2944,8 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f012d22d0690ad6b6bbcc8d70467325212ddea3457e8efda6affe17fb5ae938" dependencies = [ - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "foundry-compilers-artifacts-solc", "foundry-compilers-core", "path-slash", @@ -3012,7 +2958,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "23760fd6df67a9878ed0fe91e024bf1ff3b7358369cf54129539a8493177c6e7" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "cfg-if", "dunce", "memmap2", @@ -3035,7 +2981,7 @@ source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b13 dependencies = [ "Inflector", "alloy-chains", - "alloy-primitives 0.7.7", + "alloy-primitives", "dirs-next", "dunce", "eyre", @@ -3067,10 +3013,10 @@ name = "foundry-evm" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-types 0.7.7", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", "eyre", "foundry-cheatcodes", "foundry-common", @@ -3094,8 +3040,8 @@ name = "foundry-evm-abi" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-primitives 0.7.7", - "alloy-sol-types 0.7.7", + "alloy-primitives", + "alloy-sol-types", "derive_more", "foundry-common-fmt", "foundry-macros", @@ -3109,14 +3055,14 @@ name = "foundry-evm-core" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-dyn-abi 0.7.7", + "alloy-dyn-abi", "alloy-genesis", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-json-abi", + "alloy-primitives", "alloy-provider", "alloy-rpc-types", "alloy-serde", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "alloy-transport", "auto_impl", "eyre", @@ -3143,7 +3089,7 @@ name = "foundry-evm-coverage" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -3161,9 +3107,9 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ "ahash", - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", "eyre", "foundry-common", "foundry-compilers", @@ -3187,10 +3133,10 @@ name = "foundry-evm-traces" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-dyn-abi 0.7.7", - "alloy-json-abi 0.7.7", - "alloy-primitives 0.7.7", - "alloy-sol-types 0.7.7", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", "eyre", "foundry-block-explorers", "foundry-common", @@ -3214,7 +3160,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3f9c9e02b19933218eb39c7234dcb0cc20e461258ced030f6fd6ac254a8637" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-provider", "alloy-rpc-types", "alloy-serde", @@ -3237,7 +3183,7 @@ name = "foundry-linking" version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "foundry-compilers", "semver 1.0.23", "thiserror", @@ -3260,14 +3206,14 @@ version = "0.2.0" source = "git+https://github.com/foundry-rs/foundry?rev=72e44fb87c38b2acfa2b0b136fc1bc833f71e674#72e44fb87c38b2acfa2b0b136fc1bc833f71e674" dependencies = [ "alloy-consensus", - "alloy-dyn-abi 0.7.7", + "alloy-dyn-abi", "alloy-network", - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-signer", "alloy-signer-ledger", "alloy-signer-local", "alloy-signer-trezor", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "async-trait", "aws-sdk-kms", "clap", @@ -3541,12 +3487,6 @@ dependencies = [ "fxhash", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - [[package]] name = "heck" version = "0.5.0" @@ -5083,12 +5023,12 @@ checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" [[package]] name = "rain-error-decoding" version = "0.1.0" -source = "git+https://github.com/rainlanguage/rain.error?rev=72d9577fdaf7135113847027ba951f9a43b41827#72d9577fdaf7135113847027ba951f9a43b41827" +source = "git+https://github.com/rainlanguage/rain.error?rev=fa0cc05a8dbf0f167a2392255a8b509309e9da46#fa0cc05a8dbf0f167a2392255a8b509309e9da46" dependencies = [ - "alloy-dyn-abi 0.6.4", - "alloy-json-abi 0.6.4", - "alloy-primitives 0.6.4", - "alloy-sol-types 0.6.4", + "alloy-dyn-abi", + "alloy-json-abi", + "alloy-primitives", + "alloy-sol-types", "ethers", "getrandom", "once_cell", @@ -5100,14 +5040,14 @@ dependencies = [ [[package]] name = "rain-i9r-cli" -version = "0.0.1" +version = "0.0.0-alpha.0" dependencies = [ "alloy", "anyhow", "clap", - "rain-interpreter-env", "rain-interpreter-eval", "rain_interpreter_bindings", + "rain_interpreter_test_fixtures", "serde", "serde_bytes", "tokio", @@ -5115,25 +5055,17 @@ dependencies = [ "tracing-subscriber", ] -[[package]] -name = "rain-interpreter-env" -version = "0.0.0" -dependencies = [ - "alloy", - "once_cell", -] - [[package]] name = "rain-interpreter-eval" -version = "0.1.0" +version = "0.0.0-alpha.0" dependencies = [ "alloy", "eyre", "foundry-evm", "once_cell", "rain-error-decoding", - "rain-interpreter-env", "rain_interpreter_bindings", + "rain_interpreter_test_fixtures", "reqwest 0.11.27", "revm", "serde", @@ -5141,18 +5073,19 @@ dependencies = [ "thiserror", "tokio", "tracing", + "wasm-bindgen-utils", ] [[package]] name = "rain_interpreter_bindings" -version = "0.1.0" +version = "0.0.0-alpha.0" dependencies = [ "alloy", ] [[package]] name = "rain_interpreter_dispair" -version = "0.1.0" +version = "0.0.0-alpha.0" dependencies = [ "alloy", "alloy-ethers-typecast", @@ -5168,7 +5101,7 @@ dependencies = [ [[package]] name = "rain_interpreter_parser" -version = "0.1.0" +version = "0.0.0-alpha.0" dependencies = [ "alloy", "alloy-ethers-typecast", @@ -5181,6 +5114,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "rain_interpreter_test_fixtures" +version = "0.0.0-alpha.0" +dependencies = [ + "alloy", + "getrandom", + "serde_json", +] + [[package]] name = "rand" version = "0.8.5" @@ -5428,9 +5370,9 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3aede4aaaa0c5b446ce1a951629d7929ea48473a0f307bd8d999ecdeb55c420b" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "alloy-rpc-types", - "alloy-sol-types 0.7.7", + "alloy-sol-types", "anstyle", "colorchoice", "revm", @@ -5474,7 +5416,7 @@ version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "902184a7a781550858d4b96707098da357429f1e4545806fd5b589f455555cf2" dependencies = [ - "alloy-primitives 0.7.7", + "alloy-primitives", "auto_impl", "bitflags 2.6.0", "bitvec", @@ -5975,6 +5917,28 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde-wasm-bindgen" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3b143e2833c57ab9ad3ea280d21fd34e285a42837aeb0ee301f4f41890fa00e" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "serde_bytes" version = "0.11.15" @@ -5995,6 +5959,17 @@ dependencies = [ "syn 2.0.74", ] +[[package]] +name = "serde_derive_internals" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e578a843d40b4189a4d66bba51d7684f57da5bd7c304c64e14bd63efbef49509" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] + [[package]] name = "serde_json" version = "1.0.125" @@ -6252,7 +6227,7 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", @@ -6353,18 +6328,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "syn-solidity" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3d0961cd53c23ea94eeec56ba940f636f6394788976e9f16ca5ee0aca7464a" -dependencies = [ - "paste", - "proc-macro2", - "quote", - "syn 2.0.74", -] - [[package]] name = "syn-solidity" version = "0.7.7" @@ -6826,6 +6789,30 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" +[[package]] +name = "tsify" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6b26cf145f2f3b9ff84e182c448eaf05468e247f148cf3d2a7d67d78ff023a0" +dependencies = [ + "serde", + "serde-wasm-bindgen 0.5.0", + "tsify-macros", + "wasm-bindgen", +] + +[[package]] +name = "tsify-macros" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a94b0f0954b3e59bfc2c246b4c8574390d94a4ad4ad246aaf2fb07d7dfd3b47" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.74", +] + [[package]] name = "tungstenite" version = "0.20.1" @@ -7059,24 +7046,24 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", "syn 2.0.74", @@ -7097,9 +7084,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7107,9 +7094,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.93" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", @@ -7120,9 +7107,27 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.93" +version = "0.2.100" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-bindgen-utils" +version = "0.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" +checksum = "04293ba23e84c21b0d42179abedf35e6eb082bd6f06bce7a42a8dd8e0b2b589f" +dependencies = [ + "js-sys", + "paste", + "serde", + "serde-wasm-bindgen 0.6.5", + "tsify", + "wasm-bindgen", + "wasm-bindgen-futures", +] [[package]] name = "web-sys" diff --git a/Cargo.toml b/Cargo.toml index 0e670d008..aa5cc1f56 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,9 +3,11 @@ members = ["crates/*"] resolver = "2" [workspace.package] +version = "0.0.0-alpha.0" edition = "2021" -license = "CAL-1.0" -homepage = "https://github.com/rainprotocol/rain.interpreter" +license = "LicenseRef-DCL-1.0" +author = "Rain Open Source Software Ltd" +homepage = "https://github.com/rainlanguage/rain.interpreter" [workspace.dependencies] alloy = { version = "0.1.4", features = ["sol-types", "json", "json-abi"] } @@ -32,10 +34,9 @@ tracing = "0.1.37" tracing-subscriber = "0.3.17" reqwest = { version = "0.11.17", features = ["json"] } once_cell = "1.17.1" -alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "0881930a22e84db49ba955c5b88e790e1266ac66" } -rain-interpreter-env = { path = "crates/env" } +alloy-ethers-typecast = { git = "https://github.com/rainlanguage/alloy-ethers-typecast", rev = "adda117b1f43e1a4dfa012299e71f2b0e73f46f4" } eyre = "0.6" -rain-error-decoding = { git = "https://github.com/rainlanguage/rain.error", rev = "72d9577fdaf7135113847027ba951f9a43b41827" } +rain-error-decoding = { git = "https://github.com/rainlanguage/rain.error", rev = "fa0cc05a8dbf0f167a2392255a8b509309e9da46" } [workspace.dependencies.rain_interpreter_parser] path = "crates/parser" @@ -48,3 +49,6 @@ path = "crates/bindings" [workspace.dependencies.rain-interpreter-eval] path = "crates/eval" + +[workspace.dependencies.rain_interpreter_test_fixtures] +path = "crates/test_fixtures" diff --git a/LICENSES/LicenseRef-DCL-1.0.txt b/LICENSES/LicenseRef-DCL-1.0.txt new file mode 100644 index 000000000..dc4e17161 --- /dev/null +++ b/LICENSES/LicenseRef-DCL-1.0.txt @@ -0,0 +1,189 @@ +# DecentraLicense + +*This DecentraLicense (the “License”) applies to any Work whose owner has marked it with any of the following notices:* + +*“Licensed under the DecentraLicense version 1.0,” or* + +*“Licensed under the DecentraLicense version 1.0, with Combined Work Exception”* + +------ + +## 1. Purpose + +This License gives You unlimited permission to use and modify the software to which it applies (the “Work”), either as-is or in modified form, for Your private purposes, while protecting the owners and contributors to the software from liability. + +This License also strives to protect the freedom and autonomy of third parties who receive the Work from you. If any non-affiliated third party receives any part, aspect, or element of the Work from You, this License requires that You provide that third party all the permissions and materials needed to independently use and modify the Work without that third party having a loss of data or capability due to your actions. + +The full permissions, conditions, and other terms are laid out below. + +## 2. Receiving a License + +In order to receive this License, You must agree to its rules. The rules of this License are both obligations of Your agreement with the Licensor and conditions to your License. You must not do anything with the Work that triggers a rule You cannot or will not follow. + +### 2.1. Application + +The terms of this License apply to the Work as you receive it from Licensor, as well as to any modifications, elaborations, or implementations created by You that contain any licenseable portion of the Work (a “Modified Work”). Unless specified, any reference to the Work also applies to a Modified Work. + +### 2.2. Offer and Acceptance + +This License is automatically offered to every person and organization. You show that you accept this License and agree to its conditions by taking any action with the Work that, absent this License, would infringe any intellectual property right held by Licensor. + +### 2.3. Compliance and Remedies + +Any failure to act according to the terms and conditions of this License places Your use of the Work outside the scope of the License and infringes the rights of the Licensor. In the event of breach, the terms and conditions of this License may be enforced by Licensor under the laws of any jurisdiction to which You are subject. You also agree that either the Licensor or a Recipient (as an intended third-party beneficiary) may enforce the terms and conditions of this License against You via specific performance. + +To the fullest extent available under the law of any jurisdiction to which You are subject, You also agree that a Recipient (as an intended third-party beneficiary) receives a benefit in the form of the ability to maintain exclusive control of private keys under the terms and conditions of this License. + +## 3. Permissions and Conditions + +### 3.1. Permissions Granted + +Conditioned on compliance with section 4, and subject to the limitations of section 3.2, Licensor grants You the world-wide, royalty-free, non-exclusive permission to: + +> a) Take any action with the Work that would infringe the non-patent intellectual property laws of any jurisdiction to which You are subject; and +> +> b) Take any action with the Work that would infringe any patent claims that Licensor can license or becomes able to license, to the extent that those claims are embodied in the Work as distributed by Licensor. + +### 3.2. Limitations on Permissions Granted + +The following limitations apply to the permissions granted in section 3.1: + +> a) Licensor does not grant any patent license for claims that are only infringed due to modification of the Work as provided by Licensor, or the combination of the Work as provided by Licensor, directly or indirectly, with any other component, including other software or hardware. +> +> b) Licensor does not grant any license to the trademarks, service marks, or logos of Licensor, except to the extent necessary to comply with the attribution conditions in section 4.1 of this License. + +## 4. Conditions + +If You exercise any permission granted by this License, such that the Work, or any part, aspect, or element of the Work, is distributed, communicated, made available, or made perceptible to a non-Affiliate third party (a “Recipient”), either via physical delivery or via a network connection to the Recipient, You must comply with the following conditions: + +### 4.1. Provide Access to Source Code + +Subject to the exception in section 4.4, You must provide to each Recipient a copy of, or no-charge unrestricted network access to, the Source Code corresponding to the Work. + +The “Source Code” of the Work means the form of the Work preferred for making modifications, including any comments, configuration information, documentation, help materials, installation instructions, cryptographic seeds or keys, and any information reasonably necessary for the Recipient to independently compile and use the Source Code and to have full access to the functionality contained in the Work. + +#### 4.1.1. Providing Network Access to the Source Code + +Network access to the Notices and Source Code may be provided by You or by a third party, such as a public software repository, and must persist during the same period in which You exercise any of the permissions granted to You under this License and for at least one year thereafter. + +#### 4.1.2. Source Code for a Modified Work + +Subject to the exception in section 4.5, You must provide to each Recipient of a Modified Work Access to Source Code corresponding to those portions of the Work remaining in the Modified Work as well as the modifications used by You to create the Modified Work. The Source Code corresponding to the modifications in the Modified Work must be provided to the Recipient either a) under this License, or b) under a Compatible Open Source License. + +A “Compatible Open Source License” means a license accepted by the Open Source Initiative that allows object code created using both Source Code provided under this License and Source Code provided under the other open source license to be distributed together as a single work. + +#### 4.1.3. Coordinated Disclosure of Security Vulnerabilities + +You may delay providing the Source Code corresponding to a particular modification of the Work for up to ninety (90) days (the “Embargo Period”) if: a) the modification is intended to address a newly-identified vulnerability or a security flaw in the Work, b) disclosure of the vulnerability or security flaw before the end of the Embargo Period would put the data, identity, or autonomy of one or more Recipients of the Work at significant risk, c) You are participating in a coordinated disclosure of the vulnerability or security flaw with one or more additional Licensees, and d) Access to the Source Code pertaining to the modification is provided to all Recipients at the end of the Embargo Period. + +### 4.2. Maintain User Autonomy + +In addition to providing each Recipient the opportunity to have Access to the Source Code, You cannot use the permissions given under this License to interfere with a Recipient’s ability to fully use an independent copy of the Work generated from the Source Code You provide with the Recipient’s own User Data. + +“User Data” means any data that is an input to or an output from the Work, where the presence of the data is necessary for substantially identical use of the Work in an equivalent context chosen by the Recipient, and where the Recipient has an existing ownership interest, an existing right to possess, or where the data has been generated by, for, or has been assigned to the Recipient. + +#### 4.2.1. No Withholding User Data + +Throughout any period in which You exercise any of the permissions granted to You under this License, You must also provide to any Recipient to whom you provide services via the Work, a no-charge copy, provided in a commonly used electronic form, of the Recipient’s User Data in your possession, to the extent that such User Data is available to You for use in conjunction with the Work. + +#### 4.2.2. No Technical Measures that Limit Access + +You may not, by the use of cryptographic methods applied to anything provided to the Recipient, by possession or control of cryptographic keys, seeds, or hashes, by other technological protection measures, or by any other method, limit a Recipient's ability to access any functionality present in the Recipient's independent copy of the Work, or deny a Recipient full control of the Recipient's User Data. + +#### 4.2.3. No Legal or Contractual Measures that Limit Access + +You may not contractually restrict a Recipient's ability to independently exercise the permissions granted under this License. You waive any legal power to forbid circumvention of technical protection measures that include use of the Work, and You waive any claim that the capabilities of the Work were limited or modified as a means of enforcing the legal rights of third parties against Recipients. + +### 4.3. Decentralized Code and Decentralized Systems + +You must only run Decentralized Code if: + +> a) it is run by a Decentralized System; and +> +> b) all the data referenced by Decentralized Code is stored on a Decentralized System. + +“Decentralized Code” is a Source Code file marked by the Licensor as “Decentralized Code”. + +“Decentralized System” is a system operating solely in accordance with publicly available Rules where any person or organisation: + +> a) only participates in the system by freely opting in; +> +> b) can interpret system data by reference to the Rules; and +> +> c) can obtain a copy of the system data, provided in a commonly used electronic form, accessible in accordance with the Rules. + +“Rule” is any unambiguous and human comprehensible: + +> a) rule that results in a deterministic outcome when implemented, in a commonly used electronic form; or +> +> b) configuration information, documentation, help materials, and any information reasonably necessary for a Recipient skilled in the art to independently comprehend the rule. + +### 4.4. Maintain Private Key Exclusive Control + +You cannot use the permissions given under this License to provide a Recipient with functionality using the Work that: + +> a) would cause the loss of exclusive control of a private key by a private key holder with exclusive control of a private key; or +> +> b) deals with private keys except by using a Decentralized System. + +### 4.5. Provide Notices and Attribution + +You must retain all licensing, authorship, or attribution notices contained in the Source Code (the “Notices”), and provide all such Notices to each Recipient, together with a statement acknowledging the use of the Work. Notices may be provided directly to a Recipient or via an easy-to-find hyperlink to an Internet location also providing Access to Source Code. + +### 4.6. Scope of Conditions in this License + +You are required to uphold the conditions of this License only relative to those who are Recipients of the Work from You. Other than providing Recipients with the applicable Notices, Access to Source Code, and a copy of and full control of their User Data, nothing in this License requires You to provide processing services to or engage in network interactions with anyone. + +### 4.7. Combined Work Exception + +As an exception to condition that You provide Recipients Access to Source Code, any Source Code files not marked by the Licensor as “Decentralized Code” and as having the “Combined Work Exception,” or any object code exclusively resulting from Source Code files so marked, may be combined with other Software into a “Larger Work.” So long as you: a) comply with the requirements to provide Recipients the applicable Notices and Access to the Source Code provided to You by Licensor, b) you provide Recipients access to their User Data and do not limit Recipient’s ability to independently work with their User Data, c) you comply with the requirements in relation to Decentralized Code and Decentralized Systems, and d) Recipients are able to maintain exclusive control of private cryptographic keys, any other Software in the Larger Work as well as the Larger Work as a whole may be licensed under the terms of your choice. + +## 5. Term and Termination + +The term of this License begins when You receive the Work, and continues until terminated for any of the reasons described herein, or until all Licensor’s intellectual property rights in the Software expire, whichever comes first (“Term”). This License cannot be revoked, only terminated for the reasons listed below. + +### 5.1. Effect of Termination + +If this License is terminated for any reason, all permissions granted to You under Section 3 by any Licensor automatically terminate. You will immediately cease exercising any permissions granted in this License relative to the Work, including as part of any Modified Work. + +### 5.2. Termination for Non-Compliance; Reinstatement + +This License terminates automatically if You fail to comply with any of the conditions in section 4. As a special exception to termination for non-compliance, Your permissions for the Work under this License will automatically be reinstated if You come into compliance with all the conditions in section 2 within sixty (60) days of being notified by Licensor or an intended third party beneficiary of Your noncompliance. You are eligible for reinstatement of permissions for the Work one time only, and only for the sixty days immediately after becoming aware of noncompliance. Loss of permissions granted for the Work under this License due to either a) sustained noncompliance lasting more than sixty days or b) subsequent termination for noncompliance after reinstatement, is permanent, unless rights are specifically restored by Licensor in writing. + +### 5.3 Termination Due to Litigation + +If You initiate litigation against Licensor, or any Recipient of the Work, either direct or indirect, asserting that the Work directly or indirectly infringes any patent, then all permissions granted to You by this License shall terminate. In the event of termination due to litigation, all permissions validly granted by You under this License, directly or indirectly, shall survive termination. Administrative review procedures, declaratory judgment actions, counterclaims in response to patent litigation, and enforcement actions against former Licensees terminated under this section do not cause termination due to litigation. + +## 6. Disclaimer of Warranty and Limit on Liability + +As far as the law allows, the Work comes AS-IS, without any warranty of any kind, and no Licensor or contributor will be liable to anyone for any damages related to this software or this license, under any kind of legal claim, or for any type of damages, including indirect, special, incidental, or consequential damages of any type arising as a result of this License or the use of the Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, loss of profits, revenue, or any and all other commercial damages or losses. + +## 7. Other Provisions + +### 7.1. Affiliates + +An “Affiliate” means any other entity that, directly or indirectly through one or more intermediaries, controls, is controlled by, or is under common control with, the Licensee. Employees of a Licensee and natural persons acting as contractors exclusively providing services to Licensee are also Affiliates. + +### 7.2. Choice of Jurisdiction and Governing Law + +A Licensor may require that any action or suit by a Licensee relating to a Work provided by Licensor under this License may be brought only in the courts of a particular jurisdiction and under the laws of a particular jurisdiction (excluding its conflict-of-law provisions), if Licensor provides conspicuous notice of the particular jurisdiction to all Licensees. + +### 7.3. No Sublicensing + +This License is not sublicensable. Each time You provide the Work or a Modified Work to a Recipient, the Recipient automatically receives a license under the terms described in this License. You may not impose any further reservations, conditions, or other provisions on any Recipients’ exercise of the permissions granted herein. + +### 7.4. Attorneys' Fees + +In any action to enforce the terms of this License, or seeking damages relating thereto, including by an intended third party beneficiary, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. A “prevailing party” is the party that achieves, or avoids, compliance with this License, including through settlement. This section shall survive the termination of this License. + +### 7.5. No Waiver + +Any failure by Licensor to enforce any provision of this License will not constitute a present or future waiver of such provision nor limit Licensor’s ability to enforce such provision at a later time. + +### 7.6. Severability + +If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. Any invalid or unenforceable portion will be interpreted to the effect and intent of the original portion. If such a construction is not possible, the invalid or unenforceable portion will be severed from this License but the rest of this License will remain in full force and effect. + +### 7.7. License for the Text of this License + +The text of this license is released under the Creative Commons Attribution-ShareAlike 4.0 International License, with the caveat that any modifications of this license may not use the name “DecentraLicense” or any name confusingly similar thereto to describe any derived work of this License. diff --git a/README.md b/README.md index 9adaa2219..63e22c957 100644 --- a/README.md +++ b/README.md @@ -87,4 +87,48 @@ There are some branches that were forked from `main` for historical reasons, tha MAY be of interest situationally, but otherwise should be ignored. - `main-np`: Forked from the last commit using `eval` before `eval2` was the - primary interface into the interpreter. No longer actively developed. \ No newline at end of file + primary interface into the interpreter. No longer actively developed. + +## Dev stuff + +### Local environment & CI + +Uses nixos. + +Install `nix develop` - https://nixos.org/download.html. + +Run `nix develop` in this repo to drop into the shell. Please ONLY use the nix +version of `foundry` for development, to ensure versions are all compatible. + +Read the `flake.nix` file to find some additional commands included for dev and +CI usage. + +## Legal stuff + +Everything is under DecentraLicense 1.0 (DCL-1.0) which can be found in `LICENSES/`. + +This is basically `CAL-1.0` which is an open source license +https://opensource.org/license/cal-1-0 + +The non-legal summary of DCL-1.0 is that the source is open, as expected, but +also user data in the systems that this code runs on must also be made available +to those users as relevant, and that private keys remain private. + +Roughly it's "not your keys, not your coins" aware, as close as we could get in +legalese. + +This is the default situation on permissionless blockchains, so shouldn't require +any additional effort by dev-users to adhere to the license terms. + +This repo is REUSE 3.2 compliant https://reuse.software/spec-3.2/ and compatible +with `reuse` tooling (also available in the nix shell here). + +``` +nix develop -c rainix-sol-legal +``` + +## Contributions + +Contributions are welcome **under the same license** as above. + +Contributors agree and warrant that their contributions are compliant. \ No newline at end of file diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 000000000..80fac5bc2 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,21 @@ +version = 1 + +[[annotations]] +path = [ + ".gas-snapshot", + ".github/workflows/**/", + "crates/**/", + ".vscode/**/", + "Cargo.lock", + "Cargo.toml", + ".gitignore", + ".gitmodules", + "README.md", + "flake.lock", + "flake.nix", + "foundry.toml", + "slither.config.json", + "REUSE.toml" +] +SPDX-FileCopyrightText = "Copyright (c) 2020 Rain Open Source Software Ltd" +SPDX-License-Identifier = "LicenseRef-DCL-1.0" diff --git a/crates/bindings/Cargo.toml b/crates/bindings/Cargo.toml index c44579cba..be04bd555 100644 --- a/crates/bindings/Cargo.toml +++ b/crates/bindings/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "rain_interpreter_bindings" -version = "0.1.0" +version.workspace = true edition.workspace = true license.workspace = true +author.workspace = true homepage.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/crates/cli/Cargo.lock b/crates/cli/Cargo.lock deleted file mode 100644 index 13e617d55..000000000 --- a/crates/cli/Cargo.lock +++ /dev/null @@ -1,1585 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "anstream" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6342bd4f5a1205d7f41e94a41a901f5647c938cdfa96036338e8533c9d6c2450" -dependencies = [ - "anstyle", - "anstyle-parse", - "anstyle-query", - "anstyle-wincon", - "colorchoice", - "is-terminal", - "utf8parse", -] - -[[package]] -name = "anstyle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" - -[[package]] -name = "anstyle-parse" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" -dependencies = [ - "utf8parse", -] - -[[package]] -name = "anstyle-query" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" -dependencies = [ - "windows-sys 0.48.0", -] - -[[package]] -name = "anstyle-wincon" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "180abfa45703aebe0093f79badacc01b8fd4ea2e35118747e5811127f926e188" -dependencies = [ - "anstyle", - "windows-sys 0.48.0", -] - -[[package]] -name = "anyhow" -version = "1.0.70" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4" - -[[package]] -name = "ascii" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "base64" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bumpalo" -version = "3.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1ce199063694f33ffb7dd4e0ee620741495c32833cde5aa08f02a0bf96f0c8" - -[[package]] -name = "byteorder" -version = "1.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" - -[[package]] -name = "bytes" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "4.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a1f23fa97e1d1641371b51f35535cb26959b8e27ab50d167a8b996b5bada819" -dependencies = [ - "clap_builder", - "clap_derive", - "once_cell", -] - -[[package]] -name = "clap_builder" -version = "4.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fdc5d93c358224b4d6867ef1356d740de2303e9892edc06c5340daeccd96bab" -dependencies = [ - "anstream", - "anstyle", - "bitflags", - "clap_lex", - "once_cell", - "strsim", -] - -[[package]] -name = "clap_derive" -version = "4.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "clap_lex" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a2dd5a6fe8c6e3502f568a6353e5273bbb15193ad9a89e457b9970798efbea1" - -[[package]] -name = "colorchoice" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" - -[[package]] -name = "combine" -version = "3.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" -dependencies = [ - "ascii", - "byteorder", - "either", - "memchr", - "unreachable", -] - -[[package]] -name = "core-foundation" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "encoding_rs" -version = "0.8.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "071a31f4ee85403370b58aca746f01041ede6f0da2730960ad001edc2b71b394" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "errno" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - -[[package]] -name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - -[[package]] -name = "form_urlencoded" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" - -[[package]] -name = "futures-sink" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" - -[[package]] -name = "futures-task" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" - -[[package]] -name = "futures-util" -version = "0.3.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", -] - -[[package]] -name = "getrandom" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c85e1d9ab2eadba7e5040d4e09cbd6d072b76a557ad64e797c2cb9d4da21d7e4" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "graphql-introspection-query" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2a4732cf5140bd6c082434494f785a19cfb566ab07d1382c3671f5812fed6d" -dependencies = [ - "serde", -] - -[[package]] -name = "graphql-parser" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ebc8013b4426d5b81a4364c419a95ed0b404af2b82e2457de52d9348f0e474" -dependencies = [ - "combine", - "thiserror", -] - -[[package]] -name = "graphql_client" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa61bb9dc6d373a8b465a5da17b62809483e8527a34b0e9034dc0915b09e160a" -dependencies = [ - "graphql_query_derive", - "serde", - "serde_json", -] - -[[package]] -name = "graphql_client_codegen" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e55df64cc702c4ad6647f8df13a799ad11688a3781fadf5045f7ba12733fa9b" -dependencies = [ - "graphql-introspection-query", - "graphql-parser", - "heck", - "lazy_static", - "proc-macro2", - "quote", - "serde", - "serde_json", - "syn 1.0.109", -] - -[[package]] -name = "graphql_query_derive" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52fc9cde811f44b15ec0692b31e56a3067f6f431c5ace712f286e47c1dacc98" -dependencies = [ - "graphql_client_codegen", - "proc-macro2", - "syn 1.0.109", -] - -[[package]] -name = "h2" -version = "0.3.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17f8a914c2987b688368b5138aa05321db91f4090cf26118185672ad588bce21" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" - -[[package]] -name = "http" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" - -[[package]] -name = "hyper" -version = "0.14.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab302d72a6f11a3b910431ff93aae7e773078c769f0a3ef15fb9ec692ed147d4" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-tls" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" -dependencies = [ - "bytes", - "hyper", - "native-tls", - "tokio", - "tokio-native-tls", -] - -[[package]] -name = "idna" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown", -] - -[[package]] -name = "instant" -version = "0.1.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "io-lifetimes" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c66c74d2ae7e79a5a8f7ac924adbe38ee42a859c6539ad869eb51f0b52dc220" -dependencies = [ - "hermit-abi 0.3.1", - "libc", - "windows-sys 0.48.0", -] - -[[package]] -name = "ipnet" -version = "2.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12b6ee2129af8d4fb011108c73d99a1b83a85977f23b82460c0ae2e25bb4b57f" - -[[package]] -name = "is-terminal" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adcf93614601c8129ddf72e2d5633df827ba6551541c6d8c59520a371475be1f" -dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix", - "windows-sys 0.48.0", -] - -[[package]] -name = "itoa" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" - -[[package]] -name = "js-sys" -version = "0.3.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libc" -version = "0.2.142" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a987beff54b60ffa6d51982e1aa1146bc42f19bd26be28b0586f252fccf5317" - -[[package]] -name = "linux-raw-sys" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b64f40e5e03e0d54f03845c8197d0291253cdbedfb1cb46b13c2c117554a9f4c" - -[[package]] -name = "lock_api" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "mio" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b9d9a46eff5b4ff64b45a9e316a6d1e0bc719ef429cbec4dc630684212bfdf9" -dependencies = [ - "libc", - "log", - "wasi", - "windows-sys 0.45.0", -] - -[[package]] -name = "native-tls" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" -dependencies = [ - "lazy_static", - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nu-ansi-term" -version = "0.46.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" -dependencies = [ - "overload", - "winapi", -] - -[[package]] -name = "num-traits" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" -dependencies = [ - "hermit-abi 0.2.6", - "libc", -] - -[[package]] -name = "once_cell" -version = "1.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3" - -[[package]] -name = "openssl" -version = "0.10.52" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01b8574602df80f7b85fdfc5392fa884a4e3b3f4f35402c070ab34c3d3f78d56" -dependencies = [ - "bitflags", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "openssl-probe" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" - -[[package]] -name = "openssl-sys" -version = "0.9.87" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e17f59264b2809d77ae94f0e1ebabc434773f370d6ca667bd223ea10e06cc7e" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall 0.2.16", - "smallvec", - "windows-sys 0.45.0", -] - -[[package]] -name = "percent-encoding" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" - -[[package]] -name = "pin-project-lite" -version = "0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - -[[package]] -name = "proc-macro2" -version = "1.0.56" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "rain_cli_ob" -version = "0.0.4" -dependencies = [ - "anyhow", - "clap", - "graphql_client", - "once_cell", - "reqwest", - "rust-bigint", - "serde", - "serde_bytes", - "tokio", - "tracing", - "tracing-subscriber", -] - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags", -] - -[[package]] -name = "reqwest" -version = "0.11.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13293b639a097af28fc8a90f22add145a9c954e49d77da06263d58cf44d5fb91" -dependencies = [ - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-tls", - "ipnet", - "js-sys", - "log", - "mime", - "native-tls", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "tokio", - "tokio-native-tls", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "winreg", -] - -[[package]] -name = "rust-bigint" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe1d6964d886b707f3e2cec76ac5b0e887661a6699f695ed0d3d5bb4852d6959" -dependencies = [ - "getrandom", - "rust-gmp-kzen", - "serde", - "serde_derive", -] - -[[package]] -name = "rust-gmp-kzen" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e654bb304958a567aefa09e83cc313251388202c40bfc245fac19a0e2dd8d08" -dependencies = [ - "libc", - "num-traits", - "serde", -] - -[[package]] -name = "rustix" -version = "0.37.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc809f704c03a812ac71f22456c857be34185cac691a4316f27ab0f633bb9009" -dependencies = [ - "bitflags", - "errno", - "io-lifetimes", - "libc", - "linux-raw-sys", - "windows-sys 0.48.0", -] - -[[package]] -name = "ryu" -version = "1.0.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" - -[[package]] -name = "schannel" -version = "0.1.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" -dependencies = [ - "windows-sys 0.42.0", -] - -[[package]] -name = "scopeguard" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "security-framework" -version = "2.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" -dependencies = [ - "bitflags", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "serde" -version = "1.0.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb2f3770c8bce3bcda7e149193a069a0f4365bda1fa5cd88e03bca26afc1216c" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_bytes" -version = "0.11.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_derive" -version = "1.0.160" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291a097c63d8497e00160b166a967a4a79c64f3facdd01cbd7502231688d77df" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "serde_json" -version = "1.0.96" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "057d394a50403bcac12672b2b18fb387ab6d289d957dab67dd201875391e52f1" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "sharded-slab" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" -dependencies = [ - "lazy_static", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" - -[[package]] -name = "socket2" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" -dependencies = [ - "libc", - "winapi", -] - -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "syn" -version = "2.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a34fcf3e8b60f57e6a14301a2e916d323af98b0ea63c599441eec8558660c822" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tempfile" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9fbec84f381d5795b08656e4912bec604d162bff9291d6189a78f4c8ab87998" -dependencies = [ - "cfg-if", - "fastrand", - "redox_syscall 0.3.5", - "rustix", - "windows-sys 0.45.0", -] - -[[package]] -name = "thiserror" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.28.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c786bf8134e5a3a166db9b29ab8f48134739014a3eca7bc6bfa95d673b136f" -dependencies = [ - "autocfg", - "bytes", - "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys 0.48.0", -] - -[[package]] -name = "tokio-macros" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-attributes", - "tracing-core", -] - -[[package]] -name = "tracing-attributes" -version = "0.1.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f57e3ca2a01450b1a921183a9c9cbfda207fd822cef4ccb00a65402cbba7a74" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.15", -] - -[[package]] -name = "tracing-core" -version = "0.1.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" -dependencies = [ - "once_cell", - "valuable", -] - -[[package]] -name = "tracing-log" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" -dependencies = [ - "lazy_static", - "log", - "tracing-core", -] - -[[package]] -name = "tracing-subscriber" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" -dependencies = [ - "nu-ansi-term", - "sharded-slab", - "smallvec", - "thread_local", - "tracing-core", - "tracing-log", -] - -[[package]] -name = "try-lock" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unreachable" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" -dependencies = [ - "void", -] - -[[package]] -name = "url" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "utf8parse" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" - -[[package]] -name = "valuable" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" - -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - -[[package]] -name = "void" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" - -[[package]] -name = "want" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" -dependencies = [ - "log", - "try-lock", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.84" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d" - -[[package]] -name = "web-sys" -version = "0.3.61" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "windows-sys" -version = "0.42.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.45.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.0", -] - -[[package]] -name = "windows-targets" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" -dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", -] - -[[package]] -name = "windows-targets" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" -dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" - -[[package]] -name = "windows_i686_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" - -[[package]] -name = "windows_i686_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" - -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index d7ff5f7fb..59fa7ec63 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,10 +1,11 @@ [package] name = "rain-i9r-cli" -version = "0.0.1" -edition = "2021" -license = "CAL-1.0" description = "Rain Interpreter CLI." -homepage = "https://github.com/rainprotocol/rain.orderbook" +version.workspace = true +edition.workspace = true +license.workspace = true +author.workspace = true +homepage.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -19,4 +20,6 @@ tokio = { version = "1.28.0", features = ["full"] } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ['env-filter'] } alloy = { workspace = true } -rain-interpreter-env = { workspace = true } \ No newline at end of file + +[dev-dependencies] +rain_interpreter_test_fixtures = { workspace = true } \ No newline at end of file diff --git a/crates/cli/src/commands/eval.rs b/crates/cli/src/commands/eval.rs index b1cdfef88..a19a49988 100644 --- a/crates/cli/src/commands/eval.rs +++ b/crates/cli/src/commands/eval.rs @@ -112,10 +112,7 @@ impl Execute for Eval { #[cfg(test)] mod tests { use super::*; - - use rain_interpreter_env::{ - CI_DEPLOY_SEPOLIA_RPC_URL, CI_FORK_SEPOLIA_BLOCK_NUMBER, CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - }; + use rain_interpreter_test_fixtures::LocalEvm; #[test] fn test_parse_int_or_hex() { @@ -127,16 +124,17 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_execute() { + let local_evm = LocalEvm::new().await; let eval = Eval { output_path: None, forked_evm: NewForkedEvmCliArgs { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }, fork_eval_args: ForkEvalCliArgs { rainlang_string: r"_: add(10 2), _: context<0 0>(), _:context<0 1>();".into(), source_index: 0, - deployer: *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, + deployer: *local_evm.deployer.address(), namespace: "0x123".into(), context: vec!["0x06,99".into()], decode_errors: true, diff --git a/crates/dispair/Cargo.toml b/crates/dispair/Cargo.toml index 6369b04ce..db1debdf6 100644 --- a/crates/dispair/Cargo.toml +++ b/crates/dispair/Cargo.toml @@ -1,10 +1,11 @@ [package] name = "rain_interpreter_dispair" -version = "0.1.0" -edition = "2021" -license = "CAL-1.0" description = "Rain Interpreter Rust Crate." -homepage = "https://github.com/rainlanguage/rain.interpreter" +version.workspace = true +edition.workspace = true +license.workspace = true +author.workspace = true +homepage.workspace = true [dependencies] alloy-ethers-typecast = { workspace = true } diff --git a/crates/dispair/src/lib.rs b/crates/dispair/src/lib.rs index 199e93451..11d292a1b 100644 --- a/crates/dispair/src/lib.rs +++ b/crates/dispair/src/lib.rs @@ -76,6 +76,7 @@ mod tests { use alloy::primitives::Address; use ethers::providers::{MockProvider, MockResponse, Provider}; use serde_json::json; + use std::collections::HashMap; use tracing_subscriber::FmtSubscriber; #[tokio::test] @@ -108,7 +109,10 @@ mod tests { interpreter_address )))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let dispair = DISPair::from_deployer(deployer_address, client) .await .unwrap(); diff --git a/crates/env/Cargo.toml b/crates/env/Cargo.toml deleted file mode 100644 index d1d2e6954..000000000 --- a/crates/env/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "rain-interpreter-env" -version = "0.0.0" -edition.workspace = true -license.workspace = true -homepage.workspace = true - -[dependencies] -once_cell = { workspace = true } -alloy = { workspace = true } diff --git a/crates/env/src/lib.rs b/crates/env/src/lib.rs deleted file mode 100644 index 243ee0efb..000000000 --- a/crates/env/src/lib.rs +++ /dev/null @@ -1,25 +0,0 @@ -use alloy::primitives::{Address, BlockNumber}; -use once_cell::sync::Lazy; - -pub const CI_DEPLOY_SEPOLIA_RPC_URL: &str = env!( - "CI_DEPLOY_SEPOLIA_RPC_URL", - "$CI_DEPLOY_SEPOLIA_RPC_URL not set." -); - -pub static CI_FORK_SEPOLIA_DEPLOYER_ADDRESS: Lazy
= Lazy::new(|| { - env!( - "CI_FORK_SEPOLIA_DEPLOYER_ADDRESS", - "$CI_FORK_SEPOLIA_DEPLOYER_ADDRESS not set." - ) - .parse() - .unwrap() -}); - -pub static CI_FORK_SEPOLIA_BLOCK_NUMBER: Lazy = Lazy::new(|| { - env!( - "CI_FORK_SEPOLIA_BLOCK_NUMBER", - "$CI_FORK_SEPOLIA_BLOCK_NUMBER not set." - ) - .parse() - .unwrap() -}); diff --git a/crates/eval/Cargo.toml b/crates/eval/Cargo.toml index c58bce1cb..3d659fc60 100644 --- a/crates/eval/Cargo.toml +++ b/crates/eval/Cargo.toml @@ -1,8 +1,9 @@ [package] name = "rain-interpreter-eval" -version = "0.1.0" +version.workspace = true edition.workspace = true license.workspace = true +author.workspace = true homepage.workspace = true [dependencies] @@ -20,7 +21,10 @@ rain-error-decoding = { workspace = true } foundry-evm = { workspace = true } revm = { workspace = true } +[target.'cfg(target_family = "wasm")'.dependencies] +wasm-bindgen-utils = "0.0" + [dev-dependencies] tokio = { version = "1.28.0", features = ["full"] } tracing = { workspace = true } -rain-interpreter-env = { workspace = true } +rain_interpreter_test_fixtures = { workspace = true } diff --git a/crates/eval/src/error.rs b/crates/eval/src/error.rs index b2a6d2d40..f9230c7b9 100644 --- a/crates/eval/src/error.rs +++ b/crates/eval/src/error.rs @@ -1,5 +1,7 @@ use alloy::primitives::ruint::FromUintError; #[cfg(not(target_family = "wasm"))] +use foundry_evm::backend::DatabaseError; +#[cfg(not(target_family = "wasm"))] use foundry_evm::executors::RawCallResult; use rain_error_decoding::{AbiDecodeFailedErrors, AbiDecodedErrorType}; use thiserror::Error; @@ -23,6 +25,23 @@ pub enum ForkCallError { U64FromUint256(#[from] FromUintError), #[error(transparent)] Eyre(#[from] eyre::Report), + #[error("Replay transaction error: {:#?}", .0)] + ReplayTransactionError(ReplayTransactionError), +} + +#[derive(Debug, Error)] +pub enum ReplayTransactionError { + #[error("Transaction not found for hash {0} and fork url {1}")] + TransactionNotFound(String, String), + #[error("No active fork found")] + NoActiveFork, + #[cfg(not(target_family = "wasm"))] + #[error("Database error for hash {0} and fork url {1}: {2}")] + DatabaseError(String, String, DatabaseError), + #[error("No block number found in transaction for hash {0} and fork url {1}")] + NoBlockNumberFound(String, String), + #[error("No from address found in transaction for hash {0} and fork url {1}")] + NoFromAddressFound(String, String), } #[cfg(not(target_family = "wasm"))] diff --git a/crates/eval/src/eval.rs b/crates/eval/src/eval.rs index 9dd08b047..2278f4221 100644 --- a/crates/eval/src/eval.rs +++ b/crates/eval/src/eval.rs @@ -134,22 +134,19 @@ impl Forker { #[cfg(test)] mod tests { - use alloy::primitives::utils::parse_ether; - use rain_interpreter_env::{ - CI_DEPLOY_SEPOLIA_RPC_URL, CI_FORK_SEPOLIA_BLOCK_NUMBER, CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - }; - - use std::sync::Arc; - use super::*; use crate::fork::NewForkedEvm; + use alloy::primitives::utils::parse_ether; + use rain_interpreter_test_fixtures::LocalEvm; + use std::sync::Arc; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_fork_parse() { - let deployer: Address = *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS; + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }; let fork = Forker::new_with_fork(args, None, None).await.unwrap(); let res = fork @@ -167,10 +164,11 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_fork_eval() { - let deployer: Address = *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS; + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_owned(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }; let fork = Forker::new_with_fork(args, None, None).await.unwrap(); let res = fork @@ -209,10 +207,11 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 10)] async fn test_fork_eval_parallel() { - let deployer: Address = *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS; + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }; let fork = Forker::new_with_fork(args, None, None).await.unwrap(); let fork = Arc::new(fork); // Wrap in Arc for shared ownership diff --git a/crates/eval/src/fork.rs b/crates/eval/src/fork.rs index 357b11260..bc1457264 100644 --- a/crates/eval/src/fork.rs +++ b/crates/eval/src/fork.rs @@ -1,4 +1,4 @@ -use crate::error::ForkCallError; +use crate::error::{ForkCallError, ReplayTransactionError}; use alloy::primitives::{Address, BlockNumber, U256}; use alloy::sol_types::SolCall; use foundry_evm::{ @@ -8,6 +8,7 @@ use foundry_evm::{ opts::EvmOpts, }; use rain_error_decoding::AbiDecodedErrorType; +use revm::primitives::{TxKind, B256}; use revm::{ interpreter::InstructionResult, primitives::{Address as Addr, Bytes, Env, HashSet, SpecId}, @@ -388,23 +389,123 @@ impl Forker { ) .map_err(|v| ForkCallError::ExecutorError(v.to_string())) } + + /// Replays a transaction from the forked EVM. + /// # Arguments + /// * `tx_hash` - The transaction hash. + /// # Returns + /// A result containing the raw call result. + pub async fn replay_transaction( + &mut self, + tx_hash: B256, + ) -> Result { + let fork_url = self + .executor + .backend() + .active_fork_url() + .unwrap_or("No fork url found".to_string()); + + // get the transaction + let shared_backend = &self + .executor + .backend() + .active_fork_db() + .ok_or(ForkCallError::ReplayTransactionError( + ReplayTransactionError::NoActiveFork, + ))? + .db; + let full_tx = shared_backend.get_transaction(tx_hash).map_err(|e| { + ForkCallError::ReplayTransactionError(ReplayTransactionError::DatabaseError( + tx_hash.to_string(), + fork_url.clone(), + e, + )) + })?; + + // get the block number from the transaction + let block_number = full_tx + .block_number + .ok_or(ForkCallError::ReplayTransactionError( + ReplayTransactionError::NoBlockNumberFound(tx_hash.to_string(), fork_url.clone()), + ))?; + + // get the block + let block = shared_backend.get_full_block(block_number).map_err(|e| { + ForkCallError::ReplayTransactionError(ReplayTransactionError::DatabaseError( + block_number.to_string(), + fork_url.clone(), + e, + )) + })?; + + // matching env to the env from the block the transaction is in + self.executor.env_mut().block.number = U256::from(block_number); + self.executor.env_mut().block.timestamp = U256::from(block.header.timestamp); + self.executor.env_mut().block.coinbase = block.header.miner; + self.executor.env_mut().block.difficulty = block.header.difficulty; + self.executor.env_mut().block.prevrandao = Some(block.header.mix_hash.unwrap_or_default()); + self.executor.env_mut().block.basefee = + U256::from(block.header.base_fee_per_gas.unwrap_or_default()); + self.executor.env_mut().block.gas_limit = U256::from(block.header.gas_limit); + + let _ = &self + .add_or_select( + NewForkedEvm { + fork_url: fork_url.clone(), + fork_block_number: Some(block_number - 1), + }, + None, + ) + .await; + + let active_fork_local_id = self + .executor + .backend() + .active_fork_id() + .ok_or(ForkCallError::ExecutorError("no active fork!".to_owned()))?; + + let mut journaled_state = JournaledState::new(SpecId::LATEST, HashSet::new()); + + let env = self.executor.env().clone(); + + // replay all transactions that came before + let tx = self.executor.backend_mut().replay_until( + active_fork_local_id, + env, + tx_hash, + &mut journaled_state, + )?; + + let res = match tx { + // if to field is None, it means the tx was a contract deployment, see 'revm::primitives::TxKind' + Some(tx) => match TxKind::from(tx.to) { + TxKind::Call(to) => self.call(tx.from.as_slice(), to.as_slice(), &tx.input)?, + TxKind::Create => self.call(tx.from.as_slice(), &[0u8; 20], &tx.input)?, + }, + None => { + return Err(ForkCallError::ReplayTransactionError( + ReplayTransactionError::TransactionNotFound(tx_hash.to_string(), fork_url), + )) + } + }; + + Ok(res) + } } #[cfg(test)] mod tests { - use crate::namespace::CreateNamespace; - use rain_interpreter_env::{ - CI_DEPLOY_SEPOLIA_RPC_URL, CI_FORK_SEPOLIA_BLOCK_NUMBER, CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - }; - use super::*; + use crate::namespace::CreateNamespace; + use alloy::eips::BlockNumberOrTag; use alloy::primitives::U256; - use alloy::sol; + use alloy::{providers::Provider, sol}; use rain_interpreter_bindings::{ - DeployerISP::{iParserCall, iStoreCall}, + DeployerISP::iParserCall, IInterpreterStoreV1::{getCall, setCall}, }; + use rain_interpreter_test_fixtures::LocalEvm; sol! { interface IERC20 { @@ -415,57 +516,40 @@ mod tests { function transferFrom(address from, address to, uint256 amount) external returns (bool); } } - const USDT_POLYGON: &str = "0xc2132d05d31c914a87c6611c10748aeb04b58e8f"; - const USDT_BSC: &str = "0x55d398326f99059fF775485246999027B3197955"; - const POLYGON_FORK_NUMBER: u64 = 54697866; - const BSC_FORK_NUMBER: u64 = 40531873; - const POLYGON_FORK_URL: &str = "https://rpc.ankr.com/polygon"; - const BSC_FORK_URL: &str = "https://rpc.ankr.com/bsc"; - const BSC_ACC: &str = "0xee5B5B923fFcE93A870B3104b7CA09c3db80047A"; - const POLYGON_ACC: &str = "0xF977814e90dA44bFA03b6295A0616a897441aceC"; #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_forker_read() { + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }; let forker = Forker::new_with_fork(args, None, None).await.unwrap(); let from_address = Address::default(); - let to_address: Address = *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS; + let to_address = deployer; let call = iParserCall {}; let result = forker .alloy_call(from_address, to_address, call, false) .await .unwrap(); let parser_address = result.typed_return._0; - let expected_address = "0xf14e09601a47552de6abd3a0b165607fafd2b5ba" - .parse::
() - .unwrap(); + let expected_address = *local_evm.parser.address(); assert_eq!(parser_address, expected_address); } #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_forker_write() { + let local_evm = LocalEvm::new().await; let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: None, }; let mut forker = Forker::new_with_fork(args, None, None).await.unwrap(); let from_address = Address::repeat_byte(0x02); - let store_call = iStoreCall {}; - let store_result = forker - .alloy_call( - from_address, - *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - store_call, - false, - ) - .await - .unwrap(); - let store_address: Address = store_result.typed_return._0; + let store_address = *local_evm.store.address(); let namespace = U256::from(1); let key = U256::from(3); @@ -506,16 +590,19 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_multi_fork_read_write_switch_reset() -> Result<(), ForkCallError> { + let local_evm1 = LocalEvm::new_with_tokens(1).await; + let local_evm1_token = *local_evm1.tokens[0].address(); + let local_evm1_token_holder = local_evm1.anvil.addresses()[0]; let args = NewForkedEvm { - fork_url: POLYGON_FORK_URL.to_owned(), - fork_block_number: Some(POLYGON_FORK_NUMBER), + fork_url: local_evm1.url(), + fork_block_number: None, }; let mut forker = Forker::new_with_fork(args, None, None).await.unwrap(); let from_address = Address::default(); - let to_address: Address = USDT_POLYGON.parse::
().unwrap(); + let to_address = local_evm1_token; let call = IERC20::balanceOfCall { - account: POLYGON_ACC.parse::
().unwrap(), + account: local_evm1_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -524,8 +611,8 @@ mod tests { let old_balance = result.typed_return._0; let polygon_old_balance = result.typed_return._0; - let from_address = POLYGON_ACC.parse::
().unwrap(); - let to_address: Address = USDT_POLYGON.parse::
().unwrap(); + let from_address = local_evm1_token_holder; + let to_address = local_evm1_token; let send_amount = U256::from(0xffu64); let transfer_call = IERC20::transferCall { to: Address::repeat_byte(0x2), @@ -543,9 +630,9 @@ mod tests { .unwrap(); let from_address = Address::default(); - let to_address: Address = USDT_POLYGON.parse::
().unwrap(); + let to_address = local_evm1_token; let call = IERC20::balanceOfCall { - account: POLYGON_ACC.parse::
().unwrap(), + account: local_evm1_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -556,16 +643,19 @@ mod tests { let polygon_balance = new_balance; // switch fork + let local_evm2 = LocalEvm::new_with_tokens(1).await; + let local_evm2_token = *local_evm2.tokens[0].address(); + let local_evm2_token_holder = local_evm2.anvil.addresses()[0]; let args = NewForkedEvm { - fork_url: BSC_FORK_URL.to_owned(), - fork_block_number: Some(BSC_FORK_NUMBER), + fork_url: local_evm2.url(), + fork_block_number: None, }; forker.add_or_select(args, None).await?; let from_address = Address::default(); - let to_address: Address = USDT_BSC.parse::
().unwrap(); + let to_address = local_evm2_token; let call = IERC20::balanceOfCall { - account: BSC_ACC.parse::
().unwrap(), + account: local_evm2_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -573,9 +663,9 @@ mod tests { .unwrap(); let old_balance = result.typed_return._0; - let from_address = BSC_ACC.parse::
().unwrap(); - let to_address: Address = USDT_BSC.parse::
().unwrap(); - let send_amount = U256::from(0xffffffffu64); + let from_address = local_evm2_token_holder; + let to_address = local_evm2_token; + let send_amount = U256::from(0xffu64); let transfer_call = IERC20::transferCall { to: Address::repeat_byte(0x2), amount: send_amount, @@ -592,9 +682,9 @@ mod tests { .unwrap(); let from_address = Address::default(); - let to_address: Address = USDT_BSC.parse::
().unwrap(); + let to_address = local_evm2_token; let call = IERC20::balanceOfCall { - account: BSC_ACC.parse::
().unwrap(), + account: local_evm2_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -603,17 +693,17 @@ mod tests { let new_balance = result.typed_return._0; assert_eq!(new_balance, old_balance - send_amount); - // switch fork + // switch back to fork1 let args = NewForkedEvm { - fork_url: POLYGON_FORK_URL.to_owned(), - fork_block_number: Some(POLYGON_FORK_NUMBER), + fork_url: local_evm1.url(), + fork_block_number: None, }; forker.add_or_select(args, None).await?; let from_address = Address::default(); - let to_address: Address = USDT_POLYGON.parse::
().unwrap(); + let to_address = local_evm1_token; let call = IERC20::balanceOfCall { - account: POLYGON_ACC.parse::
().unwrap(), + account: local_evm1_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -623,9 +713,9 @@ mod tests { assert_eq!(balance, polygon_balance); // reset fork - forker.roll_fork(Some(POLYGON_FORK_NUMBER), None)?; + forker.roll_fork(None, None)?; let call = IERC20::balanceOfCall { - account: POLYGON_ACC.parse::
().unwrap(), + account: local_evm1_token_holder, }; let result = forker .alloy_call(from_address, to_address, call, false) @@ -640,27 +730,54 @@ mod tests { #[tokio::test(flavor = "multi_thread", worker_threads = 1)] async fn test_fork_rolls() { // we need to roll the fork forwards and check that the env block number is updated + let local_evm = LocalEvm::new().await; + let block_number = local_evm.provider.get_block_number().await.unwrap() - 2; let args = NewForkedEvm { - fork_url: POLYGON_FORK_URL.to_owned(), - fork_block_number: Some(POLYGON_FORK_NUMBER), + fork_url: local_evm.url(), + fork_block_number: Some(block_number), }; let mut forker = Forker::new_with_fork(args, None, None).await.unwrap(); // check the env block number is the same as the fork block number - assert_eq!( - forker.executor.env().block.number, - U256::from(POLYGON_FORK_NUMBER) - ); + assert_eq!(forker.executor.env().block.number, U256::from(block_number)); // roll the fork forwards by 1 block - forker - .roll_fork(Some(POLYGON_FORK_NUMBER + 1), None) - .unwrap(); + forker.roll_fork(Some(block_number + 1), None).unwrap(); // check the env block number is updated assert_eq!( forker.executor.env().block.number, - U256::from(POLYGON_FORK_NUMBER + 1) + U256::from(block_number + 1) ); } + + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_fork_replay() { + let local_evm = LocalEvm::new().await; + let block_number = local_evm.provider.get_block_number().await.unwrap(); + let tx_hash = local_evm + .provider + .get_block_by_number(BlockNumberOrTag::Number(block_number - 2), false) + .await + .unwrap() + .unwrap() + .transactions + .as_hashes() + .unwrap()[0]; + let mut forker = Forker::new_with_fork( + NewForkedEvm { + fork_url: local_evm.url(), + fork_block_number: None, + }, + None, + None, + ) + .await + .unwrap(); + + let replay_result = forker.replay_transaction(tx_hash).await.unwrap(); + + assert!(replay_result.env.tx.caller == local_evm.anvil.addresses()[0]); + assert!(replay_result.exit_reason.is_ok()); + } } diff --git a/crates/eval/src/lib.rs b/crates/eval/src/lib.rs index 56586abd6..8b509c90b 100644 --- a/crates/eval/src/lib.rs +++ b/crates/eval/src/lib.rs @@ -5,5 +5,4 @@ pub mod eval; #[cfg(not(target_family = "wasm"))] pub mod fork; pub mod namespace; -#[cfg(not(target_family = "wasm"))] pub mod trace; diff --git a/crates/eval/src/trace.rs b/crates/eval/src/trace.rs index 22c453f96..d96e61d67 100644 --- a/crates/eval/src/trace.rs +++ b/crates/eval/src/trace.rs @@ -1,305 +1,22 @@ -use crate::fork::ForkTypedReturn; -use alloy::primitives::{Address, U256}; -use rain_interpreter_bindings::IInterpreterV3::{eval3Call, eval3Return}; - -use thiserror::Error; - -pub const RAIN_TRACER_ADDRESS: &str = "0xF06Cd48c98d7321649dB7D8b2C396A81A2046555"; - -/// A struct representing a single trace from a Rain source. Intended to be decoded -/// from the calldata sent as part of a noop call by the Interpreter to the -/// non-existent tracer contract. -#[derive(Debug, Clone, PartialEq, Eq)] -pub struct RainSourceTrace { - pub parent_source_index: u16, - pub source_index: u16, - pub stack: Vec, -} - -impl RainSourceTrace { - fn from_data(data: &[u8]) -> Option { - if data.len() < 4 { - return None; - } - - // Parse parent and source indices from the next 4 bytes - let parent_source_index = u16::from_be_bytes([data[0], data[1]]); - let source_index = u16::from_be_bytes([data[2], data[3]]); - - // Initialize the stack vector - let mut stack = Vec::new(); - - // Start reading stack values after the indices, which is 4 bytes in from the current data slice - let mut i = 4; - while i + 32 <= data.len() { - // Parse each 32-byte segment as a U256 value - let value = U256::from_be_slice(&data[i..i + 32]); - stack.push(value); - i += 32; // Move to the next 32-byte segment - } - - Some(RainSourceTrace { - parent_source_index, - source_index, - stack, - }) - } -} - -/// A struct representing the result of a Rain eval call. Contains the stack, -/// writes, and traces. Can be constructed from a `ForkTypedReturn`. -#[derive(Debug, Clone)] -pub struct RainEvalResult { - pub reverted: bool, - pub stack: Vec, - pub writes: Vec, - pub traces: Vec, -} - -impl From> for RainEvalResult { - fn from(typed_return: ForkTypedReturn) -> Self { - let eval3Return { stack, writes } = typed_return.typed_return; - - let tracer_address = RAIN_TRACER_ADDRESS.parse::
().unwrap(); - let mut traces: Vec = typed_return - .raw - .traces - .unwrap() - .to_owned() - .into_nodes() - .iter() - .filter_map(|trace_node| { - if Address::from(trace_node.trace.address.into_array()) == tracer_address { - RainSourceTrace::from_data(&trace_node.trace.data) - } else { - None - } - }) - .collect(); - traces.reverse(); - - RainEvalResult { - reverted: typed_return.raw.reverted, - stack, - writes, - traces, - } - } -} - -#[derive(Error, Debug)] -pub enum TraceSearchError { - #[error("Unparseable trace path: {0}")] - BadTracePath(String), - #[error("Trace not found: {0}")] - TraceNotFound(String), -} - -impl RainEvalResult { - pub fn search_trace_by_path(&self, path: &str) -> Result { - let mut parts = path.split('.').collect::>(); - - if parts.len() < 2 { - return Err(TraceSearchError::BadTracePath(path.to_string())); - } - - let stack_index = parts - .pop() - .unwrap() - .parse::() - .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; - - let mut current_parent_index = parts[0] - .parse::() - .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; - let mut current_source_index = parts[0] - .parse::() - .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; - - for part in parts.iter().skip(1) { - let next_source_index = part - .parse::() - .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; - - if let Some(trace) = self.traces.iter().find(|t| { - t.parent_source_index == current_parent_index && t.source_index == next_source_index - }) { - current_parent_index = trace.parent_source_index; - current_source_index = trace.source_index; - } else { - return Err(TraceSearchError::TraceNotFound(format!( - "Trace with parent {}.{} not found", - current_parent_index, next_source_index - ))); - } - } - self.traces - .iter() - .find(|t| { - t.parent_source_index == current_parent_index - && t.source_index == current_source_index - }) - .ok_or_else(|| { - TraceSearchError::TraceNotFound(format!( - "Trace with parent {}.{} not found", - current_parent_index, current_source_index - )) - }) - .and_then(|trace| { - // Reverse the stack order to account for the last item being at index 0 - let reversed_stack_index = trace.stack.len().checked_sub(stack_index + 1).ok_or( - TraceSearchError::TraceNotFound(format!( - "Stack index {} out of bounds in trace {}.{}", - stack_index, current_parent_index, current_source_index - )), - )?; - - trace.stack.get(reversed_stack_index).cloned().ok_or( - TraceSearchError::TraceNotFound(format!( - "Reversed stack index {} not found in trace {}.{}", - reversed_stack_index, current_parent_index, current_source_index - )), - ) - }) - } -} - -#[cfg(test)] -mod tests { - use super::*; - use crate::eval::ForkEvalArgs; - use crate::fork::{Forker, NewForkedEvm}; - use alloy::primitives::utils::parse_ether; - use rain_interpreter_bindings::IInterpreterStoreV1::FullyQualifiedNamespace; - use rain_interpreter_env::{ - CI_DEPLOY_SEPOLIA_RPC_URL, CI_FORK_SEPOLIA_BLOCK_NUMBER, CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - }; - - #[tokio::test(flavor = "multi_thread", worker_threads = 1)] - async fn test_fork_trace() { - let deployer_address: Address = *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS; - let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), - }; - let fork = Forker::new_with_fork(args, None, None).await.unwrap(); - - let res = fork - .fork_eval(ForkEvalArgs { - rainlang_string: r" - a: add(1 2), - b: 2, - c: 4, - _: call<1>(1 2), - :set(1 2), - :set(3 4); - a b:, - c: call<2>(a b), - d: add(a b); - a b:, - c: mul(a b); - " - .into(), - source_index: 0, - deployer: deployer_address, - namespace: FullyQualifiedNamespace::default(), - context: vec![], - decode_errors: true, - }) - .await - .unwrap(); - - let rain_eval_result = RainEvalResult::from(res); - - // reverted - assert!(!rain_eval_result.reverted); - // stack - let expected_stack = vec_i32_to_u256(vec![3, 4, 2, 3]); - assert_eq!(rain_eval_result.stack, expected_stack); - - // storage writes - let expected_writes = vec_i32_to_u256(vec![3, 4, 1, 2]); - assert_eq!(rain_eval_result.writes, expected_writes); - - // stack traces - // 0 0 - let trace_0 = RainSourceTrace { - parent_source_index: 0, - source_index: 0, - stack: vec_i32_to_u256(vec![3, 4, 2, 3]), - }; - assert_eq!(rain_eval_result.traces[0], trace_0); - // 0 1 - let trace_1 = RainSourceTrace { - parent_source_index: 0, - source_index: 1, - stack: vec_i32_to_u256(vec![3, 2, 2, 1]), - }; - assert_eq!(rain_eval_result.traces[1], trace_1); - // 1 2 - let trace_2 = RainSourceTrace { - parent_source_index: 1, - source_index: 2, - stack: vec_i32_to_u256(vec![2, 2, 1]), - }; - assert_eq!(rain_eval_result.traces[2], trace_2); - } - - #[tokio::test(flavor = "multi_thread", worker_threads = 1)] - async fn test_search_trace_by_path() { - let args = NewForkedEvm { - fork_url: CI_DEPLOY_SEPOLIA_RPC_URL.to_string(), - fork_block_number: Some(*CI_FORK_SEPOLIA_BLOCK_NUMBER), - }; - let fork = Forker::new_with_fork(args, None, None).await.unwrap(); - - let res = fork - .fork_eval(ForkEvalArgs { - rainlang_string: r" - a: add(1 2), - b: 2, - c: 4, - _: call<1>(1 2); - a b:, - c: call<2>(a b), - d: add(a b); - a b:, - c: mul(a b); - " - .into(), - source_index: 0, - deployer: *CI_FORK_SEPOLIA_DEPLOYER_ADDRESS, - namespace: FullyQualifiedNamespace::default(), - context: vec![], - decode_errors: true, - }) - .await - .unwrap(); - - let rain_eval_result = RainEvalResult::from(res); - - // search_trace_by_path - let trace_0 = rain_eval_result.search_trace_by_path("0.1").unwrap(); - assert_eq!(trace_0, parse_ether("2").unwrap()); - let trace_1 = rain_eval_result.search_trace_by_path("0.1.3").unwrap(); - assert_eq!(trace_1, parse_ether("3").unwrap()); - let trace_2 = rain_eval_result.search_trace_by_path("0.1.2").unwrap(); - assert_eq!(trace_2, parse_ether("2").unwrap()); - - // test the various errors - // bad trace path - let result = rain_eval_result.search_trace_by_path("0"); - assert!(matches!(result, Err(TraceSearchError::BadTracePath(_)))); - let result = rain_eval_result.search_trace_by_path("0.1."); - assert!(matches!(result, Err(TraceSearchError::BadTracePath(_)))); - - let result = rain_eval_result.search_trace_by_path("0.1.12"); - assert!(matches!(result, Err(TraceSearchError::TraceNotFound(_)))); - } - - fn vec_i32_to_u256(vec: Vec) -> Vec { - vec.iter() - .map(|&x| parse_ether(&x.to_string()).unwrap()) - .collect() - } +use alloy::primitives::U256; +use serde::{Deserialize, Serialize}; +#[cfg(target_family = "wasm")] +use wasm_bindgen_utils::{impl_wasm_traits, prelude::*}; + +#[cfg(not(target_family = "wasm"))] +mod impls; +#[cfg(not(target_family = "wasm"))] +pub use impls::*; + +type RainStack = Vec; + +#[derive(Debug, Serialize, Deserialize)] +#[serde(rename_all = "camelCase")] +#[cfg_attr(target_family = "wasm", derive(Tsify))] +pub struct RainEvalResultsTable { + pub column_names: Vec, + #[cfg_attr(target_family = "wasm", tsify(type = "string[][]"))] + pub rows: Vec, } +#[cfg(target_family = "wasm")] +impl_wasm_traits!(RainEvalResultsTable); diff --git a/crates/eval/src/trace/impls.rs b/crates/eval/src/trace/impls.rs new file mode 100644 index 000000000..757c4748a --- /dev/null +++ b/crates/eval/src/trace/impls.rs @@ -0,0 +1,571 @@ +use super::*; +use crate::fork::ForkTypedReturn; +use alloy::primitives::{Address, U256}; +use foundry_evm::executors::RawCallResult; +use rain_interpreter_bindings::IInterpreterV3::{eval3Call, eval3Return}; +use std::ops::{Deref, DerefMut}; +use thiserror::Error; + +pub const RAIN_TRACER_ADDRESS: &str = "0xF06Cd48c98d7321649dB7D8b2C396A81A2046555"; + +#[derive(Error, Debug)] +pub enum RainEvalResultError { + #[error("Corrupt traces")] + CorruptTraces, +} + +/// A struct representing a single trace from a Rain source. Intended to be decoded +/// from the calldata sent as part of a noop call by the Interpreter to the +/// non-existent tracer contract. +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct RainSourceTrace { + pub parent_source_index: u16, + pub source_index: u16, + pub stack: RainStack, +} + +#[derive(Debug, Clone, PartialEq, Eq)] +pub struct RainSourceTraces { + pub traces: Vec, +} + +impl Deref for RainSourceTraces { + type Target = Vec; + + fn deref(&self) -> &Self::Target { + &self.traces + } +} + +impl DerefMut for RainSourceTraces { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.traces + } +} + +impl FromIterator for RainSourceTraces { + fn from_iter>(iter: I) -> Self { + RainSourceTraces { + traces: iter.into_iter().collect(), + } + } +} + +impl RainSourceTrace { + fn from_data(data: &[u8]) -> Option { + if data.len() < 4 { + return None; + } + + // Parse parent and source indices from the next 4 bytes + let parent_source_index = u16::from_be_bytes([data[0], data[1]]); + let source_index = u16::from_be_bytes([data[2], data[3]]); + + // Initialize the stack vector + let mut stack = Vec::new(); + + // Start reading stack values after the indices, which is 4 bytes in from the current data slice + let mut i = 4; + while i + 32 <= data.len() { + // Parse each 32-byte segment as a U256 value + let value = U256::from_be_slice(&data[i..i + 32]); + stack.push(value); + i += 32; // Move to the next 32-byte segment + } + + Some(RainSourceTrace { + parent_source_index, + source_index, + stack, + }) + } +} + +impl RainSourceTraces { + pub fn flatten(&self) -> RainStack { + let mut flattened_stack: RainStack = vec![]; + for trace in self.traces.iter() { + let mut stack = trace.stack.clone(); + stack.reverse(); + for stack_item in stack.iter() { + flattened_stack.push(*stack_item); + } + } + flattened_stack + } + pub fn flattened_path_names(&self) -> Result, RainEvalResultError> { + let mut path_names: Vec = vec![]; + let mut source_paths: Vec = vec![]; + + for trace in self.iter() { + let current_path = if trace.parent_source_index == trace.source_index { + format!("{}", trace.source_index) + } else { + source_paths + .iter() + .rev() + .find_map(|recent_path| { + recent_path.split('.').last().and_then(|last_part| { + if last_part == trace.parent_source_index.to_string() { + Some(format!("{}.{}", recent_path, trace.source_index)) + } else { + None + } + }) + }) + .unwrap_or(format!( + "{}?.{}", + trace.parent_source_index, trace.source_index + )) + }; + + for (index, _) in trace.stack.iter().enumerate() { + path_names.push(format!("{}.{}", current_path, index)); + } + + source_paths.push(current_path); + } + + Ok(path_names) + } +} + +/// A struct representing the result of a Rain eval call. Contains the stack, +/// writes, and traces. Can be constructed from a `ForkTypedReturn`. +#[derive(Debug, Clone)] +pub struct RainEvalResult { + pub reverted: bool, + pub stack: Vec, + pub writes: Vec, + pub traces: RainSourceTraces, +} + +#[derive(Debug, Clone)] +pub struct RainEvalResults { + pub results: Vec, +} + +impl From> for RainEvalResults { + fn from(results: Vec) -> Self { + RainEvalResults { results } + } +} + +impl Deref for RainEvalResults { + type Target = Vec; + + fn deref(&self) -> &Self::Target { + &self.results + } +} + +impl DerefMut for RainEvalResults { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.results + } +} + +impl RainEvalResults { + pub fn into_flattened_table(&self) -> Result { + let column_names = &self.results[0].traces.flattened_path_names()?; + let mut rows = Vec::new(); + for result in &self.results { + rows.push(result.traces.flatten()); + } + Ok(RainEvalResultsTable { + column_names: column_names.to_vec(), + rows, + }) + } +} + +impl From for RainEvalResult { + fn from(raw_call_result: RawCallResult) -> Self { + let tracer_address = RAIN_TRACER_ADDRESS.parse::
().unwrap(); + + let mut traces: RainSourceTraces = raw_call_result + .traces + .unwrap() + .to_owned() + .into_nodes() + .iter() + .filter_map(|trace_node| { + if Address::from(trace_node.trace.address.into_array()) == tracer_address { + RainSourceTrace::from_data(&trace_node.trace.data) + } else { + None + } + }) + .collect(); + traces.reverse(); + + RainEvalResult { + reverted: raw_call_result.reverted, + stack: vec![], + writes: vec![], + traces, + } + } +} + +impl From> for RainEvalResult { + fn from(typed_return: ForkTypedReturn) -> Self { + let eval3Return { stack, writes } = typed_return.typed_return; + + let res: RainEvalResult = typed_return.raw.into(); + + RainEvalResult { + reverted: res.reverted, + stack, + writes, + traces: res.traces, + } + } +} + +#[derive(Error, Debug)] +pub enum TraceSearchError { + #[error("Unparseable trace path: {0}")] + BadTracePath(String), + #[error("Trace not found: {0}")] + TraceNotFound(String), +} + +impl RainEvalResult { + pub fn search_trace_by_path(&self, path: &str) -> Result { + let mut parts = path.split('.').collect::>(); + + if parts.len() < 2 { + return Err(TraceSearchError::BadTracePath(path.to_string())); + } + + let stack_index = parts + .pop() + .unwrap() + .parse::() + .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; + + let mut current_parent_index = parts[0] + .parse::() + .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; + let mut current_source_index = parts[0] + .parse::() + .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; + + for part in parts.iter().skip(1) { + let next_source_index = part + .parse::() + .map_err(|_| TraceSearchError::BadTracePath(path.to_string()))?; + + if let Some(trace) = self.traces.iter().find(|t| { + t.parent_source_index == current_parent_index && t.source_index == next_source_index + }) { + current_parent_index = trace.parent_source_index; + current_source_index = trace.source_index; + } else { + return Err(TraceSearchError::TraceNotFound(format!( + "Trace with parent {}.{} not found", + current_parent_index, next_source_index + ))); + } + } + self.traces + .iter() + .find(|t| { + t.parent_source_index == current_parent_index + && t.source_index == current_source_index + }) + .ok_or_else(|| { + TraceSearchError::TraceNotFound(format!( + "Trace with parent {}.{} not found", + current_parent_index, current_source_index + )) + }) + .and_then(|trace| { + // Reverse the stack order to account for the last item being at index 0 + let reversed_stack_index = trace.stack.len().checked_sub(stack_index + 1).ok_or( + TraceSearchError::TraceNotFound(format!( + "Stack index {} out of bounds in trace {}.{}", + stack_index, current_parent_index, current_source_index + )), + )?; + + trace.stack.get(reversed_stack_index).cloned().ok_or( + TraceSearchError::TraceNotFound(format!( + "Reversed stack index {} not found in trace {}.{}", + reversed_stack_index, current_parent_index, current_source_index + )), + ) + }) + } +} + +#[cfg(test)] +mod tests { + use super::*; + use crate::eval::ForkEvalArgs; + use crate::fork::{Forker, NewForkedEvm}; + use alloy::primitives::utils::parse_ether; + use rain_interpreter_bindings::IInterpreterStoreV1::FullyQualifiedNamespace; + use rain_interpreter_test_fixtures::LocalEvm; + + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_fork_trace() { + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); + let args = NewForkedEvm { + fork_url: local_evm.url(), + fork_block_number: None, + }; + let fork = Forker::new_with_fork(args, None, None).await.unwrap(); + + let res = fork + .fork_eval(ForkEvalArgs { + rainlang_string: r" + a: add(1 2), + b: 2, + c: 4, + _: call<1>(1 2), + :set(1 2), + :set(3 4); + a b:, + c: call<2>(a b), + d: add(a b); + a b:, + c: mul(a b); + " + .into(), + source_index: 0, + deployer, + namespace: FullyQualifiedNamespace::default(), + context: vec![], + decode_errors: true, + }) + .await + .unwrap(); + + let rain_eval_result = RainEvalResult::from(res); + + // reverted + assert!(!rain_eval_result.reverted); + // stack + let expected_stack = vec_i32_to_u256(vec![3, 4, 2, 3]); + assert_eq!(rain_eval_result.stack, expected_stack); + + // storage writes + let expected_writes = vec_i32_to_u256(vec![3, 4, 1, 2]); + assert_eq!(rain_eval_result.writes, expected_writes); + + // stack traces + // 0 0 + let trace_0 = RainSourceTrace { + parent_source_index: 0, + source_index: 0, + stack: vec_i32_to_u256(vec![3, 4, 2, 3]), + }; + assert_eq!(rain_eval_result.traces[0], trace_0); + // 0 1 + let trace_1 = RainSourceTrace { + parent_source_index: 0, + source_index: 1, + stack: vec_i32_to_u256(vec![3, 2, 2, 1]), + }; + assert_eq!(rain_eval_result.traces[1], trace_1); + // 1 2 + let trace_2 = RainSourceTrace { + parent_source_index: 1, + source_index: 2, + stack: vec_i32_to_u256(vec![2, 2, 1]), + }; + assert_eq!(rain_eval_result.traces[2], trace_2); + } + + #[tokio::test(flavor = "multi_thread", worker_threads = 1)] + async fn test_search_trace_by_path() { + let local_evm = LocalEvm::new().await; + let deployer = *local_evm.deployer.address(); + let args = NewForkedEvm { + fork_url: local_evm.url(), + fork_block_number: None, + }; + let fork = Forker::new_with_fork(args, None, None).await.unwrap(); + + let res = fork + .fork_eval(ForkEvalArgs { + rainlang_string: r" + a: add(1 2), + b: 2, + c: 4, + _: call<1>(1 2); + a b:, + c: call<2>(a b), + d: add(a b); + a b:, + c: mul(a b); + " + .into(), + source_index: 0, + deployer, + namespace: FullyQualifiedNamespace::default(), + context: vec![], + decode_errors: true, + }) + .await + .unwrap(); + + let rain_eval_result = RainEvalResult::from(res); + + // search_trace_by_path + let trace_0 = rain_eval_result.search_trace_by_path("0.1").unwrap(); + assert_eq!(trace_0, parse_ether("2").unwrap()); + let trace_1 = rain_eval_result.search_trace_by_path("0.1.3").unwrap(); + assert_eq!(trace_1, parse_ether("3").unwrap()); + let trace_2 = rain_eval_result.search_trace_by_path("0.1.2").unwrap(); + assert_eq!(trace_2, parse_ether("2").unwrap()); + + // test the various errors + // bad trace path + let result = rain_eval_result.search_trace_by_path("0"); + assert!(matches!(result, Err(TraceSearchError::BadTracePath(_)))); + let result = rain_eval_result.search_trace_by_path("0.1."); + assert!(matches!(result, Err(TraceSearchError::BadTracePath(_)))); + + let result = rain_eval_result.search_trace_by_path("0.1.12"); + assert!(matches!(result, Err(TraceSearchError::TraceNotFound(_)))); + } + + #[test] + fn test_rain_source_trace_from_data() { + // stack items are 32 bytes each + let stack_items = [U256::from(1), U256::from(2), U256::from(3)]; + let stack_data: Vec = stack_items + .iter() + .flat_map(|x| x.to_be_bytes_vec()) + .collect(); + + let source_indices = [ + 0x00, 0x01, 0x00, 0x02, // parent_source_index: 1, source_index: 2 + ]; + + // concat source indices and stack data + let data: Vec = source_indices + .iter() + .chain(stack_data.iter()) + .copied() + .collect(); + + let trace = RainSourceTrace::from_data(&data).unwrap(); + + assert_eq!(trace.parent_source_index, 1); + assert_eq!(trace.source_index, 2); + assert_eq!(trace.stack.len(), 3); + assert_eq!(trace.stack[0], U256::from(1)); + } + + #[test] + fn test_rain_source_traces_deref() { + let trace1 = RainSourceTrace { + parent_source_index: 1, + source_index: 1, // Adjusted to have the same parent and source index for consistency + stack: vec![U256::from(1)], + }; + let trace2 = RainSourceTrace { + parent_source_index: 1, // Adjusted to match the parent_source_index + source_index: 2, + stack: vec![U256::from(2)], + }; + + let traces = RainSourceTraces { + traces: vec![trace1.clone(), trace2.clone()], + }; + + assert_eq!(traces[0], trace1); + assert_eq!(traces[1], trace2); + } + + #[test] + fn test_rain_source_traces_flatten() { + let trace1 = RainSourceTrace { + parent_source_index: 1, + source_index: 1, // Adjusted to match the test case + stack: vec![U256::from(1), U256::from(2)], + }; + let trace2 = RainSourceTrace { + parent_source_index: 1, // Adjusted to match the parent_source_index + source_index: 2, + stack: vec![U256::from(3)], + }; + + let traces = RainSourceTraces { + traces: vec![trace1, trace2], + }; + + let flattened_stack = traces.flatten(); + assert_eq!( + flattened_stack, + vec![U256::from(2), U256::from(1), U256::from(3)] + ); + } + + #[test] + fn test_rain_source_traces_flattened_path_names() { + let trace1 = RainSourceTrace { + parent_source_index: 1, + source_index: 1, // Adjusted to match the test case + stack: vec![U256::from(1), U256::from(2)], + }; + let trace2 = RainSourceTrace { + parent_source_index: 1, // Adjusted to match the parent_source_index + source_index: 2, + stack: vec![U256::from(3)], + }; + + let traces = RainSourceTraces { + traces: vec![trace1, trace2], + }; + + let path_names = traces.flattened_path_names().unwrap(); + assert_eq!(path_names, vec!["1.0", "1.1", "1.2.0"]); + } + + #[test] + fn test_rain_eval_result_into_flattened_table() { + let trace1 = RainSourceTrace { + parent_source_index: 1, + source_index: 1, // Adjusted to match the test case + stack: vec![U256::from(1), U256::from(2)], + }; + let trace2 = RainSourceTrace { + parent_source_index: 1, // Adjusted to match the parent_source_index + source_index: 2, + stack: vec![U256::from(3)], + }; + + let rain_eval_result = RainEvalResult { + reverted: false, + stack: vec![], + writes: vec![], + traces: RainSourceTraces { + traces: vec![trace1, trace2], + }, + }; + + let rain_eval_results = RainEvalResults { + results: vec![rain_eval_result], + }; + + let table = rain_eval_results.into_flattened_table().unwrap(); + assert_eq!(table.column_names, vec!["1.0", "1.1", "1.2.0"]); + assert_eq!(table.rows.len(), 1); + assert_eq!( + table.rows[0], + vec![U256::from(2), U256::from(1), U256::from(3)] + ); + } + + fn vec_i32_to_u256(vec: Vec) -> Vec { + vec.iter() + .map(|&x| parse_ether(&x.to_string()).unwrap()) + .collect() + } +} diff --git a/crates/parser/Cargo.toml b/crates/parser/Cargo.toml index 36e834c41..8c48e9353 100644 --- a/crates/parser/Cargo.toml +++ b/crates/parser/Cargo.toml @@ -1,10 +1,11 @@ [package] name = "rain_interpreter_parser" -version = "0.1.0" -edition = "2021" -license = "CAL-1.0" description = "Rain Interpreter Parser Rust Crate." -homepage = "https://github.com/rainlanguage/rain.interpreter" +version.workspace = true +edition.workspace = true +license.workspace = true +author.workspace = true +homepage.workspace = true [dependencies] alloy-ethers-typecast = { workspace = true } diff --git a/crates/parser/src/v1.rs b/crates/parser/src/v1.rs index ab3db193c..1a534ac78 100644 --- a/crates/parser/src/v1.rs +++ b/crates/parser/src/v1.rs @@ -90,6 +90,7 @@ mod tests { use super::*; use alloy::primitives::{Address, U256}; use ethers::providers::{MockProvider, MockResponse, Provider}; + use std::collections::HashMap; #[tokio::test] async fn test_from_dispair() { @@ -124,7 +125,10 @@ mod tests { .concat(), ))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let parser = ParserV1 { address: Address::repeat_byte(0x1), }; @@ -153,7 +157,10 @@ mod tests { .concat(), ))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let parser = ParserV1 { address: Address::repeat_byte(0x1), }; diff --git a/crates/parser/src/v2.rs b/crates/parser/src/v2.rs index 167a97aa6..2878acc3d 100644 --- a/crates/parser/src/v2.rs +++ b/crates/parser/src/v2.rs @@ -153,6 +153,7 @@ mod tests { use super::*; use alloy::primitives::Address; use ethers::providers::{MockProvider, MockResponse, Provider}; + use std::collections::HashMap; #[tokio::test] async fn test_from_dispair() { @@ -183,7 +184,10 @@ mod tests { .concat(), ))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let parser = ParserV2 { deployer_address: Address::repeat_byte(0x1), }; @@ -207,7 +211,10 @@ mod tests { .concat(), ))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let parser = ParserV2 { deployer_address: Address::repeat_byte(0x1), }; @@ -236,7 +243,10 @@ mod tests { .concat(), ))); - let client = ReadableClient::new(Provider::new(transport)); + let client = ReadableClient::new(HashMap::from([( + "provider".to_string(), + Provider::new(transport), + )])); let parser = ParserV2 { deployer_address: Address::repeat_byte(0x1), }; diff --git a/crates/test_fixtures/Cargo.toml b/crates/test_fixtures/Cargo.toml new file mode 100644 index 000000000..c2f1dc023 --- /dev/null +++ b/crates/test_fixtures/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "rain_interpreter_test_fixtures" +version.workspace = true +edition.workspace = true +license.workspace = true +author.workspace = true +homepage.workspace = true +publish = false + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +serde_json = { workspace = true } +alloy = { workspace = true, features = ["node-bindings", "sol-types", "rpc-types", "provider-http", "network", "contract", "signer-local"] } + +[target.'cfg(target_family = "wasm")'.dependencies] +getrandom = { version = "0.2.15", features = ["js", "js-sys"] } \ No newline at end of file diff --git a/crates/test_fixtures/src/lib.rs b/crates/test_fixtures/src/lib.rs new file mode 100644 index 000000000..23cb495f6 --- /dev/null +++ b/crates/test_fixtures/src/lib.rs @@ -0,0 +1,236 @@ +use alloy::{ + contract::CallBuilder, + network::{Ethereum, EthereumWallet}, + node_bindings::{Anvil, AnvilInstance}, + primitives::{utils::parse_units, Address, Bytes, U256}, + providers::{ + fillers::{FillProvider, JoinFill, RecommendedFiller, WalletFiller}, + Provider, ProviderBuilder, RootProvider, + }, + rpc::types::{TransactionReceipt, TransactionRequest}, + signers::local::PrivateKeySigner, + sol, + sol_types::SolCall, + transports::{ + http::{Client, Http}, + RpcError, TransportErrorKind, + }, +}; +use serde_json::value::RawValue; +use std::marker::PhantomData; + +sol!( + #![sol(all_derives = true, rpc = true)] + ERC20, "../../out/TestERC20.sol/TestERC20.json" +); + +sol!( + #![sol(all_derives = true, rpc = true)] + Interpreter, + "../../out/RainterpreterNPE2.sol/RainterpreterNPE2.json" +); + +sol!( + #![sol(all_derives = true, rpc = true)] + Store, + "../../out/RainterpreterStoreNPE2.sol/RainterpreterStoreNPE2.json" +); + +sol!( + #![sol(all_derives = true, rpc = true)] + Parser, + "../../out/RainterpreterParserNPE2.sol/RainterpreterParserNPE2.json" +); + +sol!( + #![sol(all_derives = true, rpc = true)] + Deployer, + "../../out/RainterpreterExpressionDeployerNPE2.sol/RainterpreterExpressionDeployerNPE2.json" +); + +// type aliases for LocalEvm provider type +pub type LocalEvmFillers = JoinFill>; +pub type LocalEvmProvider = + FillProvider>, Http, Ethereum>; + +/// A local evm instance that wraps an Anvil instance and provider with +/// its signers, and with rain contracts already deployed on it. +/// The first signer wallet is the main wallet that would sign any transactions +/// that dont specify a sender ('to' field) +pub struct LocalEvm { + /// The Anvil instance, ie the local blockchain + pub anvil: AnvilInstance, + + /// The alloy provider instance of this local blockchain + pub provider: LocalEvmProvider, + + /// Alloy interpreter contract instance deployed on this blockchain + pub interpreter: Interpreter::InterpreterInstance, LocalEvmProvider>, + + /// Alloy store contract instance deployed on this blockchain + pub store: Store::StoreInstance, LocalEvmProvider>, + + /// Alloy parser contract instance deployed on this blockchain + pub parser: Parser::ParserInstance, LocalEvmProvider>, + + /// Alloy expression deployer contract instance deployed on this blockchain + pub deployer: Deployer::DeployerInstance, LocalEvmProvider>, + + /// Array of alloy ERC20 contract instances deployed on this blockchain + pub tokens: Vec, LocalEvmProvider>>, + + /// All wallets of this local blockchain that can be used to perform transactions + /// the first wallet is the blockchain's default wallet, ie transactions that dont + /// explicitly specify a sender address will use this as the sender + pub signer_wallets: Vec, +} + +impl LocalEvm { + /// Instantiates this struct with rain contracts deployed and no ERC20 tokens + pub async fn new() -> Self { + let anvil = Anvil::new().try_spawn().unwrap(); + + // set up signers from anvil accounts + let mut signer_wallets = vec![]; + let mut default_signer = + EthereumWallet::from(PrivateKeySigner::from(anvil.keys()[0].clone())); + let other_signer_wallets: Vec = anvil.keys()[1..] + .iter() + .map(|v| EthereumWallet::from(PrivateKeySigner::from(v.clone()))) + .collect(); + + for s in &other_signer_wallets { + default_signer.register_signer(s.default_signer()) + } + signer_wallets.push(default_signer); + signer_wallets.extend(other_signer_wallets); + + // Create a provider with the wallet and fillers + let provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(signer_wallets[0].clone()) + .on_http(anvil.endpoint_url()); + + // provider.wallet_mut().register_signer(signer) + + // deploy rain contracts + let interpreter = Interpreter::deploy(provider.clone()).await.unwrap(); + let store = Store::deploy(provider.clone()).await.unwrap(); + let parser = Parser::deploy(provider.clone()).await.unwrap(); + let config = Deployer::RainterpreterExpressionDeployerNPE2ConstructionConfigV2 { + interpreter: *interpreter.address(), + parser: *parser.address(), + store: *store.address(), + }; + let deployer = Deployer::deploy(provider.clone(), config).await.unwrap(); + + Self { + anvil, + provider, + interpreter, + store, + parser, + deployer, + tokens: vec![], + signer_wallets, + } + } + + /// Instantiates with number of ERC20 tokens with 18 decimals. + /// Each token after being deployed will mint 1 milion tokens to the + /// default address, which is the first signer wallet of this instance + pub async fn new_with_tokens(tokens_count: u8) -> Self { + let mut local_evm = Self::new().await; + + // deploy tokens contracts and mint 1 milion of each for the default address (first signer wallet) + for i in 1..=tokens_count { + local_evm + .deploy_new_token( + &format!("Token{}", i), + &format!("Token{}", i), + 18, + parse_units("1_000_000", 18).unwrap().into(), + local_evm.anvil.addresses()[0], + ) + .await; + } + local_evm + } + + /// Get the local rpc url of the underlying anvil instance + pub fn url(&self) -> String { + self.anvil.endpoint() + } + + /// Deploys a new ERC20 token with the given arguments + pub async fn deploy_new_token( + &mut self, + name: &str, + symbol: &str, + decimals: u8, + supply: U256, + recipient: Address, + ) -> ERC20::ERC20Instance, LocalEvmProvider> { + let token = ERC20::deploy( + self.provider.clone(), + name.to_string(), + symbol.to_string(), + decimals, + recipient, + supply, + ) + .await + .unwrap(); + self.tokens.push(token.clone()); + token + } + + /// Sends a contract write transaction to the blockchain and returns the tx receipt + pub async fn send_contract_transaction( + &self, + contract_call: CallBuilder, &LocalEvmProvider, PhantomData>, + ) -> Result>> { + self.provider + .send_transaction(contract_call.into_transaction_request()) + .await? + .get_receipt() + .await + } + + /// Sends (write call) a raw transaction request to the blockchain and returns the tx receipt + pub async fn send_transaction( + &self, + tx: TransactionRequest, + ) -> Result>> { + self.provider + .send_transaction(tx) + .await? + .get_receipt() + .await + } + + /// Calls (readonly call) contract method and returns the decoded result + pub async fn call_contract( + &self, + contract_call: CallBuilder, &LocalEvmProvider, PhantomData>, + ) -> Result< + Result, + RpcError>, + > { + Ok(T::abi_decode_returns( + &self + .provider + .call(&contract_call.into_transaction_request()) + .await?, + true, + )) + } + + /// Calls (readonly call) a raw transaction and returns the result + pub async fn call( + &self, + tx: &TransactionRequest, + ) -> Result>> { + self.provider.call(tx).await + } +} diff --git a/flake.lock b/flake.lock index 07089efb9..e13e50b58 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -368,11 +368,11 @@ "solc": "solc_2" }, "locked": { - "lastModified": 1723043648, - "narHash": "sha256-DZCGdrjDRjjKF2BuPCqGb7H8guYA7uWsCeOT30tUWrk=", + "lastModified": 1728997542, + "narHash": "sha256-D/CtiI2B1GoAkhGc0Bxq0XPZItWSgBhTPlW//kW4Kqw=", "owner": "rainlanguage", "repo": "rainix", - "rev": "6baf112368cb17b44233b5fce6848aa0cc2d36d6", + "rev": "b2722bcc1856af6c925128962ff24fda1bbc2c82", "type": "github" }, "original": { diff --git a/foundry.toml b/foundry.toml index bc40f6ecc..811621989 100644 --- a/foundry.toml +++ b/foundry.toml @@ -16,7 +16,9 @@ solc = "0.8.25" # These settings should be used for snapshots optimizer = true -optimizer_runs = 1000000 +# this is a bit low, was set to 1000000 previously but this caused deployment +# code size cap to be hit. +optimizer_runs = 9000 bytecode_hash = "none" cbor_metadata = false diff --git a/lib/prb-math b/lib/prb-math index 77fa88eda..280fc5f77 160000 --- a/lib/prb-math +++ b/lib/prb-math @@ -1 +1 @@ -Subproject commit 77fa88eda4a4a91b3f3e9431df291292c26b6c71 +Subproject commit 280fc5f77e1b21b9c54013aac51966be33f4a410 diff --git a/lib/rain.chainlink b/lib/rain.chainlink deleted file mode 160000 index c9844b3f4..000000000 --- a/lib/rain.chainlink +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9844b3f49432d809f506fb104fe9ea6c7be7031 diff --git a/lib/rain.datacontract b/lib/rain.datacontract new file mode 160000 index 000000000..7faea1765 --- /dev/null +++ b/lib/rain.datacontract @@ -0,0 +1 @@ +Subproject commit 7faea1765475b0dc253155850c88ab1046bc794a diff --git a/lib/rain.interpreter.interface b/lib/rain.interpreter.interface index 20da616b9..28a5e0fc8 160000 --- a/lib/rain.interpreter.interface +++ b/lib/rain.interpreter.interface @@ -1 +1 @@ -Subproject commit 20da616b981d45578cd1c56fca234f19b3db9f5b +Subproject commit 28a5e0fc8df0f12f9fbe43c41e126a017cd3bbc6 diff --git a/lib/rain.intorastring b/lib/rain.intorastring index 33a88a9b6..6a715b645 160000 --- a/lib/rain.intorastring +++ b/lib/rain.intorastring @@ -1 +1 @@ -Subproject commit 33a88a9b623d0d6a98897085fd104d59997434b4 +Subproject commit 6a715b64534f41b9fefce09fdf47d24c1771c008 diff --git a/lib/rain.lib.memkv b/lib/rain.lib.memkv index 818f262f9..c713a7334 160000 --- a/lib/rain.lib.memkv +++ b/lib/rain.lib.memkv @@ -1 +1 @@ -Subproject commit 818f262f91ac4402d9c800d333ae512874bca6e5 +Subproject commit c713a7334b3e51cd4b18a2a8a5d5987f6912bc7f diff --git a/lib/rain.math.fixedpoint b/lib/rain.math.fixedpoint index f0d74ed3e..6f8f7f8c7 160000 --- a/lib/rain.math.fixedpoint +++ b/lib/rain.math.fixedpoint @@ -1 +1 @@ -Subproject commit f0d74ed3ef41f2a71fc43c99e81c3918b64e874b +Subproject commit 6f8f7f8c79fd23b00aa5b9bda1171712e200023c diff --git a/lib/rain.math.float b/lib/rain.math.float deleted file mode 160000 index 455a0f447..000000000 --- a/lib/rain.math.float +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 455a0f4472c7084b751ae062f2a243e6e18cb958 diff --git a/lib/rain.metadata b/lib/rain.metadata index 7d2ea7947..5941940fa 160000 --- a/lib/rain.metadata +++ b/lib/rain.metadata @@ -1 +1 @@ -Subproject commit 7d2ea7947fdb986d61c1b45065804d9e26d74508 +Subproject commit 5941940faea110ba9786fe2f66945aa0d5b66d27 diff --git a/lib/rain.sol.binmaskflag b/lib/rain.sol.binmaskflag new file mode 160000 index 000000000..ff4a939d6 --- /dev/null +++ b/lib/rain.sol.binmaskflag @@ -0,0 +1 @@ +Subproject commit ff4a939d67601de150842f427472f508cd6ceac5 diff --git a/lib/rain.sol.codegen b/lib/rain.sol.codegen index d0fbb765f..6769b168d 160000 --- a/lib/rain.sol.codegen +++ b/lib/rain.sol.codegen @@ -1 +1 @@ -Subproject commit d0fbb765f8861d3b5e5acf95dd8c873111191985 +Subproject commit 6769b168d4f3d4316d1c142a1a6a38460bcbab7e diff --git a/lib/sol.lib.binmaskflag b/lib/sol.lib.binmaskflag deleted file mode 160000 index 6ded2e717..000000000 --- a/lib/sol.lib.binmaskflag +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6ded2e7178524b7c5f5c0f9e54ea77a18aa55ea9 diff --git a/script/BuildAuthoringMeta.sol b/script/BuildAuthoringMeta.sol index 602508238..1ac067305 100644 --- a/script/BuildAuthoringMeta.sol +++ b/script/BuildAuthoringMeta.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Script} from "forge-std/Script.sol"; diff --git a/script/BuildPointers.sol b/script/BuildPointers.sol index 681d1bda9..a74b07e83 100644 --- a/script/BuildPointers.sol +++ b/script/BuildPointers.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Script} from "forge-std/Script.sol"; @@ -17,6 +18,7 @@ import { import {LibAllStandardOpsNP, AuthoringMetaV2} from "src/lib/op/LibAllStandardOpsNP.sol"; import {LibCodeGen} from "rain.sol.codegen/lib/LibCodeGen.sol"; import {LibFs} from "rain.sol.codegen/lib/LibFs.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; contract BuildPointers is Script { function buildRainterpreterNPE2Pointers() internal { @@ -44,7 +46,9 @@ contract BuildPointers is Script { address(parser), "RainterpreterParserNPE2", string.concat( - LibCodeGen.parseMetaConstantString(vm, LibAllStandardOpsNP.authoringMetaV2(), PARSE_META_BUILD_DEPTH), + LibGenParseMeta.parseMetaConstantString( + vm, LibAllStandardOpsNP.authoringMetaV2(), PARSE_META_BUILD_DEPTH + ), LibCodeGen.operandHandlerFunctionPointersConstantString(vm, parser), LibCodeGen.literalParserFunctionPointersConstantString(vm, parser) ) @@ -87,7 +91,7 @@ contract BuildPointers is Script { string.concat( string.concat( LibCodeGen.describedByMetaHashConstantString(vm, name), - LibCodeGen.parseMetaConstantString( + LibGenParseMeta.parseMetaConstantString( vm, LibRainterpreterReferenceExternNPE2.authoringMetaV2(), EXTERN_PARSE_META_BUILD_DEPTH ), LibCodeGen.subParserWordParsersConstantString(vm, extern), diff --git a/script/Deploy.sol b/script/Deploy.sol index b295eacfb..509969cca 100644 --- a/script/Deploy.sol +++ b/script/Deploy.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Script} from "forge-std/Script.sol"; diff --git a/src/abstract/BaseRainterpreterExternNPE2.sol b/src/abstract/BaseRainterpreterExternNPE2.sol index cd18dde2f..6762e9dd5 100644 --- a/src/abstract/BaseRainterpreterExternNPE2.sol +++ b/src/abstract/BaseRainterpreterExternNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/abstract/BaseRainterpreterSubParserNPE2.sol b/src/abstract/BaseRainterpreterSubParserNPE2.sol index f01134929..5ae3faad6 100644 --- a/src/abstract/BaseRainterpreterSubParserNPE2.sol +++ b/src/abstract/BaseRainterpreterSubParserNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/concrete/RainterpreterExpressionDeployerNPE2.sol b/src/concrete/RainterpreterExpressionDeployerNPE2.sol index 517b0596d..e7c393fea 100644 --- a/src/concrete/RainterpreterExpressionDeployerNPE2.sol +++ b/src/concrete/RainterpreterExpressionDeployerNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ERC165, IERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/concrete/RainterpreterNPE2.sol b/src/concrete/RainterpreterNPE2.sol index 7afc91db2..796b66a2d 100644 --- a/src/concrete/RainterpreterNPE2.sol +++ b/src/concrete/RainterpreterNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/concrete/RainterpreterParserNPE2.sol b/src/concrete/RainterpreterParserNPE2.sol index ad9379f44..dddd8cd11 100644 --- a/src/concrete/RainterpreterParserNPE2.sol +++ b/src/concrete/RainterpreterParserNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {IERC165, ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/concrete/RainterpreterStoreNPE2.sol b/src/concrete/RainterpreterStoreNPE2.sol index b8fa31a60..e579acc1f 100644 --- a/src/concrete/RainterpreterStoreNPE2.sol +++ b/src/concrete/RainterpreterStoreNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ERC165} from "openzeppelin-contracts/contracts/utils/introspection/ERC165.sol"; diff --git a/src/concrete/extern/RainterpreterReferenceExternNPE2.sol b/src/concrete/extern/RainterpreterReferenceExternNPE2.sol index 392c8bf48..0567faae7 100644 --- a/src/concrete/extern/RainterpreterReferenceExternNPE2.sol +++ b/src/concrete/extern/RainterpreterReferenceExternNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibConvert} from "rain.lib.typecast/LibConvert.sol"; diff --git a/src/error/ErrBitwise.sol b/src/error/ErrBitwise.sol index 5b7d34afc..d8e66d8cf 100644 --- a/src/error/ErrBitwise.sol +++ b/src/error/ErrBitwise.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/error/ErrDeploy.sol b/src/error/ErrDeploy.sol index 45d5de466..e0c280aa7 100644 --- a/src/error/ErrDeploy.sol +++ b/src/error/ErrDeploy.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/error/ErrExtern.sol b/src/error/ErrExtern.sol index 4d6b71547..42c211052 100644 --- a/src/error/ErrExtern.sol +++ b/src/error/ErrExtern.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/error/ErrIntegrity.sol b/src/error/ErrIntegrity.sol index 1caf6753d..bf34382af 100644 --- a/src/error/ErrIntegrity.sol +++ b/src/error/ErrIntegrity.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; /// @dev There are more entrypoints defined by the minimum stack outputs than diff --git a/src/error/ErrOpList.sol b/src/error/ErrOpList.sol index f89932ff9..dfb01374c 100644 --- a/src/error/ErrOpList.sol +++ b/src/error/ErrOpList.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/error/ErrParse.sol b/src/error/ErrParse.sol index 76b7e5259..bcb1d836f 100644 --- a/src/error/ErrParse.sol +++ b/src/error/ErrParse.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/error/ErrSubParse.sol b/src/error/ErrSubParse.sol index 93fe00daf..e9ce2e401 100644 --- a/src/error/ErrSubParse.sol +++ b/src/error/ErrSubParse.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// @dev When a subparser is not compatible with the main parser it MUST error diff --git a/src/generated/RainterpreterExpressionDeployerNPE2.pointers.sol b/src/generated/RainterpreterExpressionDeployerNPE2.pointers.sol index 10bed50fa..0cb256e9f 100644 --- a/src/generated/RainterpreterExpressionDeployerNPE2.pointers.sol +++ b/src/generated/RainterpreterExpressionDeployerNPE2.pointers.sol @@ -5,15 +5,16 @@ // needs the pointers file to exist so that it can compile, and the pointers // file needs the contract to exist so that it can be compiled. -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x120bb857e25b094e30d19b11f0bf73b80df656781d0e28d7e7150775a3eebdad); +bytes32 constant BYTECODE_HASH = bytes32(0xf90ce426fab9ce79f1dbc61fe0ff9d82c643788aedb45cc2d388ca087d238e08); /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xa06272c146368c8267529773d74e499d3d70b552938f29071e5cb2faf9e3c419); /// @dev The function pointers for the integrity check fns. bytes constant INTEGRITY_FUNCTION_POINTERS = - hex"0f4c0fca102f11a911b311b311bd11c611e11287128712e3135d136a11b311bd136a11b311bd11b311b311bd11a911a911a911a911a91374139913b311b3137411b311b3136a11bd11b311b3136a136a13bd13bd13bd13bd11b311bd13bd11a911bd11bd11bd11bd11b311bd11bd11bd11bd11bd13bd13bd13bd13bd11b311bd11bd11b311bd11bd11b311b311bd13bd13bd11bd13b3"; + hex"0f100f8e0ff3116d117711771181118a11a5124b124b12a71321132e11771181132e11771181117711771181116d116d116d116d116d1338135d13771177133811771177132e118111771177132e132e1381138113811381117711811381116d118111811181118111771181118111811181118113811381138113811177118111811177118111811177117711811381138111811377"; diff --git a/src/generated/RainterpreterNPE2.pointers.sol b/src/generated/RainterpreterNPE2.pointers.sol index 8197fd400..c21e4355d 100644 --- a/src/generated/RainterpreterNPE2.pointers.sol +++ b/src/generated/RainterpreterNPE2.pointers.sol @@ -5,15 +5,16 @@ // needs the pointers file to exist so that it can compile, and the pointers // file needs the contract to exist so that it can be compiled. -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0xfee767105c6c61d954e857509e83c39f1352e9ad804e9e9eb297493462c784ce); +bytes32 constant BYTECODE_HASH = bytes32(0x7894167cd5f4df41bb23f90dee96664c395674acae57aa73134cb62ae468f271); /// @dev The function pointers known to the interpreter for dynamic dispatch. /// By setting these as a constant they can be inlined into the interpreter /// and loaded at eval time for very low gas (~100) due to the compiler /// optimising it to a single `codecopy` to build the in memory bytes array. bytes constant OPCODE_FUNCTION_POINTERS = - hex"077c07cd080f09db0ac20ad40ae60b090b4b0b9d0bae0bbf0c610c9e0d5c0e0c0e900fd310fa0d5c11f6129813101349138213d113d1140a146f1543159615aa16031617162c164616511665167a16b216d9175917a717f51843185b187418c218f91907191519301945195d19761984199219a019ae19fc1a4a1a981ae61afe1afe1b151b431b431b5a1b891bde1bec1bec1c901d77"; + hex"075e079107b509450a0e0a200a320a550a790aad0abe0acf0b710b900c4e0cfe0d820ec50fec0c4e10e8118a1202121d1238124b124b126612ad138113d413e814231437144c146614711485149a14d214f9155b15a915f71645165d167616c416dd16eb16f9171417291741175a176817761784179217e0182e187c18ca18e218e218f919271927193e196d19c219d019d01a561b3d"; diff --git a/src/generated/RainterpreterParserNPE2.pointers.sol b/src/generated/RainterpreterParserNPE2.pointers.sol index 209a2f0de..baea50327 100644 --- a/src/generated/RainterpreterParserNPE2.pointers.sol +++ b/src/generated/RainterpreterParserNPE2.pointers.sol @@ -5,11 +5,12 @@ // needs the pointers file to exist so that it can compile, and the pointers // file needs the contract to exist so that it can be compiled. -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x0913de8e0b36ea4fde9df417b198d01eba3e5cb78da1c5c6bbc50bea09444023); +bytes32 constant BYTECODE_HASH = bytes32(0xfc531ebfacb3a5ed1c077ffaf5858c3f854025359f618c9d1e6778e3caa10331); /// @dev The parse meta that is used to lookup word definitions. /// The structure of the parse meta is: @@ -38,11 +39,11 @@ uint8 constant PARSE_META_BUILD_DEPTH = 2; /// These positional indexes all map to the same indexes looked up in the parse /// meta. bytes constant OPERAND_HANDLER_FUNCTION_POINTERS = - hex"190019001900196519de19de19de1965196519001900190019de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de19de1a2319de1af51a2319de1af519de19de19001b5e19de19de"; + hex"15d615d615d6163b16b416b416b4163b163b15d615d615d616b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416b416f916b417cb16f916b417cb16b416b415d6183416b416b4"; /// @dev Every two bytes is a function pointer for a literal parser. /// Literal dispatches are determined by the first byte(s) of the literal /// rather than a full word lookup, and are done with simple conditional /// jumps as the possibilities are limited compared to the number of words we /// have. -bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"0f76123e1645171f"; +bytes constant LITERAL_PARSER_FUNCTION_POINTERS = hex"0e4a107c13931431"; diff --git a/src/generated/RainterpreterReferenceExternNPE2.pointers.sol b/src/generated/RainterpreterReferenceExternNPE2.pointers.sol index 99fd0d659..8cb65c2f6 100644 --- a/src/generated/RainterpreterReferenceExternNPE2.pointers.sol +++ b/src/generated/RainterpreterReferenceExternNPE2.pointers.sol @@ -5,11 +5,12 @@ // needs the pointers file to exist so that it can compile, and the pointers // file needs the contract to exist so that it can be compiled. -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; /// @dev Hash of the known bytecode. -bytes32 constant BYTECODE_HASH = bytes32(0x4247a5ea9bd8abcbe989b8ae09f2b9b29cafa521add389fc7b6f2b1ca3c49ecc); +bytes32 constant BYTECODE_HASH = bytes32(0x8fe6896679e741ffce41916bf39c9d968ae348b883ab4d241182168aafdb420d); /// @dev The hash of the meta that describes the contract. bytes32 constant DESCRIBED_BY_META_HASH = bytes32(0xadf71693c6ecf3fd560904bc46973d1b6e651440d15366673f9b3984749e7c16); diff --git a/src/generated/RainterpreterStoreNPE2.pointers.sol b/src/generated/RainterpreterStoreNPE2.pointers.sol index 8d6c8c5d9..b74f895f5 100644 --- a/src/generated/RainterpreterStoreNPE2.pointers.sol +++ b/src/generated/RainterpreterStoreNPE2.pointers.sol @@ -5,7 +5,8 @@ // needs the pointers file to exist so that it can compile, and the pointers // file needs the contract to exist so that it can be compiled. -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; /// @dev Hash of the known bytecode. diff --git a/src/lib/constants/ExpressionDeployerNPConstants.sol b/src/lib/constants/ExpressionDeployerNPConstants.sol index a04788424..ba2225edd 100644 --- a/src/lib/constants/ExpressionDeployerNPConstants.sol +++ b/src/lib/constants/ExpressionDeployerNPConstants.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; string constant EXPRESSION_DEPLOYER_NP_META_PATH = "meta/RainterpreterExpressionDeployerNPE2.rain.meta"; diff --git a/src/lib/eval/LibEvalNP.sol b/src/lib/eval/LibEvalNP.sol index 20733c74f..432cd6c16 100644 --- a/src/lib/eval/LibEvalNP.sol +++ b/src/lib/eval/LibEvalNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibInterpreterStateNP, InterpreterStateNP} from "../state/LibInterpreterStateNP.sol"; diff --git a/src/lib/extern/LibExtern.sol b/src/lib/extern/LibExtern.sol index c46b45790..dd97f9b64 100644 --- a/src/lib/extern/LibExtern.sol +++ b/src/lib/extern/LibExtern.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/extern/reference/literal/LibParseLiteralRepeat.sol b/src/lib/extern/reference/literal/LibParseLiteralRepeat.sol index 6f598702c..82fa01f48 100644 --- a/src/lib/extern/reference/literal/LibParseLiteralRepeat.sol +++ b/src/lib/extern/reference/literal/LibParseLiteralRepeat.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {LibParseLiteralDecimal} from "../../../parse/literal/LibParseLiteralDecimal.sol"; diff --git a/src/lib/extern/reference/op/LibExternOpContextCallingContractNPE2.sol b/src/lib/extern/reference/op/LibExternOpContextCallingContractNPE2.sol index a33a7840a..f2bbb2d24 100644 --- a/src/lib/extern/reference/op/LibExternOpContextCallingContractNPE2.sol +++ b/src/lib/extern/reference/op/LibExternOpContextCallingContractNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/extern/reference/op/LibExternOpContextRainlenNPE2.sol b/src/lib/extern/reference/op/LibExternOpContextRainlenNPE2.sol index 354eac69d..198934749 100644 --- a/src/lib/extern/reference/op/LibExternOpContextRainlenNPE2.sol +++ b/src/lib/extern/reference/op/LibExternOpContextRainlenNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/extern/reference/op/LibExternOpContextSenderNPE2.sol b/src/lib/extern/reference/op/LibExternOpContextSenderNPE2.sol index 382741543..b8c1f7f7b 100644 --- a/src/lib/extern/reference/op/LibExternOpContextSenderNPE2.sol +++ b/src/lib/extern/reference/op/LibExternOpContextSenderNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/extern/reference/op/LibExternOpIntIncNPE2.sol b/src/lib/extern/reference/op/LibExternOpIntIncNPE2.sol index a13933693..3f814a563 100644 --- a/src/lib/extern/reference/op/LibExternOpIntIncNPE2.sol +++ b/src/lib/extern/reference/op/LibExternOpIntIncNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/extern/reference/op/LibExternOpStackOperandNPE2.sol b/src/lib/extern/reference/op/LibExternOpStackOperandNPE2.sol index 3f1ef0485..7c6a3130e 100644 --- a/src/lib/extern/reference/op/LibExternOpStackOperandNPE2.sol +++ b/src/lib/extern/reference/op/LibExternOpStackOperandNPE2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/integrity/LibIntegrityCheckNP.sol b/src/lib/integrity/LibIntegrityCheckNP.sol index e18f90bfc..7ebd2fdb3 100644 --- a/src/lib/integrity/LibIntegrityCheckNP.sol +++ b/src/lib/integrity/LibIntegrityCheckNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/00/LibOpConstantNP.sol b/src/lib/op/00/LibOpConstantNP.sol index edd643bee..881abd7d9 100644 --- a/src/lib/op/00/LibOpConstantNP.sol +++ b/src/lib/op/00/LibOpConstantNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/00/LibOpContextNP.sol b/src/lib/op/00/LibOpContextNP.sol index 92062f114..ab710026c 100644 --- a/src/lib/op/00/LibOpContextNP.sol +++ b/src/lib/op/00/LibOpContextNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/00/LibOpExternNP.sol b/src/lib/op/00/LibOpExternNP.sol index f8efdac6c..f5a9da20f 100644 --- a/src/lib/op/00/LibOpExternNP.sol +++ b/src/lib/op/00/LibOpExternNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {NotAnExternContract} from "../../../error/ErrExtern.sol"; diff --git a/src/lib/op/00/LibOpStackNP.sol b/src/lib/op/00/LibOpStackNP.sol index d695b12e3..6f8364201 100644 --- a/src/lib/op/00/LibOpStackNP.sol +++ b/src/lib/op/00/LibOpStackNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/LibAllStandardOpsNP.sol b/src/lib/op/LibAllStandardOpsNP.sol index de257f80e..98898c540 100644 --- a/src/lib/op/LibAllStandardOpsNP.sol +++ b/src/lib/op/LibAllStandardOpsNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; import {BadDynamicLength} from "../../error/ErrOpList.sol"; diff --git a/src/lib/op/bitwise/LibOpBitwiseAndNP.sol b/src/lib/op/bitwise/LibOpBitwiseAndNP.sol index 9ec939ad6..58b4273b6 100644 --- a/src/lib/op/bitwise/LibOpBitwiseAndNP.sol +++ b/src/lib/op/bitwise/LibOpBitwiseAndNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/bitwise/LibOpBitwiseOrNP.sol b/src/lib/op/bitwise/LibOpBitwiseOrNP.sol index 913541243..f4373a291 100644 --- a/src/lib/op/bitwise/LibOpBitwiseOrNP.sol +++ b/src/lib/op/bitwise/LibOpBitwiseOrNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/bitwise/LibOpCtPopNP.sol b/src/lib/op/bitwise/LibOpCtPopNP.sol index b8ca791ac..5bca92a2e 100644 --- a/src/lib/op/bitwise/LibOpCtPopNP.sol +++ b/src/lib/op/bitwise/LibOpCtPopNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/bitwise/LibOpDecodeBitsNP.sol b/src/lib/op/bitwise/LibOpDecodeBitsNP.sol index 629bf8ed0..f64b83d33 100644 --- a/src/lib/op/bitwise/LibOpDecodeBitsNP.sol +++ b/src/lib/op/bitwise/LibOpDecodeBitsNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/bitwise/LibOpEncodeBitsNP.sol b/src/lib/op/bitwise/LibOpEncodeBitsNP.sol index 95181fc20..4b630e066 100644 --- a/src/lib/op/bitwise/LibOpEncodeBitsNP.sol +++ b/src/lib/op/bitwise/LibOpEncodeBitsNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ZeroLengthBitwiseEncoding, TruncatedBitwiseEncoding} from "../../../error/ErrBitwise.sol"; diff --git a/src/lib/op/bitwise/LibOpShiftBitsLeftNP.sol b/src/lib/op/bitwise/LibOpShiftBitsLeftNP.sol index 879686659..fa96803b5 100644 --- a/src/lib/op/bitwise/LibOpShiftBitsLeftNP.sol +++ b/src/lib/op/bitwise/LibOpShiftBitsLeftNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/bitwise/LibOpShiftBitsRightNP.sol b/src/lib/op/bitwise/LibOpShiftBitsRightNP.sol index 735077bf1..de5625612 100644 --- a/src/lib/op/bitwise/LibOpShiftBitsRightNP.sol +++ b/src/lib/op/bitwise/LibOpShiftBitsRightNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/call/LibOpCallNP.sol b/src/lib/op/call/LibOpCallNP.sol index db8e46c43..752fd8afd 100644 --- a/src/lib/op/call/LibOpCallNP.sol +++ b/src/lib/op/call/LibOpCallNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/crypto/LibOpHashNP.sol b/src/lib/op/crypto/LibOpHashNP.sol index 40377bc37..a55805cd7 100644 --- a/src/lib/op/crypto/LibOpHashNP.sol +++ b/src/lib/op/crypto/LibOpHashNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/erc20/LibOpERC20Allowance.sol b/src/lib/op/erc20/LibOpERC20Allowance.sol index 6e0171080..a677274a9 100644 --- a/src/lib/op/erc20/LibOpERC20Allowance.sol +++ b/src/lib/op/erc20/LibOpERC20Allowance.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; diff --git a/src/lib/op/erc20/LibOpERC20BalanceOf.sol b/src/lib/op/erc20/LibOpERC20BalanceOf.sol index 2923b0960..26f3a4680 100644 --- a/src/lib/op/erc20/LibOpERC20BalanceOf.sol +++ b/src/lib/op/erc20/LibOpERC20BalanceOf.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; diff --git a/src/lib/op/erc20/LibOpERC20TotalSupply.sol b/src/lib/op/erc20/LibOpERC20TotalSupply.sol index d118ec099..33b2ed205 100644 --- a/src/lib/op/erc20/LibOpERC20TotalSupply.sol +++ b/src/lib/op/erc20/LibOpERC20TotalSupply.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {IERC20} from "openzeppelin-contracts/contracts/interfaces/IERC20.sol"; diff --git a/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.sol b/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.sol index 9d60013f8..0d22f62e7 100644 --- a/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.sol +++ b/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; diff --git a/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.sol b/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.sol index 80c87bbdf..be8606424 100644 --- a/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.sol +++ b/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC20} from "openzeppelin-contracts/contracts/token/ERC20/IERC20.sol"; diff --git a/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.sol b/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.sol index 8b3963b34..544e5bf64 100644 --- a/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.sol +++ b/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {IERC20} from "openzeppelin-contracts/contracts/interfaces/IERC20.sol"; diff --git a/src/lib/op/erc5313/LibOpERC5313OwnerNP.sol b/src/lib/op/erc5313/LibOpERC5313OwnerNP.sol index 756996bfb..59638fb70 100644 --- a/src/lib/op/erc5313/LibOpERC5313OwnerNP.sol +++ b/src/lib/op/erc5313/LibOpERC5313OwnerNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.25; import {IERC5313} from "openzeppelin-contracts/contracts/interfaces/IERC5313.sol"; diff --git a/src/lib/op/erc721/LibOpERC721OwnerOf.sol b/src/lib/op/erc721/LibOpERC721OwnerOf.sol index 54d8d9dd7..9df7b54bd 100644 --- a/src/lib/op/erc721/LibOpERC721OwnerOf.sol +++ b/src/lib/op/erc721/LibOpERC721OwnerOf.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC721} from "openzeppelin-contracts/contracts/token/ERC721/IERC721.sol"; diff --git a/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.sol b/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.sol index a47c7d6b1..b6498da99 100644 --- a/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.sol +++ b/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IERC721} from "openzeppelin-contracts/contracts/token/ERC721/IERC721.sol"; diff --git a/src/lib/op/evm/LibOpBlockNumberNP.sol b/src/lib/op/evm/LibOpBlockNumberNP.sol index 822510f43..fdceed0db 100644 --- a/src/lib/op/evm/LibOpBlockNumberNP.sol +++ b/src/lib/op/evm/LibOpBlockNumberNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/evm/LibOpChainIdNP.sol b/src/lib/op/evm/LibOpChainIdNP.sol index 5b5b308b0..ad6cb7cf8 100644 --- a/src/lib/op/evm/LibOpChainIdNP.sol +++ b/src/lib/op/evm/LibOpChainIdNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/evm/LibOpMaxUint256NP.sol b/src/lib/op/evm/LibOpMaxUint256NP.sol index eca23a7df..cd2f4e672 100644 --- a/src/lib/op/evm/LibOpMaxUint256NP.sol +++ b/src/lib/op/evm/LibOpMaxUint256NP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/evm/LibOpTimestampNP.sol b/src/lib/op/evm/LibOpTimestampNP.sol index b06863263..d6aebc83c 100644 --- a/src/lib/op/evm/LibOpTimestampNP.sol +++ b/src/lib/op/evm/LibOpTimestampNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/logic/LibOpAnyNP.sol b/src/lib/op/logic/LibOpAnyNP.sol index 33405035e..b4b807b18 100644 --- a/src/lib/op/logic/LibOpAnyNP.sol +++ b/src/lib/op/logic/LibOpAnyNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpConditionsNP.sol b/src/lib/op/logic/LibOpConditionsNP.sol index 30fec5301..98303051c 100644 --- a/src/lib/op/logic/LibOpConditionsNP.sol +++ b/src/lib/op/logic/LibOpConditionsNP.sol @@ -1,11 +1,12 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; import {InterpreterStateNP} from "../../state/LibInterpreterStateNP.sol"; -import {LibIntOrAString, IntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {LibIntOrAString, IntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; /// @title LibOpConditionsNP /// @notice Opcode to return the first nonzero item on the stack up to the inputs diff --git a/src/lib/op/logic/LibOpEnsureNP.sol b/src/lib/op/logic/LibOpEnsureNP.sol index 66721d919..37cd64ea3 100644 --- a/src/lib/op/logic/LibOpEnsureNP.sol +++ b/src/lib/op/logic/LibOpEnsureNP.sol @@ -1,11 +1,12 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {InterpreterStateNP} from "../../state/LibInterpreterStateNP.sol"; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; -import {LibIntOrAString, IntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {LibIntOrAString, IntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; /// @title LibOpEnsureNP /// @notice Opcode to revert if the condition is zero. diff --git a/src/lib/op/logic/LibOpEqualToNP.sol b/src/lib/op/logic/LibOpEqualToNP.sol index e8a8b805d..2cecba012 100644 --- a/src/lib/op/logic/LibOpEqualToNP.sol +++ b/src/lib/op/logic/LibOpEqualToNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpEveryNP.sol b/src/lib/op/logic/LibOpEveryNP.sol index 1c523ceaa..3c8eed7f7 100644 --- a/src/lib/op/logic/LibOpEveryNP.sol +++ b/src/lib/op/logic/LibOpEveryNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/logic/LibOpGreaterThanNP.sol b/src/lib/op/logic/LibOpGreaterThanNP.sol index f9ab78502..dd71042b8 100644 --- a/src/lib/op/logic/LibOpGreaterThanNP.sol +++ b/src/lib/op/logic/LibOpGreaterThanNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.sol b/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.sol index 3df3d9a52..777edb5d5 100644 --- a/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.sol +++ b/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpIfNP.sol b/src/lib/op/logic/LibOpIfNP.sol index a40f76528..844f78edb 100644 --- a/src/lib/op/logic/LibOpIfNP.sol +++ b/src/lib/op/logic/LibOpIfNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpIsZeroNP.sol b/src/lib/op/logic/LibOpIsZeroNP.sol index b37669f64..f942aa3e5 100644 --- a/src/lib/op/logic/LibOpIsZeroNP.sol +++ b/src/lib/op/logic/LibOpIsZeroNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpLessThanNP.sol b/src/lib/op/logic/LibOpLessThanNP.sol index 118843401..a19464974 100644 --- a/src/lib/op/logic/LibOpLessThanNP.sol +++ b/src/lib/op/logic/LibOpLessThanNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/logic/LibOpLessThanOrEqualToNP.sol b/src/lib/op/logic/LibOpLessThanOrEqualToNP.sol index 25bc0893f..73381d2d9 100644 --- a/src/lib/op/logic/LibOpLessThanOrEqualToNP.sol +++ b/src/lib/op/logic/LibOpLessThanOrEqualToNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/LibOpAdd.sol b/src/lib/op/math/LibOpAdd.sol index cf1d193f7..aba0154a3 100644 --- a/src/lib/op/math/LibOpAdd.sol +++ b/src/lib/op/math/LibOpAdd.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/LibOpAvg.sol b/src/lib/op/math/LibOpAvg.sol index 7873560f8..0a72ebf2b 100644 --- a/src/lib/op/math/LibOpAvg.sol +++ b/src/lib/op/math/LibOpAvg.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, avg} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpCeil.sol b/src/lib/op/math/LibOpCeil.sol index 9eaa7a7b4..0a9356c79 100644 --- a/src/lib/op/math/LibOpCeil.sol +++ b/src/lib/op/math/LibOpCeil.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, ceil} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpDiv.sol b/src/lib/op/math/LibOpDiv.sol index 262f7755b..0c86d1174 100644 --- a/src/lib/op/math/LibOpDiv.sol +++ b/src/lib/op/math/LibOpDiv.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// Used for reference implementation so that we have two independent diff --git a/src/lib/op/math/LibOpE.sol b/src/lib/op/math/LibOpE.sol index 224e91934..ce982722b 100644 --- a/src/lib/op/math/LibOpE.sol +++ b/src/lib/op/math/LibOpE.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/op/math/LibOpExp.sol b/src/lib/op/math/LibOpExp.sol index d164017a2..1a27d0921 100644 --- a/src/lib/op/math/LibOpExp.sol +++ b/src/lib/op/math/LibOpExp.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, exp} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpExp2.sol b/src/lib/op/math/LibOpExp2.sol index 7176d8ec5..db882e2c3 100644 --- a/src/lib/op/math/LibOpExp2.sol +++ b/src/lib/op/math/LibOpExp2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, exp2} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpFloor.sol b/src/lib/op/math/LibOpFloor.sol index c2a5b5c4c..77fcbd27a 100644 --- a/src/lib/op/math/LibOpFloor.sol +++ b/src/lib/op/math/LibOpFloor.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, floor} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpFrac.sol b/src/lib/op/math/LibOpFrac.sol index d88b24416..4aa194bc1 100644 --- a/src/lib/op/math/LibOpFrac.sol +++ b/src/lib/op/math/LibOpFrac.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, frac} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpGm.sol b/src/lib/op/math/LibOpGm.sol index 04d862829..a7c1795fd 100644 --- a/src/lib/op/math/LibOpGm.sol +++ b/src/lib/op/math/LibOpGm.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, gm} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpHeadroom.sol b/src/lib/op/math/LibOpHeadroom.sol index aa2f004f7..41da4c885 100644 --- a/src/lib/op/math/LibOpHeadroom.sol +++ b/src/lib/op/math/LibOpHeadroom.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, frac} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpInv.sol b/src/lib/op/math/LibOpInv.sol index 6bfdb67dd..6501e730d 100644 --- a/src/lib/op/math/LibOpInv.sol +++ b/src/lib/op/math/LibOpInv.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, inv} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpLn.sol b/src/lib/op/math/LibOpLn.sol index 9bdbcc0a6..74e3e9081 100644 --- a/src/lib/op/math/LibOpLn.sol +++ b/src/lib/op/math/LibOpLn.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, ln} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpLog10.sol b/src/lib/op/math/LibOpLog10.sol index 348dbfa5c..72a48472f 100644 --- a/src/lib/op/math/LibOpLog10.sol +++ b/src/lib/op/math/LibOpLog10.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, log10} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpLog2.sol b/src/lib/op/math/LibOpLog2.sol index 16fb3d8a2..757007768 100644 --- a/src/lib/op/math/LibOpLog2.sol +++ b/src/lib/op/math/LibOpLog2.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, log2} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpMax.sol b/src/lib/op/math/LibOpMax.sol index 55daa3041..d35b620cf 100644 --- a/src/lib/op/math/LibOpMax.sol +++ b/src/lib/op/math/LibOpMax.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/LibOpMin.sol b/src/lib/op/math/LibOpMin.sol index 44903752b..52a6da78a 100644 --- a/src/lib/op/math/LibOpMin.sol +++ b/src/lib/op/math/LibOpMin.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/LibOpMod.sol b/src/lib/op/math/LibOpMod.sol index 40eafadc6..97b67124e 100644 --- a/src/lib/op/math/LibOpMod.sol +++ b/src/lib/op/math/LibOpMod.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/LibOpMul.sol b/src/lib/op/math/LibOpMul.sol index a7755fd28..c453efbc7 100644 --- a/src/lib/op/math/LibOpMul.sol +++ b/src/lib/op/math/LibOpMul.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// Used for reference implementation so that we have two independent diff --git a/src/lib/op/math/LibOpPow.sol b/src/lib/op/math/LibOpPow.sol index ed42df461..b9b90e837 100644 --- a/src/lib/op/math/LibOpPow.sol +++ b/src/lib/op/math/LibOpPow.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, pow} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpScale18.sol b/src/lib/op/math/LibOpScale18.sol index 2fe8ef89b..1f8c65dab 100644 --- a/src/lib/op/math/LibOpScale18.sol +++ b/src/lib/op/math/LibOpScale18.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibFixedPointDecimalScale} from "rain.math.fixedpoint/lib/LibFixedPointDecimalScale.sol"; diff --git a/src/lib/op/math/LibOpScale18Dynamic.sol b/src/lib/op/math/LibOpScale18Dynamic.sol index 485ad9af1..f68d4e852 100644 --- a/src/lib/op/math/LibOpScale18Dynamic.sol +++ b/src/lib/op/math/LibOpScale18Dynamic.sol @@ -1,8 +1,9 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibFixedPointDecimalScale, DECIMAL_MAX_SAFE_INT} from "rain.math.fixedpoint/lib/LibFixedPointDecimalScale.sol"; -import {MASK_2BIT} from "sol.lib.binmaskflag/Binary.sol"; +import {MASK_2BIT} from "rain.sol.binmaskflag/Binary.sol"; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; diff --git a/src/lib/op/math/LibOpScaleN.sol b/src/lib/op/math/LibOpScaleN.sol index 5b832feff..f7ab17bae 100644 --- a/src/lib/op/math/LibOpScaleN.sol +++ b/src/lib/op/math/LibOpScaleN.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibFixedPointDecimalScale} from "rain.math.fixedpoint/lib/LibFixedPointDecimalScale.sol"; diff --git a/src/lib/op/math/LibOpScaleNDynamic.sol b/src/lib/op/math/LibOpScaleNDynamic.sol index 999c5d669..d0349d65a 100644 --- a/src/lib/op/math/LibOpScaleNDynamic.sol +++ b/src/lib/op/math/LibOpScaleNDynamic.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; @@ -6,7 +7,7 @@ import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; import {InterpreterStateNP} from "../../state/LibInterpreterStateNP.sol"; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {LibFixedPointDecimalScale, DECIMAL_MAX_SAFE_INT} from "rain.math.fixedpoint/lib/LibFixedPointDecimalScale.sol"; -import {MASK_2BIT} from "sol.lib.binmaskflag/Binary.sol"; +import {MASK_2BIT} from "rain.sol.binmaskflag/Binary.sol"; import {LibParseLiteral} from "../../parse/literal/LibParseLiteral.sol"; /// @title LibOpScaleNDynamic diff --git a/src/lib/op/math/LibOpSnapToUnit.sol b/src/lib/op/math/LibOpSnapToUnit.sol index 9e08ac3b1..ac04f7411 100644 --- a/src/lib/op/math/LibOpSnapToUnit.sol +++ b/src/lib/op/math/LibOpSnapToUnit.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {InterpreterStateNP} from "../../state/LibInterpreterStateNP.sol"; diff --git a/src/lib/op/math/LibOpSqrt.sol b/src/lib/op/math/LibOpSqrt.sol index fee6a307f..8e8f8ccc0 100644 --- a/src/lib/op/math/LibOpSqrt.sol +++ b/src/lib/op/math/LibOpSqrt.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, sqrt} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/LibOpSub.sol b/src/lib/op/math/LibOpSub.sol index 490be7d50..f6982814e 100644 --- a/src/lib/op/math/LibOpSub.sol +++ b/src/lib/op/math/LibOpSub.sol @@ -1,11 +1,12 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; import {IntegrityCheckStateNP} from "../../integrity/LibIntegrityCheckNP.sol"; import {InterpreterStateNP} from "../../state/LibInterpreterStateNP.sol"; -import {SaturatingMath} from "rain.math.saturating/SaturatingMath.sol"; +import {LibSaturatingMath} from "rain.math.saturating/lib/LibSaturatingMath.sol"; /// @title LibOpSub /// @notice Opcode to subtract N integers. @@ -34,7 +35,7 @@ library LibOpSub { saturate := and(operand, 1) } function (uint256, uint256) internal pure returns (uint256) f = - saturate > 0 ? SaturatingMath.saturatingSub : sub; + saturate > 0 ? LibSaturatingMath.saturatingSub : sub; a = f(a, b); { diff --git a/src/lib/op/math/growth/LibOpExponentialGrowth.sol b/src/lib/op/math/growth/LibOpExponentialGrowth.sol index 3cb0b7ebc..afbeca5de 100644 --- a/src/lib/op/math/growth/LibOpExponentialGrowth.sol +++ b/src/lib/op/math/growth/LibOpExponentialGrowth.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, mul, pow} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/growth/LibOpLinearGrowth.sol b/src/lib/op/math/growth/LibOpLinearGrowth.sol index 936cf9236..d3450753c 100644 --- a/src/lib/op/math/growth/LibOpLinearGrowth.sol +++ b/src/lib/op/math/growth/LibOpLinearGrowth.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {UD60x18, mul, add} from "prb-math/UD60x18.sol"; diff --git a/src/lib/op/math/uint256/LibOpUint256Div.sol b/src/lib/op/math/uint256/LibOpUint256Div.sol index 4c593bb8a..e60a781ed 100644 --- a/src/lib/op/math/uint256/LibOpUint256Div.sol +++ b/src/lib/op/math/uint256/LibOpUint256Div.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/uint256/LibOpUint256Mul.sol b/src/lib/op/math/uint256/LibOpUint256Mul.sol index 7017591aa..a6930c6ce 100644 --- a/src/lib/op/math/uint256/LibOpUint256Mul.sol +++ b/src/lib/op/math/uint256/LibOpUint256Mul.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/math/uint256/LibOpUint256Pow.sol b/src/lib/op/math/uint256/LibOpUint256Pow.sol index 86c339d84..2fd76c5f7 100644 --- a/src/lib/op/math/uint256/LibOpUint256Pow.sol +++ b/src/lib/op/math/uint256/LibOpUint256Pow.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/op/store/LibOpGetNP.sol b/src/lib/op/store/LibOpGetNP.sol index 3a7e8cc6b..39026a294 100644 --- a/src/lib/op/store/LibOpGetNP.sol +++ b/src/lib/op/store/LibOpGetNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {MemoryKVKey, MemoryKVVal, MemoryKV, LibMemoryKV} from "rain.lib.memkv/lib/LibMemoryKV.sol"; diff --git a/src/lib/op/store/LibOpSetNP.sol b/src/lib/op/store/LibOpSetNP.sol index 5222dc3fa..c4f50c8f9 100644 --- a/src/lib/op/store/LibOpSetNP.sol +++ b/src/lib/op/store/LibOpSetNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {MemoryKV, MemoryKVKey, MemoryKVVal, LibMemoryKV} from "rain.lib.memkv/lib/LibMemoryKV.sol"; diff --git a/src/lib/parse/LibParse.sol b/src/lib/parse/LibParse.sol index 4b8295a18..3cbdb18b9 100644 --- a/src/lib/parse/LibParse.sol +++ b/src/lib/parse/LibParse.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibPointer, Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/src/lib/parse/LibParseCMask.sol b/src/lib/parse/LibParseCMask.sol index ee30d4380..e9e933a42 100644 --- a/src/lib/parse/LibParseCMask.sol +++ b/src/lib/parse/LibParseCMask.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; /// @dev Workaround for https://github.com/foundry-rs/foundry/issues/6572 diff --git a/src/lib/parse/LibParseError.sol b/src/lib/parse/LibParseError.sol index 9a1e7e518..d2796169e 100644 --- a/src/lib/parse/LibParseError.sol +++ b/src/lib/parse/LibParseError.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "./LibParseState.sol"; diff --git a/src/lib/parse/LibParseInterstitial.sol b/src/lib/parse/LibParseInterstitial.sol index e77bde855..b9c33135a 100644 --- a/src/lib/parse/LibParseInterstitial.sol +++ b/src/lib/parse/LibParseInterstitial.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {FSM_YANG_MASK, ParseState} from "./LibParseState.sol"; diff --git a/src/lib/parse/LibParseOperand.sol b/src/lib/parse/LibParseOperand.sol index 0f8c5146d..f4561ad35 100644 --- a/src/lib/parse/LibParseOperand.sol +++ b/src/lib/parse/LibParseOperand.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import { diff --git a/src/lib/parse/LibParsePragma.sol b/src/lib/parse/LibParsePragma.sol index 5cf19a447..796b88ac8 100644 --- a/src/lib/parse/LibParsePragma.sol +++ b/src/lib/parse/LibParsePragma.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibParseState, ParseState} from "./LibParseState.sol"; diff --git a/src/lib/parse/LibParseStackName.sol b/src/lib/parse/LibParseStackName.sol index 007fd6d26..b8fa2a9b0 100644 --- a/src/lib/parse/LibParseStackName.sol +++ b/src/lib/parse/LibParseStackName.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "./LibParseState.sol"; diff --git a/src/lib/parse/LibParseStackTracker.sol b/src/lib/parse/LibParseStackTracker.sol index 5e2a96216..858d0ecea 100644 --- a/src/lib/parse/LibParseStackTracker.sol +++ b/src/lib/parse/LibParseStackTracker.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseStackUnderflow} from "../../error/ErrParse.sol"; diff --git a/src/lib/parse/LibParseState.sol b/src/lib/parse/LibParseState.sol index 6db13cfa5..e6cad6692 100644 --- a/src/lib/parse/LibParseState.sol +++ b/src/lib/parse/LibParseState.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand, OPCODE_CONSTANT} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/src/lib/parse/LibSubParse.sol b/src/lib/parse/LibSubParse.sol index ede4cd33f..c6aec9be9 100644 --- a/src/lib/parse/LibSubParse.sol +++ b/src/lib/parse/LibSubParse.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibParseState, ParseState} from "./LibParseState.sol"; diff --git a/src/lib/parse/literal/LibParseLiteral.sol b/src/lib/parse/literal/LibParseLiteral.sol index bc96453d1..010a1e934 100644 --- a/src/lib/parse/literal/LibParseLiteral.sol +++ b/src/lib/parse/literal/LibParseLiteral.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import { diff --git a/src/lib/parse/literal/LibParseLiteralDecimal.sol b/src/lib/parse/literal/LibParseLiteralDecimal.sol index 6825ae69d..cb798687a 100644 --- a/src/lib/parse/literal/LibParseLiteralDecimal.sol +++ b/src/lib/parse/literal/LibParseLiteralDecimal.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "../LibParseState.sol"; diff --git a/src/lib/parse/literal/LibParseLiteralHex.sol b/src/lib/parse/literal/LibParseLiteralHex.sol index 04a1be08d..d436344a6 100644 --- a/src/lib/parse/literal/LibParseLiteralHex.sol +++ b/src/lib/parse/literal/LibParseLiteralHex.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "../LibParseState.sol"; diff --git a/src/lib/parse/literal/LibParseLiteralString.sol b/src/lib/parse/literal/LibParseLiteralString.sol index 3e737e051..6f15198ff 100644 --- a/src/lib/parse/literal/LibParseLiteralString.sol +++ b/src/lib/parse/literal/LibParseLiteralString.sol @@ -1,8 +1,9 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "../LibParseState.sol"; -import {IntOrAString, LibIntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {IntOrAString, LibIntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; import {UnclosedStringLiteral, StringTooLong} from "../../../error/ErrParse.sol"; import {CMASK_STRING_LITERAL_END, CMASK_STRING_LITERAL_TAIL} from "../LibParseCMask.sol"; import {LibParseError} from "../LibParseError.sol"; diff --git a/src/lib/parse/literal/LibParseLiteralSubParseable.sol b/src/lib/parse/literal/LibParseLiteralSubParseable.sol index fddfb24e3..55e11b4af 100644 --- a/src/lib/parse/literal/LibParseLiteralSubParseable.sol +++ b/src/lib/parse/literal/LibParseLiteralSubParseable.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {ParseState} from "../LibParseState.sol"; diff --git a/src/lib/state/LibInterpreterStateDataContractNP.sol b/src/lib/state/LibInterpreterStateDataContractNP.sol index 8f7994c7a..b5aedec12 100644 --- a/src/lib/state/LibInterpreterStateDataContractNP.sol +++ b/src/lib/state/LibInterpreterStateDataContractNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {MemoryKV} from "rain.lib.memkv/lib/LibMemoryKV.sol"; diff --git a/src/lib/state/LibInterpreterStateNP.sol b/src/lib/state/LibInterpreterStateNP.sol index e745b35cd..60b04c391 100644 --- a/src/lib/state/LibInterpreterStateNP.sol +++ b/src/lib/state/LibInterpreterStateNP.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/abstract/OpTest.sol b/test/abstract/OpTest.sol index 2168289d5..84bf49ca6 100644 --- a/test/abstract/OpTest.sol +++ b/test/abstract/OpTest.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test, stdError} from "forge-std/Test.sol"; diff --git a/test/abstract/OperandTest.sol b/test/abstract/OperandTest.sol index a357d4cdc..4eca48b2b 100644 --- a/test/abstract/OperandTest.sol +++ b/test/abstract/OperandTest.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/abstract/ParseLiteralTest.sol b/test/abstract/ParseLiteralTest.sol index 636226fec..b9b246f47 100644 --- a/test/abstract/ParseLiteralTest.sol +++ b/test/abstract/ParseLiteralTest.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/abstract/RainterpreterExpressionDeployerNPE2DeploymentTest.sol b/test/abstract/RainterpreterExpressionDeployerNPE2DeploymentTest.sol index 0d082a606..85cc7a085 100644 --- a/test/abstract/RainterpreterExpressionDeployerNPE2DeploymentTest.sol +++ b/test/abstract/RainterpreterExpressionDeployerNPE2DeploymentTest.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test, console2, stdError} from "forge-std/Test.sol"; @@ -24,7 +25,7 @@ import { } from "../../src/concrete/RainterpreterExpressionDeployerNPE2.sol"; import {LibAllStandardOpsNP} from "src/lib/op/LibAllStandardOpsNP.sol"; import {LibEncodedDispatch} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; /// @title RainterpreterExpressionDeployerNPD2DeploymentTest /// Tests that the RainterpreterExpressionDeployerNPE2 meta is correct. Also diff --git a/test/lib/etch/LibEtch.sol b/test/lib/etch/LibEtch.sol index aa44ae3e4..7c544387a 100644 --- a/test/lib/etch/LibEtch.sol +++ b/test/lib/etch/LibEtch.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; bytes constant INVALID_BYTECODE = hex"FE"; diff --git a/test/lib/integrity/LibIntegrityFnPointers.sol b/test/lib/integrity/LibIntegrityFnPointers.sol index 26816b6b7..f46d982b9 100644 --- a/test/lib/integrity/LibIntegrityFnPointers.sol +++ b/test/lib/integrity/LibIntegrityFnPointers.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.19; import "rain.lib.typecast/LibConvert.sol"; diff --git a/test/lib/literal/LibLiteralString.sol b/test/lib/literal/LibLiteralString.sol index b5f1902c0..517e49751 100644 --- a/test/lib/literal/LibLiteralString.sol +++ b/test/lib/literal/LibLiteralString.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {CMASK_STRING_LITERAL_TAIL, CMASK_HEX, CMASK_WHITESPACE} from "src/lib/parse/LibParseCMask.sol"; diff --git a/test/lib/operand/LibOperand.sol b/test/lib/operand/LibOperand.sol index 8d4887e52..207de6eac 100644 --- a/test/lib/operand/LibOperand.sol +++ b/test/lib/operand/LibOperand.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Operand} from "rain.interpreter.interface/interface/IInterpreterV3.sol"; diff --git a/test/lib/parse/LibMetaFixture.sol b/test/lib/parse/LibMetaFixture.sol index 46925b6fe..70ce888be 100644 --- a/test/lib/parse/LibMetaFixture.sol +++ b/test/lib/parse/LibMetaFixture.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {AuthoringMetaV2} from "rain.interpreter.interface/interface/deprecated/IParserV1View.sol"; @@ -8,7 +9,7 @@ import {LibParseState, ParseState} from "src/lib/parse/LibParseState.sol"; import {LibParseLiteral} from "src/lib/parse/literal/LibParseLiteral.sol"; import {LibConvert} from "rain.lib.typecast/LibConvert.sol"; import {LibAllStandardOpsNP} from "src/lib/op/LibAllStandardOpsNP.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; uint256 constant FIXTURE_OPS_LENGTH = 18; diff --git a/test/src/abstract/BaseRainterpreterExternNPE2.ierc165.t.sol b/test/src/abstract/BaseRainterpreterExternNPE2.ierc165.t.sol index 7baa95002..9ddf6574a 100644 --- a/test/src/abstract/BaseRainterpreterExternNPE2.ierc165.t.sol +++ b/test/src/abstract/BaseRainterpreterExternNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/abstract/BaseRainterpreterSubParserNPE2.compatibility.t.sol b/test/src/abstract/BaseRainterpreterSubParserNPE2.compatibility.t.sol index 71fac9d07..0c4b49f76 100644 --- a/test/src/abstract/BaseRainterpreterSubParserNPE2.compatibility.t.sol +++ b/test/src/abstract/BaseRainterpreterSubParserNPE2.compatibility.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/abstract/BaseRainterpreterSubParserNPE2.ierc165.t.sol b/test/src/abstract/BaseRainterpreterSubParserNPE2.ierc165.t.sol index e1682a487..90f6ddc92 100644 --- a/test/src/abstract/BaseRainterpreterSubParserNPE2.ierc165.t.sol +++ b/test/src/abstract/BaseRainterpreterSubParserNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterExpressionDeployerNPE2.deployCheck.t.sol b/test/src/concrete/RainterpreterExpressionDeployerNPE2.deployCheck.t.sol index 0da07ba88..b43f2caac 100644 --- a/test/src/concrete/RainterpreterExpressionDeployerNPE2.deployCheck.t.sol +++ b/test/src/concrete/RainterpreterExpressionDeployerNPE2.deployCheck.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterExpressionDeployerNPE2.describedByMetaV1.t.sol b/test/src/concrete/RainterpreterExpressionDeployerNPE2.describedByMetaV1.t.sol index f1cba3489..3efe00e57 100644 --- a/test/src/concrete/RainterpreterExpressionDeployerNPE2.describedByMetaV1.t.sol +++ b/test/src/concrete/RainterpreterExpressionDeployerNPE2.describedByMetaV1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterExpressionDeployerNPE2.ierc165.t.sol b/test/src/concrete/RainterpreterExpressionDeployerNPE2.ierc165.t.sol index 45e1a0846..09e33ded8 100644 --- a/test/src/concrete/RainterpreterExpressionDeployerNPE2.ierc165.t.sol +++ b/test/src/concrete/RainterpreterExpressionDeployerNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterExpressionDeployerNPE2.meta.t.sol b/test/src/concrete/RainterpreterExpressionDeployerNPE2.meta.t.sol index 08e29fb3a..fb074a435 100644 --- a/test/src/concrete/RainterpreterExpressionDeployerNPE2.meta.t.sol +++ b/test/src/concrete/RainterpreterExpressionDeployerNPE2.meta.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {RainterpreterExpressionDeployerNPE2DeploymentTest} from diff --git a/test/src/concrete/RainterpreterNPE2.ierc165.t.sol b/test/src/concrete/RainterpreterNPE2.ierc165.t.sol index 47ced9ad0..0b1a175a7 100644 --- a/test/src/concrete/RainterpreterNPE2.ierc165.t.sol +++ b/test/src/concrete/RainterpreterNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterNPE2.pointers.t.sol b/test/src/concrete/RainterpreterNPE2.pointers.t.sol index 02a94a5cb..a514a0a51 100644 --- a/test/src/concrete/RainterpreterNPE2.pointers.t.sol +++ b/test/src/concrete/RainterpreterNPE2.pointers.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterNPE2.t.sol b/test/src/concrete/RainterpreterNPE2.t.sol index 20f9b4702..f19733eaa 100644 --- a/test/src/concrete/RainterpreterNPE2.t.sol +++ b/test/src/concrete/RainterpreterNPE2.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterParserNPE2.ierc165.t.sol b/test/src/concrete/RainterpreterParserNPE2.ierc165.t.sol index acae64141..f3d430e55 100644 --- a/test/src/concrete/RainterpreterParserNPE2.ierc165.t.sol +++ b/test/src/concrete/RainterpreterParserNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterParserNPE2.parserPragma.t.sol b/test/src/concrete/RainterpreterParserNPE2.parserPragma.t.sol index a7fe7311e..d1342760a 100644 --- a/test/src/concrete/RainterpreterParserNPE2.parserPragma.t.sol +++ b/test/src/concrete/RainterpreterParserNPE2.parserPragma.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterParserNPE2.pointers.t.sol b/test/src/concrete/RainterpreterParserNPE2.pointers.t.sol index ec116f011..0e6893ed8 100644 --- a/test/src/concrete/RainterpreterParserNPE2.pointers.t.sol +++ b/test/src/concrete/RainterpreterParserNPE2.pointers.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; @@ -11,7 +12,7 @@ import { } from "src/concrete/RainterpreterParserNPE2.sol"; import {LibAllStandardOpsNP, AuthoringMetaV2} from "src/lib/op/LibAllStandardOpsNP.sol"; import {LibParseMeta} from "rain.interpreter.interface/lib/parse/LibParseMeta.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; contract RainterpreterParserNPE2PointersTest is Test { function testOperandHandlerFunctionPointers() external { diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.contextCallingContract.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.contextCallingContract.t.sol index 10b2f0d85..e98d71800 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.contextCallingContract.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.contextCallingContract.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.contextRainlen.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.contextRainlen.t.sol index 1f6f8a45e..61c30cf82 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.contextRainlen.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.contextRainlen.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.contextSender.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.contextSender.t.sol index 9812a9169..735be1b83 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.contextSender.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.contextSender.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.describedByMetaV1.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.describedByMetaV1.t.sol index 3c59ea9e4..0e6d43798 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.describedByMetaV1.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.describedByMetaV1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.ierc165.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.ierc165.t.sol index 44de71d68..019588b4e 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.ierc165.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.intInc.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.intInc.t.sol index 89feb5634..bdbf00240 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.intInc.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.intInc.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.pointers.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.pointers.t.sol index b6bcc1eb2..b5440d16c 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.pointers.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.pointers.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; @@ -14,7 +15,7 @@ import { OPERAND_HANDLER_FUNCTION_POINTERS } from "src/concrete/extern/RainterpreterReferenceExternNPE2.sol"; import {LibParseMeta} from "rain.interpreter.interface/lib/parse/LibParseMeta.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; contract RainterpreterReferenceExternNPE2PointersTest is Test { function testOpcodeFunctionPointers() external { diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.repeat.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.repeat.t.sol index 91b20532b..64e018538 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.repeat.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.repeat.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.stackOperand.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.stackOperand.t.sol index 6c8b45a4b..7c24c0621 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.stackOperand.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.stackOperand.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterReferenceExternNPE2.unknownWord.t.sol b/test/src/concrete/RainterpreterReferenceExternNPE2.unknownWord.t.sol index 2c73f8a1a..f0c873b53 100644 --- a/test/src/concrete/RainterpreterReferenceExternNPE2.unknownWord.t.sol +++ b/test/src/concrete/RainterpreterReferenceExternNPE2.unknownWord.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/concrete/RainterpreterStoreNPE2.ierc165.t.sol b/test/src/concrete/RainterpreterStoreNPE2.ierc165.t.sol index da3328275..0f34af600 100644 --- a/test/src/concrete/RainterpreterStoreNPE2.ierc165.t.sol +++ b/test/src/concrete/RainterpreterStoreNPE2.ierc165.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/concrete/RainterpreterStoreNPE2.t.sol b/test/src/concrete/RainterpreterStoreNPE2.t.sol index 69be0e298..4734537ea 100644 --- a/test/src/concrete/RainterpreterStoreNPE2.t.sol +++ b/test/src/concrete/RainterpreterStoreNPE2.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/eval/LibEvalNP.fBounds.t.sol b/test/src/lib/eval/LibEvalNP.fBounds.t.sol index 8a4ebf315..f6399ed3f 100644 --- a/test/src/lib/eval/LibEvalNP.fBounds.t.sol +++ b/test/src/lib/eval/LibEvalNP.fBounds.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/extern/LibExtern.codec.t.sol b/test/src/lib/extern/LibExtern.codec.t.sol index 1d7d6ff06..ae73c7c20 100644 --- a/test/src/lib/extern/LibExtern.codec.t.sol +++ b/test/src/lib/extern/LibExtern.codec.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/00/LibOpConstantNP.t.sol b/test/src/lib/op/00/LibOpConstantNP.t.sol index b5e378971..c66dc9622 100644 --- a/test/src/lib/op/00/LibOpConstantNP.t.sol +++ b/test/src/lib/op/00/LibOpConstantNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/00/LibOpContextNP.t.sol b/test/src/lib/op/00/LibOpContextNP.t.sol index 011f5e02c..8c9d0e015 100644 --- a/test/src/lib/op/00/LibOpContextNP.t.sol +++ b/test/src/lib/op/00/LibOpContextNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/00/LibOpExternNP.t.sol b/test/src/lib/op/00/LibOpExternNP.t.sol index 15312df2a..d4744a6b8 100644 --- a/test/src/lib/op/00/LibOpExternNP.t.sol +++ b/test/src/lib/op/00/LibOpExternNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/00/LibOpStackNP.t.sol b/test/src/lib/op/00/LibOpStackNP.t.sol index d3832df73..813d84bb6 100644 --- a/test/src/lib/op/00/LibOpStackNP.t.sol +++ b/test/src/lib/op/00/LibOpStackNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/src/lib/op/LibAllStandardOpsNP.t.sol b/test/src/lib/op/LibAllStandardOpsNP.t.sol index e84047726..4b5687acf 100644 --- a/test/src/lib/op/LibAllStandardOpsNP.t.sol +++ b/test/src/lib/op/LibAllStandardOpsNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import "forge-std/Test.sol"; diff --git a/test/src/lib/op/bitwise/LibOpBitwiseAndNP.t.sol b/test/src/lib/op/bitwise/LibOpBitwiseAndNP.t.sol index 1d4888ce4..d4d12bb1e 100644 --- a/test/src/lib/op/bitwise/LibOpBitwiseAndNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpBitwiseAndNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpBitwiseOrNP.t.sol b/test/src/lib/op/bitwise/LibOpBitwiseOrNP.t.sol index 5a1f67bdd..1ae681bc2 100644 --- a/test/src/lib/op/bitwise/LibOpBitwiseOrNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpBitwiseOrNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpCtPopNP.t.sol b/test/src/lib/op/bitwise/LibOpCtPopNP.t.sol index f195dfc82..e5a18c3ed 100644 --- a/test/src/lib/op/bitwise/LibOpCtPopNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpCtPopNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpDecodeBitsNP.t.sol b/test/src/lib/op/bitwise/LibOpDecodeBitsNP.t.sol index c3de69572..c3a6f02c5 100644 --- a/test/src/lib/op/bitwise/LibOpDecodeBitsNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpDecodeBitsNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpEncodeBitsNP.t.sol b/test/src/lib/op/bitwise/LibOpEncodeBitsNP.t.sol index f45ec459d..252cd97c4 100644 --- a/test/src/lib/op/bitwise/LibOpEncodeBitsNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpEncodeBitsNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpShiftBitsLeftNP.t.sol b/test/src/lib/op/bitwise/LibOpShiftBitsLeftNP.t.sol index 621719a50..234fb8196 100644 --- a/test/src/lib/op/bitwise/LibOpShiftBitsLeftNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpShiftBitsLeftNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/bitwise/LibOpShiftBitsRightNP.t.sol b/test/src/lib/op/bitwise/LibOpShiftBitsRightNP.t.sol index a715a128c..de1197a58 100644 --- a/test/src/lib/op/bitwise/LibOpShiftBitsRightNP.t.sol +++ b/test/src/lib/op/bitwise/LibOpShiftBitsRightNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/call/LibOpCallNP.t.sol b/test/src/lib/op/call/LibOpCallNP.t.sol index f11a8644e..aac61e666 100644 --- a/test/src/lib/op/call/LibOpCallNP.t.sol +++ b/test/src/lib/op/call/LibOpCallNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibEncodedDispatch} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; diff --git a/test/src/lib/op/crypto/LibOpHashNP.t.sol b/test/src/lib/op/crypto/LibOpHashNP.t.sol index a39426780..bb32cfd5a 100644 --- a/test/src/lib/op/crypto/LibOpHashNP.t.sol +++ b/test/src/lib/op/crypto/LibOpHashNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc20/LibOpERC20Allowance.t.sol b/test/src/lib/op/erc20/LibOpERC20Allowance.t.sol index 771b01647..4e8bc3f91 100644 --- a/test/src/lib/op/erc20/LibOpERC20Allowance.t.sol +++ b/test/src/lib/op/erc20/LibOpERC20Allowance.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc20/LibOpERC20BalanceOf.t.sol b/test/src/lib/op/erc20/LibOpERC20BalanceOf.t.sol index 34cb98f00..54fa317ac 100644 --- a/test/src/lib/op/erc20/LibOpERC20BalanceOf.t.sol +++ b/test/src/lib/op/erc20/LibOpERC20BalanceOf.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/erc20/LibOpERC20TotalSupply.t.sol b/test/src/lib/op/erc20/LibOpERC20TotalSupply.t.sol index 74e1840f7..a360fbb63 100644 --- a/test/src/lib/op/erc20/LibOpERC20TotalSupply.t.sol +++ b/test/src/lib/op/erc20/LibOpERC20TotalSupply.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.t.sol b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.t.sol index 96a82c56a..f5e17862c 100644 --- a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.t.sol +++ b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20Allowance.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.t.sol b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.t.sol index eac7fdb99..509a8700b 100644 --- a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.t.sol +++ b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20BalanceOf.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.t.sol b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.t.sol index f831ba9d4..7e4e4932b 100644 --- a/test/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.t.sol +++ b/test/src/lib/op/erc20/uint256/LibOpUint256ERC20TotalSupply.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc5313/LibOpERC5313OwnerNP.t.sol b/test/src/lib/op/erc5313/LibOpERC5313OwnerNP.t.sol index 3c1305863..36219b3a3 100644 --- a/test/src/lib/op/erc5313/LibOpERC5313OwnerNP.t.sol +++ b/test/src/lib/op/erc5313/LibOpERC5313OwnerNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc721/LibOpERC721OwnerOf.t.sol b/test/src/lib/op/erc721/LibOpERC721OwnerOf.t.sol index 013dd7c15..a09b193cb 100644 --- a/test/src/lib/op/erc721/LibOpERC721OwnerOf.t.sol +++ b/test/src/lib/op/erc721/LibOpERC721OwnerOf.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.t.sol b/test/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.t.sol index 244750490..f70da9826 100644 --- a/test/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.t.sol +++ b/test/src/lib/op/erc721/uint256/LibOpUint256ERC721BalanceOf.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/evm/LibOpBlockNumberNP.t.sol b/test/src/lib/op/evm/LibOpBlockNumberNP.t.sol index ce6021847..c2b0db178 100644 --- a/test/src/lib/op/evm/LibOpBlockNumberNP.t.sol +++ b/test/src/lib/op/evm/LibOpBlockNumberNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/evm/LibOpChainIdNP.t.sol b/test/src/lib/op/evm/LibOpChainIdNP.t.sol index 1470fa4a3..af5a15f2b 100644 --- a/test/src/lib/op/evm/LibOpChainIdNP.t.sol +++ b/test/src/lib/op/evm/LibOpChainIdNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/src/lib/op/evm/LibOpMaxUint256NP.t.sol b/test/src/lib/op/evm/LibOpMaxUint256NP.t.sol index b6b87cf38..214eb699b 100644 --- a/test/src/lib/op/evm/LibOpMaxUint256NP.t.sol +++ b/test/src/lib/op/evm/LibOpMaxUint256NP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/evm/LibOpTimestampNP.t.sol b/test/src/lib/op/evm/LibOpTimestampNP.t.sol index 036f6691a..aa2486294 100644 --- a/test/src/lib/op/evm/LibOpTimestampNP.t.sol +++ b/test/src/lib/op/evm/LibOpTimestampNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpAnyNP.t.sol b/test/src/lib/op/logic/LibOpAnyNP.t.sol index fd05e220d..62408c6eb 100644 --- a/test/src/lib/op/logic/LibOpAnyNP.t.sol +++ b/test/src/lib/op/logic/LibOpAnyNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Pointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/src/lib/op/logic/LibOpConditionsNP.t.sol b/test/src/lib/op/logic/LibOpConditionsNP.t.sol index 22356b4e3..f93a01efa 100644 --- a/test/src/lib/op/logic/LibOpConditionsNP.t.sol +++ b/test/src/lib/op/logic/LibOpConditionsNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; @@ -17,7 +18,7 @@ import { import {IInterpreterStoreV2} from "rain.interpreter.interface/interface/IInterpreterStoreV2.sol"; import {SignedContextV1} from "rain.interpreter.interface/interface/deprecated/IInterpreterCallerV2.sol"; import {LibEncodedDispatch} from "rain.interpreter.interface/lib/deprecated/caller/LibEncodedDispatch.sol"; -import {LibIntOrAString, IntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {LibIntOrAString, IntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; import {LibOperand} from "test/lib/operand/LibOperand.sol"; contract LibOpConditionsNPTest is OpTest { diff --git a/test/src/lib/op/logic/LibOpEnsureNP.t.sol b/test/src/lib/op/logic/LibOpEnsureNP.t.sol index 33317a851..591235a92 100644 --- a/test/src/lib/op/logic/LibOpEnsureNP.t.sol +++ b/test/src/lib/op/logic/LibOpEnsureNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, UnexpectedOperand} from "test/abstract/OpTest.sol"; @@ -13,7 +14,7 @@ import { FullyQualifiedNamespace } from "rain.interpreter.interface/interface/deprecated/IInterpreterV2.sol"; import {InterpreterStateNP} from "src/lib/state/LibInterpreterStateNP.sol"; -import {LibIntOrAString, IntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {LibIntOrAString, IntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; import {LibOperand} from "test/lib/operand/LibOperand.sol"; contract LibOpEnsureNPTest is OpTest { diff --git a/test/src/lib/op/logic/LibOpEqualToNP.t.sol b/test/src/lib/op/logic/LibOpEqualToNP.t.sol index 1dc771c26..d7ef8b77e 100644 --- a/test/src/lib/op/logic/LibOpEqualToNP.t.sol +++ b/test/src/lib/op/logic/LibOpEqualToNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpEveryNP.t.sol b/test/src/lib/op/logic/LibOpEveryNP.t.sol index 476eefa51..69dab718e 100644 --- a/test/src/lib/op/logic/LibOpEveryNP.t.sol +++ b/test/src/lib/op/logic/LibOpEveryNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpGreaterThanNP.t.sol b/test/src/lib/op/logic/LibOpGreaterThanNP.t.sol index cf154b6df..2280672f1 100644 --- a/test/src/lib/op/logic/LibOpGreaterThanNP.t.sol +++ b/test/src/lib/op/logic/LibOpGreaterThanNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.t.sol b/test/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.t.sol index 648af2ca7..c07705ac6 100644 --- a/test/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.t.sol +++ b/test/src/lib/op/logic/LibOpGreaterThanOrEqualToNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpIfNP.t.sol b/test/src/lib/op/logic/LibOpIfNP.t.sol index b7ad501d3..8341b2bae 100644 --- a/test/src/lib/op/logic/LibOpIfNP.t.sol +++ b/test/src/lib/op/logic/LibOpIfNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpIsZeroNP.t.sol b/test/src/lib/op/logic/LibOpIsZeroNP.t.sol index e159220d3..afeb67392 100644 --- a/test/src/lib/op/logic/LibOpIsZeroNP.t.sol +++ b/test/src/lib/op/logic/LibOpIsZeroNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpLessThanNP.t.sol b/test/src/lib/op/logic/LibOpLessThanNP.t.sol index f451254df..64b4c3117 100644 --- a/test/src/lib/op/logic/LibOpLessThanNP.t.sol +++ b/test/src/lib/op/logic/LibOpLessThanNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/logic/LibOpLessThanOrEqualToNP.t.sol b/test/src/lib/op/logic/LibOpLessThanOrEqualToNP.t.sol index 0fb5f7ff5..a29db4176 100644 --- a/test/src/lib/op/logic/LibOpLessThanOrEqualToNP.t.sol +++ b/test/src/lib/op/logic/LibOpLessThanOrEqualToNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpAvg.t.sol b/test/src/lib/op/math/LibOpAvg.t.sol index 8c98bfa32..ea33847e3 100644 --- a/test/src/lib/op/math/LibOpAvg.t.sol +++ b/test/src/lib/op/math/LibOpAvg.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpCeil.t.sol b/test/src/lib/op/math/LibOpCeil.t.sol index 251780e21..cdfc70fc7 100644 --- a/test/src/lib/op/math/LibOpCeil.t.sol +++ b/test/src/lib/op/math/LibOpCeil.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpDiv.t.sol b/test/src/lib/op/math/LibOpDiv.t.sol index ade1a2aa9..477d12777 100644 --- a/test/src/lib/op/math/LibOpDiv.t.sol +++ b/test/src/lib/op/math/LibOpDiv.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibPointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/src/lib/op/math/LibOpE.t.sol b/test/src/lib/op/math/LibOpE.t.sol index 9edf1400b..b14bb1e87 100644 --- a/test/src/lib/op/math/LibOpE.t.sol +++ b/test/src/lib/op/math/LibOpE.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpExp.t.sol b/test/src/lib/op/math/LibOpExp.t.sol index 7a224c422..708e374fa 100644 --- a/test/src/lib/op/math/LibOpExp.t.sol +++ b/test/src/lib/op/math/LibOpExp.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpExp2.t.sol b/test/src/lib/op/math/LibOpExp2.t.sol index c750c51f0..910411284 100644 --- a/test/src/lib/op/math/LibOpExp2.t.sol +++ b/test/src/lib/op/math/LibOpExp2.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpFloor.t.sol b/test/src/lib/op/math/LibOpFloor.t.sol index 66c0bb747..78ba72390 100644 --- a/test/src/lib/op/math/LibOpFloor.t.sol +++ b/test/src/lib/op/math/LibOpFloor.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpFrac.t.sol b/test/src/lib/op/math/LibOpFrac.t.sol index a38fc48d2..a710f225c 100644 --- a/test/src/lib/op/math/LibOpFrac.t.sol +++ b/test/src/lib/op/math/LibOpFrac.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpGm.t.sol b/test/src/lib/op/math/LibOpGm.t.sol index aeae0094c..0493250e5 100644 --- a/test/src/lib/op/math/LibOpGm.t.sol +++ b/test/src/lib/op/math/LibOpGm.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpHeadroom.t.sol b/test/src/lib/op/math/LibOpHeadroom.t.sol index b5c5be3c9..3165f9428 100644 --- a/test/src/lib/op/math/LibOpHeadroom.t.sol +++ b/test/src/lib/op/math/LibOpHeadroom.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpIntAddNP.t.sol b/test/src/lib/op/math/LibOpIntAddNP.t.sol index b7083c860..7c522a8ad 100644 --- a/test/src/lib/op/math/LibOpIntAddNP.t.sol +++ b/test/src/lib/op/math/LibOpIntAddNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/math/LibOpInv.t.sol b/test/src/lib/op/math/LibOpInv.t.sol index 39897dd0a..dcc166cd2 100644 --- a/test/src/lib/op/math/LibOpInv.t.sol +++ b/test/src/lib/op/math/LibOpInv.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpLn.t.sol b/test/src/lib/op/math/LibOpLn.t.sol index 805ffc905..ac4e5f185 100644 --- a/test/src/lib/op/math/LibOpLn.t.sol +++ b/test/src/lib/op/math/LibOpLn.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpLog10.t.sol b/test/src/lib/op/math/LibOpLog10.t.sol index b9939f4ad..5c53ec33b 100644 --- a/test/src/lib/op/math/LibOpLog10.t.sol +++ b/test/src/lib/op/math/LibOpLog10.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpLog2.t.sol b/test/src/lib/op/math/LibOpLog2.t.sol index 6077565d6..bb8ca4d34 100644 --- a/test/src/lib/op/math/LibOpLog2.t.sol +++ b/test/src/lib/op/math/LibOpLog2.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpMax.t.sol b/test/src/lib/op/math/LibOpMax.t.sol index f802c0819..e27ae8e5e 100644 --- a/test/src/lib/op/math/LibOpMax.t.sol +++ b/test/src/lib/op/math/LibOpMax.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; diff --git a/test/src/lib/op/math/LibOpMin.t.sol b/test/src/lib/op/math/LibOpMin.t.sol index ee234830a..3ebaf7121 100644 --- a/test/src/lib/op/math/LibOpMin.t.sol +++ b/test/src/lib/op/math/LibOpMin.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; diff --git a/test/src/lib/op/math/LibOpMod.t.sol b/test/src/lib/op/math/LibOpMod.t.sol index 20ecc7f02..2d74235d2 100644 --- a/test/src/lib/op/math/LibOpMod.t.sol +++ b/test/src/lib/op/math/LibOpMod.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; diff --git a/test/src/lib/op/math/LibOpMul.t.sol b/test/src/lib/op/math/LibOpMul.t.sol index 6b5a7d44d..3724fca09 100644 --- a/test/src/lib/op/math/LibOpMul.t.sol +++ b/test/src/lib/op/math/LibOpMul.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibPointer} from "rain.solmem/lib/LibPointer.sol"; diff --git a/test/src/lib/op/math/LibOpPow.t.sol b/test/src/lib/op/math/LibOpPow.t.sol index 3f560833c..bf109eed3 100644 --- a/test/src/lib/op/math/LibOpPow.t.sol +++ b/test/src/lib/op/math/LibOpPow.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpScale18.t.sol b/test/src/lib/op/math/LibOpScale18.t.sol index a7637032f..b393dbbc2 100644 --- a/test/src/lib/op/math/LibOpScale18.t.sol +++ b/test/src/lib/op/math/LibOpScale18.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, InterpreterStateNP, Operand, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpScale18Dynamic.t.sol b/test/src/lib/op/math/LibOpScale18Dynamic.t.sol index 965d4b617..28ba6c1fe 100644 --- a/test/src/lib/op/math/LibOpScale18Dynamic.t.sol +++ b/test/src/lib/op/math/LibOpScale18Dynamic.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, InterpreterStateNP, Operand, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpScaleN.t.sol b/test/src/lib/op/math/LibOpScaleN.t.sol index 6a4d131e5..5db96181e 100644 --- a/test/src/lib/op/math/LibOpScaleN.t.sol +++ b/test/src/lib/op/math/LibOpScaleN.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, InterpreterStateNP, Operand, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpScaleNDynamic.t.sol b/test/src/lib/op/math/LibOpScaleNDynamic.t.sol index eaef89e2d..774920ba8 100644 --- a/test/src/lib/op/math/LibOpScaleNDynamic.t.sol +++ b/test/src/lib/op/math/LibOpScaleNDynamic.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, InterpreterStateNP, Operand, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpSnapToUnit.t.sol b/test/src/lib/op/math/LibOpSnapToUnit.t.sol index 47ababdba..4227149ba 100644 --- a/test/src/lib/op/math/LibOpSnapToUnit.t.sol +++ b/test/src/lib/op/math/LibOpSnapToUnit.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpSqrt.t.sol b/test/src/lib/op/math/LibOpSqrt.t.sol index 3eff33439..b5ac6e357 100644 --- a/test/src/lib/op/math/LibOpSqrt.t.sol +++ b/test/src/lib/op/math/LibOpSqrt.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/LibOpSub.t.sol b/test/src/lib/op/math/LibOpSub.t.sol index 284a7f8de..147cf35ad 100644 --- a/test/src/lib/op/math/LibOpSub.t.sol +++ b/test/src/lib/op/math/LibOpSub.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, InterpreterStateNP, Operand, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol index c2bfa95a8..737fca55e 100644 --- a/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol +++ b/test/src/lib/op/math/growth/LibOpExponentialGrowth.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol b/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol index ac4ef0169..28be689d4 100644 --- a/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol +++ b/test/src/lib/op/math/growth/LibOpLinearGrowth.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, UnexpectedOperand} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/int/LibOpUint256Div.t.sol b/test/src/lib/op/math/int/LibOpUint256Div.t.sol index fe65c0d6b..c525ab5e3 100644 --- a/test/src/lib/op/math/int/LibOpUint256Div.t.sol +++ b/test/src/lib/op/math/int/LibOpUint256Div.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/int/LibOpUint256Mul.t.sol b/test/src/lib/op/math/int/LibOpUint256Mul.t.sol index 80fb34480..867d13651 100644 --- a/test/src/lib/op/math/int/LibOpUint256Mul.t.sol +++ b/test/src/lib/op/math/int/LibOpUint256Mul.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {OpTest, IntegrityCheckStateNP, Operand, InterpreterStateNP, stdError} from "test/abstract/OpTest.sol"; diff --git a/test/src/lib/op/math/int/LibOpUint256Pow.t.sol b/test/src/lib/op/math/int/LibOpUint256Pow.t.sol index f0895696f..fa0db0612 100644 --- a/test/src/lib/op/math/int/LibOpUint256Pow.t.sol +++ b/test/src/lib/op/math/int/LibOpUint256Pow.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {stdError} from "forge-std/Test.sol"; diff --git a/test/src/lib/op/store/LibOpGetNP.t.sol b/test/src/lib/op/store/LibOpGetNP.t.sol index 4c7627f60..cfb156743 100644 --- a/test/src/lib/op/store/LibOpGetNP.t.sol +++ b/test/src/lib/op/store/LibOpGetNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibMemoryKV, MemoryKV, MemoryKVVal, MemoryKVKey} from "rain.lib.memkv/lib/LibMemoryKV.sol"; diff --git a/test/src/lib/op/store/LibOpSetNP.t.sol b/test/src/lib/op/store/LibOpSetNP.t.sol index dae7c4c7c..7cb20cd1d 100644 --- a/test/src/lib/op/store/LibOpSetNP.t.sol +++ b/test/src/lib/op/store/LibOpSetNP.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {LibMemoryKV, MemoryKV, MemoryKVVal, MemoryKVKey} from "rain.lib.memkv/lib/LibMemoryKV.sol"; diff --git a/test/src/lib/parse/LibParse.comments.t.sol b/test/src/lib/parse/LibParse.comments.t.sol index febd50ca5..6a6c56cda 100644 --- a/test/src/lib/parse/LibParse.comments.t.sol +++ b/test/src/lib/parse/LibParse.comments.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.empty.gas.t.sol b/test/src/lib/parse/LibParse.empty.gas.t.sol index d1757d100..42ba8296e 100644 --- a/test/src/lib/parse/LibParse.empty.gas.t.sol +++ b/test/src/lib/parse/LibParse.empty.gas.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.empty.t.sol b/test/src/lib/parse/LibParse.empty.t.sol index dd40fd9f0..7bfb52716 100644 --- a/test/src/lib/parse/LibParse.empty.t.sol +++ b/test/src/lib/parse/LibParse.empty.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.ignoredLHS.t.sol b/test/src/lib/parse/LibParse.ignoredLHS.t.sol index 0c8469d52..69c35f81f 100644 --- a/test/src/lib/parse/LibParse.ignoredLHS.t.sol +++ b/test/src/lib/parse/LibParse.ignoredLHS.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.inputsOnly.gas.t.sol b/test/src/lib/parse/LibParse.inputsOnly.gas.t.sol index 2a1d2098e..0c342f644 100644 --- a/test/src/lib/parse/LibParse.inputsOnly.gas.t.sol +++ b/test/src/lib/parse/LibParse.inputsOnly.gas.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.inputsOnly.t.sol b/test/src/lib/parse/LibParse.inputsOnly.t.sol index ee1e266ef..9c41726af 100644 --- a/test/src/lib/parse/LibParse.inputsOnly.t.sol +++ b/test/src/lib/parse/LibParse.inputsOnly.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.isMask.t.sol b/test/src/lib/parse/LibParse.isMask.t.sol index 093de9836..43f7243af 100644 --- a/test/src/lib/parse/LibParse.isMask.t.sol +++ b/test/src/lib/parse/LibParse.isMask.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.literalIntegerDecimal.t.sol b/test/src/lib/parse/LibParse.literalIntegerDecimal.t.sol index 2e5b80e4e..a36a787e7 100644 --- a/test/src/lib/parse/LibParse.literalIntegerDecimal.t.sol +++ b/test/src/lib/parse/LibParse.literalIntegerDecimal.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.literalIntegerHex.t.sol b/test/src/lib/parse/LibParse.literalIntegerHex.t.sol index ef1347298..6d0eb8b69 100644 --- a/test/src/lib/parse/LibParse.literalIntegerHex.t.sol +++ b/test/src/lib/parse/LibParse.literalIntegerHex.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.literalString.t.sol b/test/src/lib/parse/LibParse.literalString.t.sol index e25fde6ce..3ab3a7e3a 100644 --- a/test/src/lib/parse/LibParse.literalString.t.sol +++ b/test/src/lib/parse/LibParse.literalString.t.sol @@ -1,11 +1,12 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; import {LibBytecode} from "rain.interpreter.interface/lib/bytecode/LibBytecode.sol"; import {LibParse} from "src/lib/parse/LibParse.sol"; import {LibMetaFixture} from "test/lib/parse/LibMetaFixture.sol"; -import {IntOrAString, LibIntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {IntOrAString, LibIntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; import {StringTooLong, UnclosedStringLiteral} from "src/error/ErrParse.sol"; import {LibLiteralString} from "test/lib/literal/LibLiteralString.sol"; import {LibParseState, ParseState} from "src/lib/parse/LibParseState.sol"; diff --git a/test/src/lib/parse/LibParse.missingFinalSemi.t.sol b/test/src/lib/parse/LibParse.missingFinalSemi.t.sol index b7b18f1dd..abcc56559 100644 --- a/test/src/lib/parse/LibParse.missingFinalSemi.t.sol +++ b/test/src/lib/parse/LibParse.missingFinalSemi.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.nOutput.t.sol b/test/src/lib/parse/LibParse.nOutput.t.sol index 5341f7f5e..6a36e9dfb 100644 --- a/test/src/lib/parse/LibParse.nOutput.t.sol +++ b/test/src/lib/parse/LibParse.nOutput.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.namedLHS.t.sol b/test/src/lib/parse/LibParse.namedLHS.t.sol index f5ec82164..7dc773c53 100644 --- a/test/src/lib/parse/LibParse.namedLHS.t.sol +++ b/test/src/lib/parse/LibParse.namedLHS.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; @@ -14,7 +15,7 @@ import {LibParseLiteral} from "src/lib/parse/literal/LibParseLiteral.sol"; import {Operand, LibParseOperand} from "src/lib/parse/LibParseOperand.sol"; import {LibConvert} from "rain.lib.typecast/LibConvert.sol"; import {LibAllStandardOpsNP} from "src/lib/op/LibAllStandardOpsNP.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; /// @title LibParseNamedLHSTest contract LibParseNamedLHSTest is Test { diff --git a/test/src/lib/parse/LibParse.operand8M1M1.t.sol b/test/src/lib/parse/LibParse.operand8M1M1.t.sol index 3d0a0865c..0e3d3a154 100644 --- a/test/src/lib/parse/LibParse.operand8M1M1.t.sol +++ b/test/src/lib/parse/LibParse.operand8M1M1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {UnsupportedLiteralType} from "src/lib/parse/literal/LibParseLiteral.sol"; diff --git a/test/src/lib/parse/LibParse.operandDisallowed.t.sol b/test/src/lib/parse/LibParse.operandDisallowed.t.sol index 714ea1587..d1a1e0cea 100644 --- a/test/src/lib/parse/LibParse.operandDisallowed.t.sol +++ b/test/src/lib/parse/LibParse.operandDisallowed.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.operandDoublePerByteNoDefault.t.sol b/test/src/lib/parse/LibParse.operandDoublePerByteNoDefault.t.sol index 49b3dc2d8..786049267 100644 --- a/test/src/lib/parse/LibParse.operandDoublePerByteNoDefault.t.sol +++ b/test/src/lib/parse/LibParse.operandDoublePerByteNoDefault.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.operandM1M1.t.sol b/test/src/lib/parse/LibParse.operandM1M1.t.sol index ad3150204..d6767d932 100644 --- a/test/src/lib/parse/LibParse.operandM1M1.t.sol +++ b/test/src/lib/parse/LibParse.operandM1M1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {UnclosedOperand, UnsupportedLiteralType, UnexpectedOperandValue} from "src/error/ErrParse.sol"; diff --git a/test/src/lib/parse/LibParse.operandSingleFull.t.sol b/test/src/lib/parse/LibParse.operandSingleFull.t.sol index 03a193d35..ddd3d7a6f 100644 --- a/test/src/lib/parse/LibParse.operandSingleFull.t.sol +++ b/test/src/lib/parse/LibParse.operandSingleFull.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.parseWord.t.sol b/test/src/lib/parse/LibParse.parseWord.t.sol index 68bb38c1b..60a5a8859 100644 --- a/test/src/lib/parse/LibParse.parseWord.t.sol +++ b/test/src/lib/parse/LibParse.parseWord.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.singleIgnored.gas.t.sol b/test/src/lib/parse/LibParse.singleIgnored.gas.t.sol index 128258d87..49680662b 100644 --- a/test/src/lib/parse/LibParse.singleIgnored.gas.t.sol +++ b/test/src/lib/parse/LibParse.singleIgnored.gas.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.singleLHSNamed.gas.t.sol b/test/src/lib/parse/LibParse.singleLHSNamed.gas.t.sol index 7b08856d8..89bd742f2 100644 --- a/test/src/lib/parse/LibParse.singleLHSNamed.gas.t.sol +++ b/test/src/lib/parse/LibParse.singleLHSNamed.gas.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.singleRHSNamed.gas.t.sol b/test/src/lib/parse/LibParse.singleRHSNamed.gas.t.sol index 6e76a1e5e..9a77a2a23 100644 --- a/test/src/lib/parse/LibParse.singleRHSNamed.gas.t.sol +++ b/test/src/lib/parse/LibParse.singleRHSNamed.gas.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; @@ -10,7 +11,7 @@ import {LibParseState, ParseState} from "src/lib/parse/LibParseState.sol"; import {LibConvert} from "rain.lib.typecast/LibConvert.sol"; import {LibParseLiteral} from "src/lib/parse/literal/LibParseLiteral.sol"; import {LibAllStandardOpsNP} from "src/lib/op/LibAllStandardOpsNP.sol"; -import {LibGenParseMeta} from "rain.sol.codegen/lib/LibGenParseMeta.sol"; +import {LibGenParseMeta} from "rain.interpreter.interface/lib/codegen/LibGenParseMeta.sol"; /// @title LibParseSingleRHSNamedGasTest /// Parse a single RHS name for many different sized RHS names just to include diff --git a/test/src/lib/parse/LibParse.sourceInputs.t.sol b/test/src/lib/parse/LibParse.sourceInputs.t.sol index 4a38708a6..d9eefb966 100644 --- a/test/src/lib/parse/LibParse.sourceInputs.t.sol +++ b/test/src/lib/parse/LibParse.sourceInputs.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.unclosedLeftParen.t.sol b/test/src/lib/parse/LibParse.unclosedLeftParen.t.sol index 11aa8abac..cc02a5754 100644 --- a/test/src/lib/parse/LibParse.unclosedLeftParen.t.sol +++ b/test/src/lib/parse/LibParse.unclosedLeftParen.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.unexpectedLHS.t.sol b/test/src/lib/parse/LibParse.unexpectedLHS.t.sol index 5e2e7d1ef..69cd65052 100644 --- a/test/src/lib/parse/LibParse.unexpectedLHS.t.sol +++ b/test/src/lib/parse/LibParse.unexpectedLHS.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.unexpectedRHS.t.sol b/test/src/lib/parse/LibParse.unexpectedRHS.t.sol index daec97858..de2f918c7 100644 --- a/test/src/lib/parse/LibParse.unexpectedRHS.t.sol +++ b/test/src/lib/parse/LibParse.unexpectedRHS.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.unexpectedRightParen.t.sol b/test/src/lib/parse/LibParse.unexpectedRightParen.t.sol index 9664e28ce..47a81a695 100644 --- a/test/src/lib/parse/LibParse.unexpectedRightParen.t.sol +++ b/test/src/lib/parse/LibParse.unexpectedRightParen.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParse.wordsRHS.t.sol b/test/src/lib/parse/LibParse.wordsRHS.t.sol index c951b3725..74e42ac68 100644 --- a/test/src/lib/parse/LibParse.wordsRHS.t.sol +++ b/test/src/lib/parse/LibParse.wordsRHS.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperand8M1M1.t.sol b/test/src/lib/parse/LibParseOperand.handleOperand8M1M1.t.sol index 42b22062c..6851fc7ca 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperand8M1M1.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperand8M1M1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperandDisallowed.t.sol b/test/src/lib/parse/LibParseOperand.handleOperandDisallowed.t.sol index 8795fe885..fd42c16bc 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperandDisallowed.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperandDisallowed.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperandDoublePerByteNoDefault.t.sol b/test/src/lib/parse/LibParseOperand.handleOperandDoublePerByteNoDefault.t.sol index 8c493f462..5b05a57ab 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperandDoublePerByteNoDefault.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperandDoublePerByteNoDefault.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperandM1M1.t.sol b/test/src/lib/parse/LibParseOperand.handleOperandM1M1.t.sol index d8643df29..9f4a3af23 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperandM1M1.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperandM1M1.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperandSingleFull.t.sol b/test/src/lib/parse/LibParseOperand.handleOperandSingleFull.t.sol index 135d4f00d..ba83d1cd4 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperandSingleFull.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperandSingleFull.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.handleOperandSingleFullNoDefault.t.sol b/test/src/lib/parse/LibParseOperand.handleOperandSingleFullNoDefault.t.sol index 4749b50f7..ce80bf6a3 100644 --- a/test/src/lib/parse/LibParseOperand.handleOperandSingleFullNoDefault.t.sol +++ b/test/src/lib/parse/LibParseOperand.handleOperandSingleFullNoDefault.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseOperand.parseOperand.t.sol b/test/src/lib/parse/LibParseOperand.parseOperand.t.sol index 12ca97ef0..add15308e 100644 --- a/test/src/lib/parse/LibParseOperand.parseOperand.t.sol +++ b/test/src/lib/parse/LibParseOperand.parseOperand.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParsePragma.keyword.t.sol b/test/src/lib/parse/LibParsePragma.keyword.t.sol index 12b090f96..ab1fc1cc4 100644 --- a/test/src/lib/parse/LibParsePragma.keyword.t.sol +++ b/test/src/lib/parse/LibParsePragma.keyword.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseSlow.sol b/test/src/lib/parse/LibParseSlow.sol index 916492dfa..fb5fd8d95 100644 --- a/test/src/lib/parse/LibParseSlow.sol +++ b/test/src/lib/parse/LibParseSlow.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; library LibParseSlow { diff --git a/test/src/lib/parse/LibParseStackName.t.sol b/test/src/lib/parse/LibParseStackName.t.sol index 2aa4ad184..df17366d9 100644 --- a/test/src/lib/parse/LibParseStackName.t.sol +++ b/test/src/lib/parse/LibParseStackName.t.sol @@ -1,4 +1,5 @@ -//// SPDX-License-Identifier: CAL +//// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseState.constantValueBloom.t.sol b/test/src/lib/parse/LibParseState.constantValueBloom.t.sol index 92905b73e..81f464edc 100644 --- a/test/src/lib/parse/LibParseState.constantValueBloom.t.sol +++ b/test/src/lib/parse/LibParseState.constantValueBloom.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseState.exportSubParsers.t.sol b/test/src/lib/parse/LibParseState.exportSubParsers.t.sol index fdafd51af..420314a97 100644 --- a/test/src/lib/parse/LibParseState.exportSubParsers.t.sol +++ b/test/src/lib/parse/LibParseState.exportSubParsers.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseState.newActiveSourcePointer.t.sol b/test/src/lib/parse/LibParseState.newActiveSourcePointer.t.sol index 9fb516947..759b9a7cc 100644 --- a/test/src/lib/parse/LibParseState.newActiveSourcePointer.t.sol +++ b/test/src/lib/parse/LibParseState.newActiveSourcePointer.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseState.pushConstantValue.t.sol b/test/src/lib/parse/LibParseState.pushConstantValue.t.sol index 1cb6a242a..8a2e23055 100644 --- a/test/src/lib/parse/LibParseState.pushConstantValue.t.sol +++ b/test/src/lib/parse/LibParseState.pushConstantValue.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibParseState.pushSubParser.t.sol b/test/src/lib/parse/LibParseState.pushSubParser.t.sol index 8aa8a530c..7ac3c824b 100644 --- a/test/src/lib/parse/LibParseState.pushSubParser.t.sol +++ b/test/src/lib/parse/LibParseState.pushSubParser.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/LibSubParse.subParserExtern.t.sol b/test/src/lib/parse/LibSubParse.subParserExtern.t.sol index d8d181286..e4d7fb502 100644 --- a/test/src/lib/parse/LibSubParse.subParserExtern.t.sol +++ b/test/src/lib/parse/LibSubParse.subParserExtern.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimal.t.sol b/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimal.t.sol index 1c510c1ba..83e2eafd0 100644 --- a/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimal.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimal.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimalFloat.t.sol b/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimalFloat.t.sol index 8ea7e1251..f7aa7916d 100644 --- a/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimalFloat.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralDecimal.parseDecimalFloat.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToInt.t.sol b/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToInt.t.sol index aefd36e9d..fe01b4ff0 100644 --- a/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToInt.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToInt.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToSignedInt.t.sol b/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToSignedInt.t.sol index a5139eea4..dd17b2e6d 100644 --- a/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToSignedInt.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralDecimal.unsafeStrToSignedInt.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralHex.boundHex.t.sol b/test/src/lib/parse/literal/LibParseLiteralHex.boundHex.t.sol index 42bbc15b9..0bee58c7f 100644 --- a/test/src/lib/parse/literal/LibParseLiteralHex.boundHex.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralHex.boundHex.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {ParseLiteralTest} from "test/abstract/ParseLiteralTest.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralHex.parseHex.t.sol b/test/src/lib/parse/literal/LibParseLiteralHex.parseHex.t.sol index 0d9de1f10..40532fa23 100644 --- a/test/src/lib/parse/literal/LibParseLiteralHex.parseHex.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralHex.parseHex.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralString.boundString.t.sol b/test/src/lib/parse/literal/LibParseLiteralString.boundString.t.sol index e17ab7237..cb47aed58 100644 --- a/test/src/lib/parse/literal/LibParseLiteralString.boundString.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralString.boundString.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralString.parseString.t.sol b/test/src/lib/parse/literal/LibParseLiteralString.parseString.t.sol index 0e824dea3..0f1223975 100644 --- a/test/src/lib/parse/literal/LibParseLiteralString.parseString.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralString.parseString.t.sol @@ -1,10 +1,11 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test} from "forge-std/Test.sol"; import {LibParseLiteralString} from "src/lib/parse/literal/LibParseLiteralString.sol"; import {LibBytes, Pointer} from "rain.solmem/lib/LibBytes.sol"; -import {IntOrAString, LibIntOrAString} from "rain.intorastring/src/lib/LibIntOrAString.sol"; +import {IntOrAString, LibIntOrAString} from "rain.intorastring/lib/LibIntOrAString.sol"; import {LibParseState, ParseState} from "src/lib/parse/LibParseState.sol"; import {LibAllStandardOpsNP} from "src/lib/op/LibAllStandardOpsNP.sol"; import {CMASK_STRING_LITERAL_TAIL} from "src/lib/parse/LibParseCMask.sol"; diff --git a/test/src/lib/parse/literal/LibParseLiteralSubParseable.parseSubParseable.t.sol b/test/src/lib/parse/literal/LibParseLiteralSubParseable.parseSubParseable.t.sol index 2acfaadca..8025dbf37 100644 --- a/test/src/lib/parse/literal/LibParseLiteralSubParseable.parseSubParseable.t.sol +++ b/test/src/lib/parse/literal/LibParseLiteralSubParseable.parseSubParseable.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity =0.8.25; import {Test, console2} from "forge-std/Test.sol"; diff --git a/test/src/lib/state/LibInterpreterStateNP.stackTrace.t.sol b/test/src/lib/state/LibInterpreterStateNP.stackTrace.t.sol index bbac72681..f2bf8af9d 100644 --- a/test/src/lib/state/LibInterpreterStateNP.stackTrace.t.sol +++ b/test/src/lib/state/LibInterpreterStateNP.stackTrace.t.sol @@ -1,4 +1,5 @@ -// SPDX-License-Identifier: CAL +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd pragma solidity ^0.8.18; import {LibUint256Array} from "rain.solmem/lib/LibUint256Array.sol"; diff --git a/test/utils/TestERC20.sol b/test/utils/TestERC20.sol new file mode 100644 index 000000000..e83f81b31 --- /dev/null +++ b/test/utils/TestERC20.sol @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: LicenseRef-DCL-1.0 +// SPDX-FileCopyrightText: Copyright (c) 2020 Rain Open Source Software Ltd +pragma solidity =0.8.25; + +import {ERC20} from "openzeppelin-contracts/contracts/token/ERC20/ERC20.sol"; + +contract TestERC20 is ERC20 { + uint8 private _decimals; + + constructor(string memory name_, string memory symbol_, uint8 decimals_, address recipient_, uint256 supply_) + ERC20(name_, symbol_) + { + _decimals = decimals_; + _mint(recipient_, supply_); + } + + function decimals() public view virtual override returns (uint8) { + return _decimals; + } +}