This is page 55 of 103. Use http://codebase.md/cyfrin/aderyn?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .cargo
│ └── config.toml
├── .git-blame-ignore-revs
├── .gitattributes
├── .github
│ ├── images
│ │ ├── aderyn_logo.png
│ │ ├── poweredbycyfrinblack.png
│ │ └── poweredbycyfrinblue.png
│ ├── ISSUE_TEMPLATE
│ │ ├── bug_report.md
│ │ ├── false_positive_issue.md
│ │ └── feature_request.md
│ └── workflows
│ ├── cargo.yml
│ ├── dependencies.yml
│ ├── release.yml
│ ├── reports.yml
│ └── toml.yml
├── .gitignore
├── .gitmodules
├── .vscode
│ └── settings.json
├── aderyn
│ ├── Cargo.toml
│ ├── oranda.json
│ ├── README.md
│ ├── src
│ │ ├── birdsong.rs
│ │ ├── completions.rs
│ │ ├── lib.rs
│ │ ├── lsp.rs
│ │ ├── main.rs
│ │ ├── mcp.rs
│ │ └── panic.rs
│ └── templates
│ └── aderyn.toml
├── aderyn_core
│ ├── .gitignore
│ ├── Cargo.toml
│ ├── README.md
│ ├── src
│ │ ├── ast
│ │ │ ├── ast_nodes.rs
│ │ │ ├── ast.rs
│ │ │ ├── impls
│ │ │ │ ├── ctx
│ │ │ │ │ ├── utils.rs
│ │ │ │ │ └── workspace.rs
│ │ │ │ ├── ctx.rs
│ │ │ │ ├── disp
│ │ │ │ │ ├── blocks.rs
│ │ │ │ │ ├── contracts.rs
│ │ │ │ │ ├── enumerations.rs
│ │ │ │ │ ├── errors.rs
│ │ │ │ │ ├── events.rs
│ │ │ │ │ ├── expressions.rs
│ │ │ │ │ ├── functions.rs
│ │ │ │ │ ├── identifiers.rs
│ │ │ │ │ ├── literals.rs
│ │ │ │ │ ├── modifiers.rs
│ │ │ │ │ ├── statements.rs
│ │ │ │ │ ├── structures.rs
│ │ │ │ │ ├── types.rs
│ │ │ │ │ ├── user_defined_value_types.rs
│ │ │ │ │ ├── using_for_directives.rs
│ │ │ │ │ └── variables.rs
│ │ │ │ ├── disp.rs
│ │ │ │ ├── node
│ │ │ │ │ ├── blocks.rs
│ │ │ │ │ ├── contracts.rs
│ │ │ │ │ ├── documentation.rs
│ │ │ │ │ ├── enumerations.rs
│ │ │ │ │ ├── errors.rs
│ │ │ │ │ ├── events.rs
│ │ │ │ │ ├── expressions.rs
│ │ │ │ │ ├── functions.rs
│ │ │ │ │ ├── identifiers.rs
│ │ │ │ │ ├── import_directives.rs
│ │ │ │ │ ├── literals.rs
│ │ │ │ │ ├── modifiers.rs
│ │ │ │ │ ├── pragma_directives.rs
│ │ │ │ │ ├── source_units.rs
│ │ │ │ │ ├── statements.rs
│ │ │ │ │ ├── structures.rs
│ │ │ │ │ ├── types.rs
│ │ │ │ │ ├── user_defined_value_types.rs
│ │ │ │ │ ├── using_for_directives.rs
│ │ │ │ │ └── variables.rs
│ │ │ │ ├── node.rs
│ │ │ │ ├── own
│ │ │ │ │ ├── hashing.rs
│ │ │ │ │ ├── node_id.rs
│ │ │ │ │ ├── source_units.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ └── own.rs
│ │ │ ├── impls.rs
│ │ │ ├── macros.rs
│ │ │ ├── magic.rs
│ │ │ ├── node_type.rs
│ │ │ └── yul.rs
│ │ ├── ast.rs
│ │ ├── audit
│ │ │ ├── attack_surface.rs
│ │ │ ├── auditor.rs
│ │ │ ├── entrypoint.rs
│ │ │ └── public_functions_no_sender.rs
│ │ ├── audit.rs
│ │ ├── context
│ │ │ ├── browser
│ │ │ │ ├── ancestral_line.rs
│ │ │ │ ├── closest_ancestor.rs
│ │ │ │ ├── external_calls.rs
│ │ │ │ ├── extractor.rs
│ │ │ │ ├── immediate_children.rs
│ │ │ │ ├── location.rs
│ │ │ │ ├── macros.rs
│ │ │ │ ├── parent.rs
│ │ │ │ ├── peek_over.rs
│ │ │ │ ├── peek_under.rs
│ │ │ │ ├── peek.rs
│ │ │ │ ├── siblings.rs
│ │ │ │ ├── sort_nodes.rs
│ │ │ │ └── storage_vars.rs
│ │ │ ├── browser.rs
│ │ │ ├── capturable.rs
│ │ │ ├── flow
│ │ │ │ ├── display.rs
│ │ │ │ ├── error.rs
│ │ │ │ ├── kind.rs
│ │ │ │ ├── primitives.rs
│ │ │ │ ├── reducibles.rs
│ │ │ │ ├── tests.rs
│ │ │ │ ├── utils.rs
│ │ │ │ ├── visualizer.rs
│ │ │ │ └── voids.rs
│ │ │ ├── flow.rs
│ │ │ ├── graph
│ │ │ │ ├── callgraph
│ │ │ │ │ ├── legacy.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ ├── tests.rs
│ │ │ │ │ ├── utils.rs
│ │ │ │ │ └── visit.rs
│ │ │ │ ├── callgraph.rs
│ │ │ │ ├── preprocess
│ │ │ │ │ ├── legacy.rs
│ │ │ │ │ └── new.rs
│ │ │ │ ├── preprocess.rs
│ │ │ │ ├── traits.rs
│ │ │ │ └── utils.rs
│ │ │ ├── graph.rs
│ │ │ ├── macros.rs
│ │ │ ├── mcp
│ │ │ │ ├── callgraph
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── callgraph.rs
│ │ │ │ ├── contract_surface
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── util.rs
│ │ │ │ ├── contract_surface.rs
│ │ │ │ ├── list_contracts
│ │ │ │ │ ├── render.rs
│ │ │ │ │ └── tool.rs
│ │ │ │ ├── list_contracts.rs
│ │ │ │ ├── node_finder
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── node_finder.rs
│ │ │ │ ├── node_summarizer
│ │ │ │ │ ├── render.rs
│ │ │ │ │ ├── tool.rs
│ │ │ │ │ └── utils.rs
│ │ │ │ ├── node_summarizer.rs
│ │ │ │ ├── project_overview
│ │ │ │ │ ├── render.rs
│ │ │ │ │ └── tool.rs
│ │ │ │ ├── project_overview.rs
│ │ │ │ ├── tool_guide
│ │ │ │ │ └── tool.rs
│ │ │ │ └── tool_guide.rs
│ │ │ ├── mcp.rs
│ │ │ ├── router
│ │ │ │ ├── external_calls.rs
│ │ │ │ ├── internal_calls.rs
│ │ │ │ ├── modifier_calls.rs
│ │ │ │ └── tests.rs
│ │ │ ├── router.rs
│ │ │ └── workspace.rs
│ │ ├── context.rs
│ │ ├── detect
│ │ │ ├── detector.rs
│ │ │ ├── entrypoint.rs
│ │ │ ├── helpers.rs
│ │ │ ├── high
│ │ │ │ ├── _template.rs
│ │ │ │ ├── abi_encode_packed_hash_collision.rs
│ │ │ │ ├── arbitrary_transfer_from.rs
│ │ │ │ ├── const_func_changes_state.rs
│ │ │ │ ├── contract_locks_ether.rs
│ │ │ │ ├── dangerous_unary_operator.rs
│ │ │ │ ├── delegate_call_unchecked_address.rs
│ │ │ │ ├── delete_nested_mapping.rs
│ │ │ │ ├── dynamic_array_length_assignment.rs
│ │ │ │ ├── enumerable_loop_removal.rs
│ │ │ │ ├── eth_send_unchecked_address.rs
│ │ │ │ ├── experimental_encoder.rs
│ │ │ │ ├── function_selector_collision.rs
│ │ │ │ ├── incorrect_caret_operator.rs
│ │ │ │ ├── incorrect_erc20_interface.rs
│ │ │ │ ├── incorrect_erc721_interface.rs
│ │ │ │ ├── incorrect_shift_order.rs
│ │ │ │ ├── misused_boolean.rs
│ │ │ │ ├── msg_value_in_loops.rs
│ │ │ │ ├── multiple_constructors.rs
│ │ │ │ ├── nested_struct_in_mapping.rs
│ │ │ │ ├── out_of_order_retryable.rs
│ │ │ │ ├── pre_declared_variable_usage.rs
│ │ │ │ ├── reentrancy_state_change.rs
│ │ │ │ ├── reused_contract_name.rs
│ │ │ │ ├── rtlo.rs
│ │ │ │ ├── selfdestruct.rs
│ │ │ │ ├── signed_integer_storage_array.rs
│ │ │ │ ├── state_variable_shadowing.rs
│ │ │ │ ├── storage_array_memory_edit.rs
│ │ │ │ ├── strict_equality_contract_balance.rs
│ │ │ │ ├── tautological_compare.rs
│ │ │ │ ├── tautology_or_contradiction.rs
│ │ │ │ ├── tx_origin_used_for_auth.rs
│ │ │ │ ├── unchecked_low_level_call.rs
│ │ │ │ ├── unchecked_send.rs
│ │ │ │ ├── unprotected_initializer.rs
│ │ │ │ ├── unsafe_casting.rs
│ │ │ │ ├── weak_randomness.rs
│ │ │ │ └── yul_return.rs
│ │ │ ├── high.rs
│ │ │ ├── low
│ │ │ │ ├── _template.rs
│ │ │ │ ├── assert_state_change.rs
│ │ │ │ ├── block_timestamp_deadline.rs
│ │ │ │ ├── boolean_equality.rs
│ │ │ │ ├── builtin_symbol_shadowing.rs
│ │ │ │ ├── centralization_risk.rs
│ │ │ │ ├── constant_function_contains_assembly.rs
│ │ │ │ ├── costly_loop.rs
│ │ │ │ ├── dead_code.rs
│ │ │ │ ├── delegatecall_in_loop.rs
│ │ │ │ ├── deprecated_oz_function.rs
│ │ │ │ ├── division_before_multiplication.rs
│ │ │ │ ├── ecrecover.rs
│ │ │ │ ├── empty_block.rs
│ │ │ │ ├── empty_require_revert.rs
│ │ │ │ ├── function_initializing_state.rs
│ │ │ │ ├── function_pointer_in_constructor.rs
│ │ │ │ ├── inconsistent_type_names.rs
│ │ │ │ ├── incorrect_modifier.rs
│ │ │ │ ├── internal_function_used_once.rs
│ │ │ │ ├── large_numeric_literal.rs
│ │ │ │ ├── literal_instead_of_constant.rs
│ │ │ │ ├── local_variable_shadowing.rs
│ │ │ │ ├── missing_inheritance.rs
│ │ │ │ ├── modifier_used_only_once.rs
│ │ │ │ ├── multiple_placeholders.rs
│ │ │ │ ├── non_reentrant_not_first.rs
│ │ │ │ ├── push_0_opcode.rs
│ │ │ │ ├── redundant_statement.rs
│ │ │ │ ├── require_revert_in_loop.rs
│ │ │ │ ├── return_bomb.rs
│ │ │ │ ├── solmate_safe_transfer_lib.rs
│ │ │ │ ├── state_change_without_event.rs
│ │ │ │ ├── state_no_address_check.rs
│ │ │ │ ├── state_variable_could_be_constant.rs
│ │ │ │ ├── state_variable_could_be_immutable.rs
│ │ │ │ ├── state_variable_read_external.rs
│ │ │ │ ├── storage_array_length_not_cached.rs
│ │ │ │ ├── todo.rs
│ │ │ │ ├── unchecked_return.rs
│ │ │ │ ├── uninitialized_local_variable.rs
│ │ │ │ ├── unsafe_erc20_operation.rs
│ │ │ │ ├── unsafe_oz_erc721_mint.rs
│ │ │ │ ├── unspecific_solidity_pragma.rs
│ │ │ │ ├── unused_error.rs
│ │ │ │ ├── unused_import.rs
│ │ │ │ ├── unused_public_function.rs
│ │ │ │ ├── unused_state_variable.rs
│ │ │ │ └── void_constructor.rs
│ │ │ ├── low.rs
│ │ │ └── test_utils.rs
│ │ ├── detect.rs
│ │ ├── lib.rs
│ │ ├── stats
│ │ │ ├── cloc.rs
│ │ │ ├── dbg_tips.txt
│ │ │ ├── ignore.rs
│ │ │ ├── token.rs
│ │ │ └── util.rs
│ │ ├── stats.rs
│ │ ├── test_utils
│ │ │ └── load_source_unit.rs
│ │ ├── test_utils.rs
│ │ ├── visitor
│ │ │ ├── ast_visitor.rs
│ │ │ ├── macros.rs
│ │ │ └── workspace_visitor.rs
│ │ └── visitor.rs
│ ├── templates
│ │ └── mcp-tool-response
│ │ ├── callgraph.md
│ │ ├── contract_surface.md
│ │ ├── list_contracts.md
│ │ ├── node_finder_get_all.md
│ │ ├── node_finder_grep.md
│ │ ├── node_finder_search.md
│ │ ├── node_summarizer.md
│ │ ├── project_overview.md
│ │ └── tool_guide.md
│ └── tests
│ ├── common
│ │ ├── ancestral_line.rs
│ │ ├── closest_ancestor.rs
│ │ ├── immediate_children.rs
│ │ ├── immediate_parent.rs
│ │ ├── mod.rs
│ │ ├── new_ast_nodes.rs
│ │ ├── peek_over.rs
│ │ └── sibling.rs
│ └── traversal.rs
├── aderyn_driver
│ ├── .gitignore
│ ├── benches
│ │ └── detectors.rs
│ ├── Cargo.toml
│ ├── README.md
│ ├── src
│ │ ├── compile.rs
│ │ ├── config.rs
│ │ ├── display.rs
│ │ ├── driver.rs
│ │ ├── interface
│ │ │ ├── json.rs
│ │ │ ├── lsp.rs
│ │ │ ├── markdown.rs
│ │ │ ├── mod.rs
│ │ │ ├── sarif.rs
│ │ │ ├── tables.rs
│ │ │ └── util.rs
│ │ ├── lib.rs
│ │ ├── mcp.rs
│ │ ├── process.rs
│ │ └── runner.rs
│ └── tests
│ └── astgen.rs
├── bacon.toml
├── benchmarks
│ ├── aderyn
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── iteration_times.svg
│ │ │ └── pdf.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── iteration_times_small.svg
│ │ ├── iteration_times.svg
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── relative_iteration_times_small.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── SD.svg
│ │ └── typical.svg
│ ├── arbitrary-transfer-from
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── avoid-abi-encode-packed
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── block-timestamp-deadline
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── centralization-risk
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── constants-instead-of-literals
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── delegate-call-in-loop
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── deprecated-oz-functions
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── ecrecover
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── empty-block
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── hello_world
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── inconsistent-type-names
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── large-numeric-literal
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── non-reentrant-before-others
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── push-zero-opcode
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── report
│ │ └── index.html
│ ├── require-with-string
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── solmate-safe-transfer-lib
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unindexed-events
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unprotected-initializer
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unsafe-erc20-functions
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unsafe-oz-erc721-mint
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── unspecific-solidity-pragma
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-internal-function
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-modifier
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ ├── useless-public-function
│ │ ├── base
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ ├── change
│ │ │ └── estimates.json
│ │ ├── new
│ │ │ ├── benchmark.json
│ │ │ ├── estimates.json
│ │ │ ├── sample.json
│ │ │ └── tukey.json
│ │ └── report
│ │ ├── both
│ │ │ ├── pdf.svg
│ │ │ └── regression.svg
│ │ ├── change
│ │ │ ├── mean.svg
│ │ │ ├── median.svg
│ │ │ └── t-test.svg
│ │ ├── index.html
│ │ ├── MAD.svg
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ ├── pdf_small.svg
│ │ ├── pdf.svg
│ │ ├── regression_small.svg
│ │ ├── regression.svg
│ │ ├── relative_pdf_small.svg
│ │ ├── relative_regression_small.svg
│ │ ├── SD.svg
│ │ ├── slope.svg
│ │ └── typical.svg
│ └── zero-address-check
│ ├── base
│ │ ├── benchmark.json
│ │ ├── estimates.json
│ │ ├── sample.json
│ │ └── tukey.json
│ ├── change
│ │ └── estimates.json
│ ├── new
│ │ ├── benchmark.json
│ │ ├── estimates.json
│ │ ├── sample.json
│ │ └── tukey.json
│ └── report
│ ├── both
│ │ ├── pdf.svg
│ │ └── regression.svg
│ ├── change
│ │ ├── mean.svg
│ │ ├── median.svg
│ │ └── t-test.svg
│ ├── index.html
│ ├── MAD.svg
│ ├── mean.svg
│ ├── median.svg
│ ├── pdf_small.svg
│ ├── pdf.svg
│ ├── regression_small.svg
│ ├── regression.svg
│ ├── relative_pdf_small.svg
│ ├── relative_regression_small.svg
│ ├── SD.svg
│ ├── slope.svg
│ └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│ ├── benchmarks.sh
│ └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│ ├── dynamic_script
│ └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│ ├── adhoc-sol-files-highs-only-report.json
│ ├── adhoc-sol-files-report.md
│ ├── ccip-functions-report.md
│ ├── empty_report.md
│ ├── hardhat-playground-report.md
│ ├── nft-report-icm.md
│ ├── nft-report.md
│ ├── prb-math-report.md
│ ├── report.json
│ ├── report.md
│ ├── report.sarif
│ ├── sablier-aderyn-toml-nested-root.md
│ ├── templegold-report.md
│ └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│ ├── adhoc-sol-files
│ │ ├── aderyn.toml
│ │ ├── Counter.sol
│ │ ├── DemoASTNodes.sol
│ │ ├── Helper.sol
│ │ ├── InconsistentUints.sol
│ │ ├── inheritance
│ │ │ ├── ExtendedInheritance.sol
│ │ │ ├── IContractInheritance.sol
│ │ │ └── InheritanceBase.sol
│ │ ├── InternalFunctions.sol
│ │ ├── lib
│ │ │ └── ThisShouldBeExcluded.sol
│ │ ├── multiple-versions
│ │ │ ├── 0.4
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.5
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.6
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ ├── 0.7
│ │ │ │ ├── A.sol
│ │ │ │ └── B.sol
│ │ │ └── 0.8
│ │ │ ├── A.sol
│ │ │ └── B.sol
│ │ ├── OnceModifierExample.sol
│ │ └── StateVariables.sol
│ ├── ast
│ │ ├── abstract_contract.json
│ │ ├── address_payable.json
│ │ ├── array_type_name.json
│ │ ├── ast-erc4626.json
│ │ ├── base_constructor_call.json
│ │ ├── bit_not.json
│ │ ├── call.json
│ │ ├── constructor.json
│ │ ├── contract_dep_order.json
│ │ ├── do_while.json
│ │ ├── documentation_1.json
│ │ ├── documentation_2.json
│ │ ├── documentation_3.json
│ │ ├── documentation_local_variable.json
│ │ ├── documentation_on_statements.json
│ │ ├── documentation_triple.json
│ │ ├── empty_block.json
│ │ ├── enum_value_declaration.json
│ │ ├── enum_value.json
│ │ ├── event_definition.json
│ │ ├── experimental_encoder_pragma.json
│ │ ├── fallback_and_reveice_ether.json
│ │ ├── fallback_payable.json
│ │ ├── fallback.json
│ │ ├── function_type.json
│ │ ├── function.json
│ │ ├── global_enum.json
│ │ ├── global_struct.json
│ │ ├── inheritance_specifier.json
│ │ ├── leave.json
│ │ ├── license.json
│ │ ├── long_type_name_binary_operation.json
│ │ ├── long_type_name_identifier.json
│ │ ├── loop.json
│ │ ├── mappings.json
│ │ ├── modifier_definition.json
│ │ ├── modifier_invocation.json
│ │ ├── mutability.json
│ │ ├── nested_functions.json
│ │ ├── non_utf8.json
│ │ ├── override.json
│ │ ├── placeholder_statement.json
│ │ ├── receive_ether.json
│ │ ├── short_type_name_ref.json
│ │ ├── short_type_name.json
│ │ ├── slot_offset.json
│ │ ├── smoke.json
│ │ ├── source_location.json
│ │ ├── string.json
│ │ ├── stringlit.json
│ │ ├── switch_default.json
│ │ ├── switch.json
│ │ ├── try_catch.json
│ │ ├── two_base_functions.json
│ │ ├── unicode.json
│ │ ├── used_errors.json
│ │ ├── userDefinedValueType.json
│ │ ├── using_for_directive.json
│ │ ├── var_access.json
│ │ └── yul_hex_literal.json
│ ├── contract-playground
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── dot
│ │ │ └── .gitkeep
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── script
│ │ │ └── Counter.s.sol
│ │ ├── src
│ │ │ ├── AbstractContract.sol
│ │ │ ├── AderynIgnoreCustomDetectors.sol
│ │ │ ├── AdminContract.sol
│ │ │ ├── ArbitraryTransferFrom.sol
│ │ │ ├── AssemblyExample.sol
│ │ │ ├── AssertStateChange.sol
│ │ │ ├── auditor_mode
│ │ │ │ ├── ExternalCalls.sol
│ │ │ │ └── PublicFunctionsWithoutSenderCheck.sol
│ │ │ ├── BooleanEquality.sol
│ │ │ ├── BuiltinSymbolShadow.sol
│ │ │ ├── CacheArrayLength.sol
│ │ │ ├── CallGraphTests.sol
│ │ │ ├── Casting.sol
│ │ │ ├── cloc
│ │ │ │ ├── AnotherHeavilyCommentedContract.sol
│ │ │ │ ├── EmptyContractFile.sol
│ │ │ │ └── HeavilyCommentedContract.sol
│ │ │ ├── CompilerBugStorageSignedIntegerArray.sol
│ │ │ ├── ConstantFuncsAssembly.sol
│ │ │ ├── ConstantsLiterals.sol
│ │ │ ├── ConstFuncChangeState.sol
│ │ │ ├── ContractLocksEther.sol
│ │ │ ├── ContractWithTodo.sol
│ │ │ ├── control_flow
│ │ │ │ └── SimpleProgram.sol
│ │ │ ├── CostlyOperationsInsideLoops.sol
│ │ │ ├── Counter.sol
│ │ │ ├── CrazyPragma.sol
│ │ │ ├── DangerousStrictEquality1.sol
│ │ │ ├── DangerousStrictEquality2.sol
│ │ │ ├── DangerousUnaryOperator.sol
│ │ │ ├── DeadCode.sol
│ │ │ ├── DelegateCallWithoutAddressCheck.sol
│ │ │ ├── DeletionNestedMappingStructureContract.sol
│ │ │ ├── DeprecatedOZFunctions.sol
│ │ │ ├── DivisionBeforeMultiplication.sol
│ │ │ ├── DynamicArrayLengthAssignment.sol
│ │ │ ├── EmitAfterExternalCall.sol
│ │ │ ├── EmptyBlocks.sol
│ │ │ ├── EnumerableSetIteration.sol
│ │ │ ├── eth2
│ │ │ │ └── DepositContract.sol
│ │ │ ├── ExperimentalEncoder.sol
│ │ │ ├── ExternalCalls.sol
│ │ │ ├── FunctionInitializingState.sol
│ │ │ ├── FunctionPointers.sol
│ │ │ ├── FunctionSignatureCollision.sol
│ │ │ ├── HugeConstants.sol
│ │ │ ├── IgnoreEverything.sol
│ │ │ ├── InconsistentUints.sol
│ │ │ ├── IncorrectCaretOperator.sol
│ │ │ ├── IncorrectERC20.sol
│ │ │ ├── IncorrectERC721.sol
│ │ │ ├── IncorrectModifier.sol
│ │ │ ├── IncorrectShift.sol
│ │ │ ├── inheritance
│ │ │ │ ├── ExtendedInheritance.sol
│ │ │ │ ├── IContractInheritance.sol
│ │ │ │ └── InheritanceBase.sol
│ │ │ ├── InternalFunctions.sol
│ │ │ ├── KeccakContract.sol
│ │ │ ├── LocalVariableShadow.sol
│ │ │ ├── MissingInheritance.sol
│ │ │ ├── MisusedBoolean.sol
│ │ │ ├── MsgValueInLoop.sol
│ │ │ ├── MultipleConstructorSchemes.sol
│ │ │ ├── MultiplePlaceholders.sol
│ │ │ ├── nested
│ │ │ │ ├── 1
│ │ │ │ │ └── Nested.sol
│ │ │ │ └── 2
│ │ │ │ └── Nested.sol
│ │ │ ├── nested_mappings
│ │ │ │ ├── LaterVersion.sol
│ │ │ │ └── NestedMappings.sol
│ │ │ ├── OnceModifierExample.sol
│ │ │ ├── OnlyLibrary.sol
│ │ │ ├── OutOfOrderRetryable.sol
│ │ │ ├── parent_chain
│ │ │ │ └── ParentChainContract.sol
│ │ │ ├── PragmaRange.sol
│ │ │ ├── PreDeclaredVarUsage.sol
│ │ │ ├── PublicFunction.sol
│ │ │ ├── PublicVariableReadInExternalContext.sol
│ │ │ ├── RedundantStatements.sol
│ │ │ ├── ReturnBomb.sol
│ │ │ ├── reused_contract_name
│ │ │ │ ├── ContractA.sol
│ │ │ │ └── ContractB.sol
│ │ │ ├── RevertsAndRequriesInLoops.sol
│ │ │ ├── router
│ │ │ │ ├── ExternalCalls.sol
│ │ │ │ ├── FallbackAndReceiveOverrides.sol
│ │ │ │ ├── InternalCalls.sol
│ │ │ │ ├── ModifierCalls.sol
│ │ │ │ └── VarOverridesFunction.sol
│ │ │ ├── RTLO.sol
│ │ │ ├── SendEtherNoChecks.sol
│ │ │ ├── SendEtherNoChecksLibImport.sol
│ │ │ ├── StateChangeAfterExternalCall.sol
│ │ │ ├── StateShadowing.sol
│ │ │ ├── StateVariableCouldBeDeclaredConstant.sol
│ │ │ ├── StateVariableCouldBeDeclaredImmutable.sol
│ │ │ ├── StateVariables.sol
│ │ │ ├── StateVariablesChangesWithoutEvents.sol
│ │ │ ├── StateVariablesManipulation.sol
│ │ │ ├── StorageConditionals.sol
│ │ │ ├── StorageParameters.sol
│ │ │ ├── T11sTranferer.sol
│ │ │ ├── TautologicalCompare.sol
│ │ │ ├── TautologyOrContradiction.sol
│ │ │ ├── TestERC20.sol
│ │ │ ├── TransientKeyword.sol
│ │ │ ├── Trump.sol
│ │ │ ├── TxOriginUsedForAuth.sol
│ │ │ ├── U2.sol
│ │ │ ├── U3.sol
│ │ │ ├── U4.sol
│ │ │ ├── U5.sol
│ │ │ ├── UncheckedCalls.sol
│ │ │ ├── UncheckedReturn.sol
│ │ │ ├── UncheckedSend.sol
│ │ │ ├── UninitializedLocalVariables.sol
│ │ │ ├── UninitializedStateVariable.sol
│ │ │ ├── uniswap
│ │ │ │ ├── UniswapV2Swapper.sol
│ │ │ │ └── UniswapV3Swapper.sol
│ │ │ ├── UnprotectedInitialize.sol
│ │ │ ├── UnsafeERC721Mint.sol
│ │ │ ├── UnusedError.sol
│ │ │ ├── UnusedImport.sol
│ │ │ ├── UnusedStateVariables.sol
│ │ │ ├── UsingSelfdestruct.sol
│ │ │ ├── VoidConstructor.sol
│ │ │ ├── WeakRandomness.sol
│ │ │ ├── WrongOrderOfLayout.sol
│ │ │ ├── YulReturn.sol
│ │ │ └── ZeroAddressCheck.sol
│ │ └── test
│ │ └── Counter.t.sol
│ ├── foundry-nft-f23
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── foundry.lock
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── remappings.txt
│ │ └── src
│ │ ├── BasicNft.sol
│ │ ├── F1.sol
│ │ ├── F2.sol
│ │ ├── Initializer.sol
│ │ └── inner-core-modules
│ │ └── ICM.sol
│ ├── foundry-nft-f23-icm
│ │ ├── .github
│ │ │ └── workflows
│ │ │ └── test.yml
│ │ ├── .gitignore
│ │ ├── aderyn.toml
│ │ ├── foundry.toml
│ │ ├── README.md
│ │ ├── remappings.txt
│ │ └── src
│ │ ├── BasicNft.sol
│ │ ├── F1.sol
│ │ ├── F2.sol
│ │ ├── Initializer.sol
│ │ └── inner-core-modules
│ │ └── ICM.sol
│ ├── hardhat-js-playground
│ │ ├── .gitignore
│ │ ├── artifacts
│ │ │ ├── build-info
│ │ │ │ └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│ │ │ └── contracts
│ │ │ ├── Counter.sol
│ │ │ │ ├── Counter.dbg.json
│ │ │ │ └── Counter.json
│ │ │ ├── ExtendedInheritance.sol
│ │ │ │ ├── ExtendedInheritance.dbg.json
│ │ │ │ └── ExtendedInheritance.json
│ │ │ ├── IContractInheritance.sol
│ │ │ │ ├── IContractInheritance.dbg.json
│ │ │ │ └── IContractInheritance.json
│ │ │ ├── InheritanceBase.sol
│ │ │ │ ├── InheritanceBase.dbg.json
│ │ │ │ └── InheritanceBase.json
│ │ │ ├── KeccakContract.sol
│ │ │ │ ├── KeccakContract.dbg.json
│ │ │ │ └── KeccakContract.json
│ │ │ ├── Lock.sol
│ │ │ │ ├── Lock.dbg.json
│ │ │ │ └── Lock.json
│ │ │ └── StateVariables.sol
│ │ │ ├── StateVariables.dbg.json
│ │ │ └── StateVariables.json
│ │ ├── contracts
│ │ │ ├── Counter.sol
│ │ │ ├── ExtendedInheritance.sol
│ │ │ ├── IContractInheritance.sol
│ │ │ ├── InheritanceBase.sol
│ │ │ ├── KeccakContract.sol
│ │ │ ├── Lock.sol
│ │ │ └── StateVariables.sol
│ │ ├── hardhat.config.js
│ │ ├── package.json
│ │ ├── README.md
│ │ ├── scripts
│ │ │ └── deploy.js
│ │ ├── test
│ │ │ └── Lock.js
│ │ └── yarn.lock
│ ├── no-sol-files
│ │ ├── extra
│ │ │ └── HelloAgain.md
│ │ ├── Hello.txt
│ │ └── Hello.yul
│ └── toml
│ ├── nested_project1
│ │ ├── aderyn.toml
│ │ ├── folder1
│ │ │ └── hardhat.config.ts
│ │ ├── folder2
│ │ │ └── hardhat.config.ts
│ │ └── folder3
│ │ └── file.txt
│ └── nested_project2
│ ├── aderyn.toml
│ ├── folder1
│ │ └── foundry.toml
│ └── folder2
│ └── file1.txt
├── tools
│ └── xtask
│ ├── Cargo.toml
│ └── src
│ ├── blesspr.rs
│ ├── cut_release.rs
│ ├── flags.rs
│ ├── main.rs
│ ├── reportgen.rs
│ └── tomlgen.rs
└── typos.toml
```
# Files
--------------------------------------------------------------------------------
/benchmarks/zero-address-check/report/MAD.svg:
--------------------------------------------------------------------------------
```
1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
3 | zero-address-check:MAD
4 | </text>
5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
6 | Density (a.u.)
7 | </text>
8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
9 | Average time (µs)
10 | </text>
11 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
12 | <text x="77" y="396" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
13 | 0.05
14 | </text>
15 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,396 86,396 "/>
16 | <text x="77" y="311" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
17 | 0.1
18 | </text>
19 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,311 86,311 "/>
20 | <text x="77" y="226" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
21 | 0.15
22 | </text>
23 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,226 86,226 "/>
24 | <text x="77" y="142" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
25 | 0.2
26 | </text>
27 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,142 86,142 "/>
28 | <text x="77" y="57" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
29 | 0.25
30 | </text>
31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,57 86,57 "/>
32 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
33 | <text x="156" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
34 | 10
35 | </text>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="156,473 156,478 "/>
37 | <text x="238" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | 11
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="238,473 238,478 "/>
41 | <text x="321" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 12
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="321,473 321,478 "/>
45 | <text x="403" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 13
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="403,473 403,478 "/>
49 | <text x="485" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | 14
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="485,473 485,478 "/>
53 | <text x="567" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
54 | 15
55 | </text>
56 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="567,473 567,478 "/>
57 | <text x="650" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
58 | 16
59 | </text>
60 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="650,473 650,478 "/>
61 | <text x="732" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
62 | 17
63 | </text>
64 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="732,473 732,478 "/>
65 | <text x="814" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
66 | 18
67 | </text>
68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="814,473 814,478 "/>
69 | <text x="896" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
70 | 19
71 | </text>
72 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="896,473 896,478 "/>
73 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,472 88,472 90,471 92,471 93,470 95,469 97,468 98,467 100,466 102,465 103,463 105,462 107,461 109,459 110,457 112,456 114,454 115,452 117,450 119,448 120,445 122,443 124,440 125,438 127,435 129,433 131,430 132,427 134,424 136,421 137,418 139,415 141,412 142,409 144,406 146,403 147,399 149,396 151,393 153,389 154,386 156,382 158,378 159,375 161,371 163,367 164,363 166,359 168,356 169,352 171,348 173,344 175,341 176,337 178,333 180,330 181,327 183,323 185,320 186,317 188,314 190,311 191,308 193,306 195,303 197,301 198,299 200,297 202,295 203,293 205,291 207,290 208,288 210,287 212,286 214,285 215,284 217,283 219,283 220,282 222,282 224,282 225,283 227,283 229,284 230,285 232,286 234,287 236,289 237,290 239,292 241,294 242,296 244,298 246,300 247,302 249,304 251,306 252,307 254,309 256,310 258,311 259,312 261,312 263,313 264,313 266,312 268,311 269,310 271,309 273,307 274,305 276,302 278,300 280,296 281,293 283,290 285,286 286,282 288,278 290,273 291,269 293,264 295,260 296,256 298,251 300,247 302,243 303,239 305,236 307,233 308,230 310,227 312,225 313,223 315,222 317,220 318,220 320,219 322,219 324,219 325,219 327,219 329,219 330,220 332,220 334,220 335,220 337,221 339,220 341,220 342,220 344,219 346,218 347,217 349,215 351,214 352,212 354,210 356,208 357,205 359,203 361,200 363,197 364,194 366,191 368,188 369,185 371,181 373,178 374,175 376,172 378,168 379,165 381,162 383,158 385,155 386,152 388,149 390,146 391,143 393,141 395,138 396,136 398,134 400,132 401,130 403,129 405,127 407,126 408,125 410,124 412,124 413,123 415,123 417,123 418,122 420,122 422,122 423,122 425,121 427,121 429,120 430,119 432,118 434,117 435,116 437,114 439,112 440,110 442,108 444,106 445,104 447,102 449,100 451,99 452,97 454,95 456,94 457,93 459,93 461,92 462,92 464,93 466,93 468,95 469,96 471,98 473,100 474,103 476,106 478,109 479,112 481,116 483,121 484,125 486,130 488,136 490,141 491,147 493,153 495,159 496,166 498,172 500,179 501,185 503,192 505,198 506,205 508,211 510,216 512,222 513,227 515,232 517,237 518,241 520,245 522,249 523,252 525,255 527,257 528,260 530,262 532,264 534,265 535,267 537,269 539,270 540,272 542,273 544,274 545,276 547,277 549,279 550,280 552,282 554,284 556,285 557,287 559,289 561,291 562,293 564,295 566,298 567,300 569,302 571,305 573,307 574,309 576,312 578,314 579,316 581,319 583,321 584,323 586,325 588,327 589,329 591,330 593,332 595,334 596,335 598,336 600,337 601,339 603,340 605,341 606,342 608,343 610,343 611,344 613,345 615,346 617,346 618,347 620,348 622,348 623,349 625,350 627,351 628,351 630,352 632,353 633,354 635,355 637,356 639,357 640,359 642,360 644,361 645,363 647,364 649,366 650,367 652,369 654,371 655,372 657,373 659,375 661,376 662,377 664,377 666,378 667,378 669,378 671,378 672,378 674,377 676,376 677,375 679,374 681,372 683,371 684,369 686,367 688,365 689,364 691,362 693,360 694,359 696,357 698,356 700,355 701,355 703,354 705,354 706,354 708,354 710,355 711,355 713,356 715,357 716,358 718,359 720,361 722,363 723,364 725,366 727,368 728,370 730,372 732,374 733,376 735,379 737,381 738,383 740,386 742,388 744,391 745,394 747,396 749,399 750,401 752,404 754,407 755,409 757,412 759,414 760,416 762,418 764,420 766,422 767,424 769,426 771,427 772,429 774,430 776,431 777,432 779,433 781,433 782,434 784,434 786,435 788,435 789,435 791,435 793,435 794,435 796,435 798,435 799,435 801,435 803,435 804,435 806,435 808,435 810,435 811,435 813,435 815,436 816,436 818,437 820,437 821,438 823,438 825,439 827,439 828,440 830,441 832,441 833,442 835,443 837,443 838,444 840,445 842,445 843,446 845,446 847,447 849,447 850,448 852,448 854,449 855,449 857,450 859,450 860,451 862,451 864,452 865,452 867,452 869,453 871,453 872,454 874,454 876,454 877,454 879,454 881,454 882,454 884,454 886,454 887,454 889,454 891,454 893,453 894,453 896,453 898,452 899,452 901,451 903,451 904,450 906,450 908,449 909,449 911,449 913,448 915,448 916,448 918,448 920,448 921,448 923,448 925,449 926,449 928,450 930,450 932,451 "/>
74 | <polygon opacity="0.25" fill="#1F78B4" points="164,363 166,359 168,356 169,352 171,348 173,344 175,341 176,337 178,333 180,330 181,327 183,323 185,320 186,317 188,314 190,311 191,308 193,306 195,303 197,301 198,299 200,297 202,295 203,293 205,291 207,290 208,288 210,287 212,286 214,285 215,284 217,283 219,283 220,282 222,282 224,282 225,283 227,283 229,284 230,285 232,286 234,287 236,289 237,290 239,292 241,294 242,296 244,298 246,300 247,302 249,304 251,306 252,307 254,309 256,310 258,311 259,312 261,312 263,313 264,313 266,312 268,311 269,310 271,309 273,307 274,305 276,302 278,300 280,296 281,293 283,290 285,286 286,282 288,278 290,273 291,269 293,264 295,260 296,256 298,251 300,247 302,243 303,239 305,236 307,233 308,230 310,227 312,225 313,223 315,222 317,220 318,220 320,219 322,219 324,219 325,219 327,219 329,219 330,220 332,220 334,220 335,220 337,221 339,220 341,220 342,220 344,219 346,218 347,217 349,215 351,214 352,212 354,210 356,208 357,205 359,203 361,200 363,197 364,194 366,191 368,188 369,185 371,181 373,178 374,175 376,172 378,168 379,165 381,162 383,158 385,155 386,152 388,149 390,146 391,143 393,141 395,138 396,136 398,134 400,132 401,130 403,129 405,127 407,126 408,125 410,124 412,124 413,123 415,123 417,123 418,122 420,122 422,122 423,122 425,121 427,121 429,120 430,119 432,118 434,117 435,116 437,114 439,112 440,110 442,108 444,106 445,104 447,102 449,100 451,99 452,97 454,95 456,94 457,93 459,93 461,92 462,92 464,93 466,93 468,95 469,96 471,98 473,100 474,103 476,106 478,109 479,112 481,116 483,121 484,125 486,130 488,136 490,141 491,147 493,153 495,159 496,166 498,172 500,179 501,185 503,192 505,198 506,205 508,211 510,216 512,222 513,227 515,232 517,237 518,241 520,245 522,249 523,252 525,255 527,257 528,260 530,262 532,264 534,265 535,267 537,269 539,270 540,272 542,273 544,274 545,276 547,277 549,279 550,280 552,282 554,284 556,285 557,287 559,289 561,291 562,293 564,295 566,298 567,300 569,302 571,305 573,307 574,309 576,312 578,314 579,316 581,319 583,321 584,323 586,325 588,327 589,329 591,330 593,332 595,334 596,335 598,336 600,337 601,339 603,340 605,341 606,342 608,343 610,343 611,344 613,345 615,346 617,346 618,347 620,348 622,348 623,349 625,350 627,351 628,351 630,352 632,353 633,354 635,355 637,356 639,357 640,359 642,360 644,361 645,363 647,364 649,366 650,367 652,369 654,371 655,372 657,373 659,375 661,376 662,377 664,377 666,378 667,378 669,378 671,378 672,378 674,377 676,376 677,375 679,374 681,372 683,371 684,369 686,367 688,365 689,364 691,362 693,360 694,359 696,357 698,356 700,355 701,355 703,354 705,354 706,354 708,354 710,355 711,355 713,356 715,357 716,358 718,359 720,361 722,363 723,364 725,366 727,368 728,370 730,372 732,374 733,376 735,379 737,381 738,383 740,386 742,388 744,391 745,394 747,396 749,399 750,401 752,404 754,407 755,409 757,412 759,414 760,416 762,418 764,420 766,422 767,424 769,426 771,427 772,429 774,430 776,431 777,432 779,433 781,433 782,434 784,434 786,435 788,435 789,435 791,435 793,435 794,435 796,435 798,435 799,435 801,435 803,435 804,435 806,435 808,435 810,435 811,435 813,435 815,436 816,436 818,437 820,437 821,438 823,438 825,439 827,439 828,440 830,441 832,441 833,442 835,443 837,443 838,444 840,445 842,445 843,446 845,446 847,447 849,447 850,448 852,448 852,473 164,473 "/>
75 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="3" points="512,473 512,224 "/>
76 | <text x="798" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
77 | Bootstrap distribution
78 | </text>
79 | <text x="798" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
80 | Confidence interval
81 | </text>
82 | <text x="798" y="98" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
83 | Point estimate
84 | </text>
85 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,73 788,73 "/>
86 | <rect x="768" y="83" width="20" height="10" opacity="0.25" fill="#1F78B4" stroke="none"/>
87 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,103 788,103 "/>
88 | </svg>
89 |
```
--------------------------------------------------------------------------------
/benchmarks/inconsistent-type-names/report/MAD.svg:
--------------------------------------------------------------------------------
```
1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
3 | inconsistent-type-names:MAD
4 | </text>
5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
6 | Density (a.u.)
7 | </text>
8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
9 | Average time (µs)
10 | </text>
11 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
12 | <text x="77" y="440" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
13 | 0.002
14 | </text>
15 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,440 86,440 "/>
16 | <text x="77" y="390" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
17 | 0.004
18 | </text>
19 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,390 86,390 "/>
20 | <text x="77" y="341" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
21 | 0.006
22 | </text>
23 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,341 86,341 "/>
24 | <text x="77" y="291" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
25 | 0.008
26 | </text>
27 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,291 86,291 "/>
28 | <text x="77" y="242" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
29 | 0.01
30 | </text>
31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,242 86,242 "/>
32 | <text x="77" y="192" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
33 | 0.012
34 | </text>
35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,192 86,192 "/>
36 | <text x="77" y="142" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
37 | 0.014
38 | </text>
39 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,142 86,142 "/>
40 | <text x="77" y="93" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
41 | 0.016
42 | </text>
43 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,93 86,93 "/>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
45 | <text x="122" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 140
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="122,473 122,478 "/>
49 | <text x="252" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | 160
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="252,473 252,478 "/>
53 | <text x="382" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
54 | 180
55 | </text>
56 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="382,473 382,478 "/>
57 | <text x="512" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
58 | 200
59 | </text>
60 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="512,473 512,478 "/>
61 | <text x="642" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
62 | 220
63 | </text>
64 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="642,473 642,478 "/>
65 | <text x="773" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
66 | 240
67 | </text>
68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="773,473 773,478 "/>
69 | <text x="903" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
70 | 260
71 | </text>
72 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="903,473 903,478 "/>
73 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,468 88,468 90,468 92,467 93,467 95,467 97,467 98,467 100,466 102,466 103,466 105,466 107,465 109,465 110,465 112,464 114,464 115,464 117,463 119,463 120,463 122,462 124,462 125,461 127,461 129,460 131,460 132,459 134,458 136,458 137,457 139,457 141,456 142,455 144,454 146,454 147,453 149,452 151,452 153,451 154,450 156,449 158,448 159,448 161,447 163,446 164,445 166,444 168,443 169,442 171,441 173,439 175,438 176,437 178,435 180,434 181,433 183,431 185,430 186,428 188,427 190,426 191,424 193,423 195,421 197,420 198,419 200,418 202,416 203,415 205,414 207,413 208,412 210,411 212,410 214,409 215,408 217,407 219,405 220,404 222,403 224,402 225,401 227,399 229,398 230,397 232,395 234,394 236,392 237,391 239,389 241,387 242,386 244,384 246,382 247,380 249,378 251,375 252,373 254,370 256,368 258,365 259,362 261,359 263,356 264,352 266,349 268,345 269,342 271,338 273,334 274,330 276,327 278,323 280,319 281,315 283,312 285,308 286,304 288,300 290,297 291,293 293,289 295,285 296,282 298,278 300,274 302,270 303,266 305,261 307,257 308,253 310,249 312,244 313,240 315,236 317,232 318,228 320,224 322,220 324,216 325,213 327,209 329,206 330,202 332,199 334,196 335,193 337,190 339,187 341,184 342,181 344,178 346,174 347,171 349,168 351,164 352,161 354,158 356,154 357,151 359,148 361,145 363,142 364,139 366,136 368,134 369,132 371,130 373,128 374,126 376,125 378,123 379,122 381,120 383,119 385,117 386,115 388,114 390,112 391,110 393,109 395,107 396,105 398,103 400,101 401,100 403,98 405,97 407,96 408,95 410,94 412,93 413,93 415,93 417,94 418,94 420,95 422,96 423,98 425,99 427,101 429,103 430,105 432,108 434,110 435,113 437,116 439,119 440,121 442,124 444,127 445,130 447,133 449,136 451,138 452,141 454,143 456,145 457,147 459,149 461,150 462,151 464,152 466,153 468,153 469,153 471,153 473,152 474,151 476,151 478,150 479,149 481,148 483,147 484,146 486,145 488,145 490,144 491,144 493,145 495,146 496,147 498,148 500,150 501,153 503,156 505,159 506,162 508,166 510,170 512,174 513,179 515,183 517,187 518,192 520,196 522,199 523,203 525,206 527,209 528,212 530,214 532,215 534,216 535,216 537,216 539,216 540,215 542,213 544,211 545,209 547,206 549,203 550,200 552,196 554,193 556,189 557,185 559,181 561,177 562,173 564,170 566,167 567,164 569,161 571,159 573,157 574,156 576,155 578,155 579,155 581,156 583,158 584,160 586,163 588,166 589,170 591,175 593,180 595,185 596,190 598,196 600,202 601,207 603,213 605,219 606,225 608,230 610,235 611,240 613,244 615,248 617,251 618,254 620,256 622,258 623,260 625,261 627,261 628,261 630,261 632,261 633,260 635,259 637,258 639,256 640,255 642,253 644,252 645,250 647,249 649,248 650,247 652,246 654,245 655,244 657,244 659,244 661,244 662,245 664,246 666,247 667,249 669,250 671,253 672,255 674,258 676,261 677,264 679,267 681,270 683,274 684,277 686,281 688,284 689,288 691,291 693,295 694,298 696,301 698,303 700,306 701,309 703,311 705,313 706,315 708,316 710,318 711,320 713,321 715,323 716,324 718,326 720,327 722,329 723,331 725,333 727,335 728,337 730,339 732,341 733,343 735,346 737,348 738,350 740,353 742,355 744,357 745,359 747,361 749,363 750,365 752,366 754,368 755,370 757,371 759,373 760,374 762,375 764,377 766,378 767,379 769,380 771,381 772,382 774,384 776,385 777,386 779,387 781,388 782,390 784,391 786,392 788,393 789,395 791,396 793,398 794,399 796,400 798,402 799,403 801,404 803,406 804,407 806,408 808,410 810,411 811,412 813,413 815,414 816,415 818,416 820,418 821,419 823,420 825,421 827,422 828,423 830,424 832,425 833,426 835,427 837,428 838,429 840,430 842,431 843,432 845,433 847,434 849,435 850,436 852,437 854,437 855,438 857,439 859,440 860,441 862,442 864,443 865,444 867,445 869,446 871,447 872,448 874,449 876,450 877,451 879,453 881,454 882,455 884,456 886,457 887,458 889,459 891,460 893,461 894,461 896,462 898,463 899,464 901,465 903,465 904,466 906,467 908,467 909,468 911,468 913,469 915,469 916,470 918,470 920,471 921,471 923,471 925,472 926,472 928,472 930,472 932,472 "/>
74 | <polygon opacity="0.25" fill="#1F78B4" points="164,445 166,444 168,443 169,442 171,441 173,439 175,438 176,437 178,435 180,434 181,433 183,431 185,430 186,428 188,427 190,426 191,424 193,423 195,421 197,420 198,419 200,418 202,416 203,415 205,414 207,413 208,412 210,411 212,410 214,409 215,408 217,407 219,405 220,404 222,403 224,402 225,401 227,399 229,398 230,397 232,395 234,394 236,392 237,391 239,389 241,387 242,386 244,384 246,382 247,380 249,378 251,375 252,373 254,370 256,368 258,365 259,362 261,359 263,356 264,352 266,349 268,345 269,342 271,338 273,334 274,330 276,327 278,323 280,319 281,315 283,312 285,308 286,304 288,300 290,297 291,293 293,289 295,285 296,282 298,278 300,274 302,270 303,266 305,261 307,257 308,253 310,249 312,244 313,240 315,236 317,232 318,228 320,224 322,220 324,216 325,213 327,209 329,206 330,202 332,199 334,196 335,193 337,190 339,187 341,184 342,181 344,178 346,174 347,171 349,168 351,164 352,161 354,158 356,154 357,151 359,148 361,145 363,142 364,139 366,136 368,134 369,132 371,130 373,128 374,126 376,125 378,123 379,122 381,120 383,119 385,117 386,115 388,114 390,112 391,110 393,109 395,107 396,105 398,103 400,101 401,100 403,98 405,97 407,96 408,95 410,94 412,93 413,93 415,93 417,94 418,94 420,95 422,96 423,98 425,99 427,101 429,103 430,105 432,108 434,110 435,113 437,116 439,119 440,121 442,124 444,127 445,130 447,133 449,136 451,138 452,141 454,143 456,145 457,147 459,149 461,150 462,151 464,152 466,153 468,153 469,153 471,153 473,152 474,151 476,151 478,150 479,149 481,148 483,147 484,146 486,145 488,145 490,144 491,144 493,145 495,146 496,147 498,148 500,150 501,153 503,156 505,159 506,162 508,166 510,170 512,174 513,179 515,183 517,187 518,192 520,196 522,199 523,203 525,206 527,209 528,212 530,214 532,215 534,216 535,216 537,216 539,216 540,215 542,213 544,211 545,209 547,206 549,203 550,200 552,196 554,193 556,189 557,185 559,181 561,177 562,173 564,170 566,167 567,164 569,161 571,159 573,157 574,156 576,155 578,155 579,155 581,156 583,158 584,160 586,163 588,166 589,170 591,175 593,180 595,185 596,190 598,196 600,202 601,207 603,213 605,219 606,225 608,230 610,235 611,240 613,244 615,248 617,251 618,254 620,256 622,258 623,260 625,261 627,261 628,261 630,261 632,261 633,260 635,259 637,258 639,256 640,255 642,253 644,252 645,250 647,249 649,248 650,247 652,246 654,245 655,244 657,244 659,244 661,244 662,245 664,246 666,247 667,249 669,250 671,253 672,255 674,258 676,261 677,264 679,267 681,270 683,274 684,277 686,281 688,284 689,288 691,291 693,295 694,298 696,301 698,303 700,306 701,309 703,311 705,313 706,315 708,316 710,318 711,320 713,321 715,323 716,324 718,326 720,327 722,329 723,331 725,333 727,335 728,337 730,339 732,341 733,343 735,346 737,348 738,350 740,353 742,355 744,357 745,359 747,361 749,363 750,365 752,366 754,368 755,370 757,371 759,373 760,374 762,375 764,377 766,378 767,379 769,380 771,381 772,382 774,384 776,385 777,386 779,387 781,388 782,390 784,391 786,392 788,393 789,395 791,396 793,398 794,399 796,400 798,402 799,403 801,404 803,406 804,407 806,408 808,410 810,411 811,412 813,413 815,414 816,415 818,416 820,418 821,419 823,420 825,421 827,422 828,423 830,424 832,425 833,426 835,427 837,428 838,429 840,430 842,431 843,432 845,433 847,434 849,435 850,436 852,437 852,473 164,473 "/>
75 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="3" points="510,473 510,170 "/>
76 | <text x="798" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
77 | Bootstrap distribution
78 | </text>
79 | <text x="798" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
80 | Confidence interval
81 | </text>
82 | <text x="798" y="98" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
83 | Point estimate
84 | </text>
85 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,73 788,73 "/>
86 | <rect x="768" y="83" width="20" height="10" opacity="0.25" fill="#1F78B4" stroke="none"/>
87 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,103 788,103 "/>
88 | </svg>
89 |
```
--------------------------------------------------------------------------------
/reports/prb-math-report.md:
--------------------------------------------------------------------------------
```markdown
1 | # Aderyn Analysis Report
2 |
3 | This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
4 | # Table of Contents
5 |
6 | - [Summary](#summary)
7 | - [Files Summary](#files-summary)
8 | - [Files Details](#files-details)
9 | - [Issue Summary](#issue-summary)
10 | - [High Issues](#high-issues)
11 | - [H-1: Unsafe Casting of integers](#h-1-unsafe-casting-of-integers)
12 | - [H-2: Incorrect use of caret operator](#h-2-incorrect-use-of-caret-operator)
13 | - [Low Issues](#low-issues)
14 | - [L-1: Unspecific Solidity Pragma](#l-1-unspecific-solidity-pragma)
15 | - [L-2: Large Numeric Literal](#l-2-large-numeric-literal)
16 | - [L-3: Internal Function Used Only Once](#l-3-internal-function-used-only-once)
17 | - [L-4: Unused Import](#l-4-unused-import)
18 |
19 |
20 | # Summary
21 |
22 | ## Files Summary
23 |
24 | | Key | Value |
25 | | --- | --- |
26 | | .sol Files | 30 |
27 | | Total nSLOC | 1829 |
28 |
29 |
30 | ## Files Details
31 |
32 | | Filepath | nSLOC |
33 | | --- | --- |
34 | | src/Common.sol | 411 |
35 | | src/SD1x18.sol | 5 |
36 | | src/SD59x18.sol | 8 |
37 | | src/UD2x18.sol | 5 |
38 | | src/UD60x18.sol | 8 |
39 | | src/casting/Uint128.sol | 29 |
40 | | src/casting/Uint256.sol | 34 |
41 | | src/casting/Uint40.sol | 19 |
42 | | src/sd1x18/Casting.sol | 57 |
43 | | src/sd1x18/Constants.sol | 10 |
44 | | src/sd1x18/Errors.sol | 8 |
45 | | src/sd1x18/ValueType.sol | 12 |
46 | | src/sd59x18/Casting.sol | 78 |
47 | | src/sd59x18/Constants.sol | 31 |
48 | | src/sd59x18/Conversions.sol | 18 |
49 | | src/sd59x18/Errors.sol | 29 |
50 | | src/sd59x18/Helpers.sol | 72 |
51 | | src/sd59x18/Math.sol | 355 |
52 | | src/sd59x18/ValueType.sol | 73 |
53 | | src/ud2x18/Casting.sol | 43 |
54 | | src/ud2x18/Constants.sol | 8 |
55 | | src/ud2x18/Errors.sol | 4 |
56 | | src/ud2x18/ValueType.sol | 12 |
57 | | src/ud60x18/Casting.sol | 60 |
58 | | src/ud60x18/Constants.sol | 23 |
59 | | src/ud60x18/Conversions.sol | 15 |
60 | | src/ud60x18/Errors.sol | 14 |
61 | | src/ud60x18/Helpers.sol | 64 |
62 | | src/ud60x18/Math.sol | 255 |
63 | | src/ud60x18/ValueType.sol | 69 |
64 | | **Total** | **1829** |
65 |
66 |
67 | ## Issue Summary
68 |
69 | | Category | No. of Issues |
70 | | --- | --- |
71 | | High | 2 |
72 | | Low | 4 |
73 |
74 |
75 | # High Issues
76 |
77 | ## H-1: Unsafe Casting of integers
78 |
79 | Downcasting int/uints in Solidity can be unsafe due to the potential for data loss and unintended behavior.When downcasting a larger integer type to a smaller one (e.g., uint256 to uint128), the value may exceed the range of the target type,leading to truncation and loss of significant digits. Use OpenZeppelin's SafeCast library to safely downcast integers.
80 |
81 | <details><summary>6 Found Instances</summary>
82 |
83 |
84 | - Found in src/sd59x18/Casting.sol [Line: 31](../tests/prb-math/src/sd59x18/Casting.sol#L31)
85 |
86 | ```solidity
87 | result = SD1x18.wrap(int64(xInt));
88 | ```
89 |
90 | - Found in src/ud2x18/Casting.sol [Line: 54](../tests/prb-math/src/ud2x18/Casting.sol#L54)
91 |
92 | ```solidity
93 | result = uint40(xUint);
94 | ```
95 |
96 | - Found in src/ud60x18/Casting.sol [Line: 22](../tests/prb-math/src/ud60x18/Casting.sol#L22)
97 |
98 | ```solidity
99 | result = SD1x18.wrap(int64(uint64(xUint)));
100 | ```
101 |
102 | - Found in src/ud60x18/Casting.sol [Line: 33](../tests/prb-math/src/ud60x18/Casting.sol#L33)
103 |
104 | ```solidity
105 | result = UD2x18.wrap(uint64(xUint));
106 | ```
107 |
108 | - Found in src/ud60x18/Casting.sol [Line: 61](../tests/prb-math/src/ud60x18/Casting.sol#L61)
109 |
110 | ```solidity
111 | result = uint128(xUint);
112 | ```
113 |
114 | - Found in src/ud60x18/Casting.sol [Line: 72](../tests/prb-math/src/ud60x18/Casting.sol#L72)
115 |
116 | ```solidity
117 | result = uint40(xUint);
118 | ```
119 |
120 | </details>
121 |
122 |
123 |
124 | ## H-2: Incorrect use of caret operator
125 |
126 | The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.
127 |
128 | <details><summary>1 Found Instances</summary>
129 |
130 |
131 | - Found in src/Common.sol [Line: 452](../tests/prb-math/src/Common.sol#L452)
132 |
133 | ```solidity
134 | uint256 inverse = (3 * denominator) ^ 2;
135 | ```
136 |
137 | </details>
138 |
139 |
140 |
141 | # Low Issues
142 |
143 | ## L-1: Unspecific Solidity Pragma
144 |
145 | Consider using a specific version of Solidity in your contracts instead of a wide version. For example, instead of `pragma solidity ^0.8.0;`, use `pragma solidity 0.8.0;`
146 |
147 | <details><summary>27 Found Instances</summary>
148 |
149 |
150 | - Found in src/Common.sol [Line: 2](../tests/prb-math/src/Common.sol#L2)
151 |
152 | ```solidity
153 | pragma solidity >=0.8.19;
154 | ```
155 |
156 | - Found in src/SD1x18.sol [Line: 2](../tests/prb-math/src/SD1x18.sol#L2)
157 |
158 | ```solidity
159 | pragma solidity >=0.8.19;
160 | ```
161 |
162 | - Found in src/SD59x18.sol [Line: 2](../tests/prb-math/src/SD59x18.sol#L2)
163 |
164 | ```solidity
165 | pragma solidity >=0.8.19;
166 | ```
167 |
168 | - Found in src/UD2x18.sol [Line: 2](../tests/prb-math/src/UD2x18.sol#L2)
169 |
170 | ```solidity
171 | pragma solidity >=0.8.19;
172 | ```
173 |
174 | - Found in src/UD60x18.sol [Line: 2](../tests/prb-math/src/UD60x18.sol#L2)
175 |
176 | ```solidity
177 | pragma solidity >=0.8.19;
178 | ```
179 |
180 | - Found in src/sd1x18/Casting.sol [Line: 2](../tests/prb-math/src/sd1x18/Casting.sol#L2)
181 |
182 | ```solidity
183 | pragma solidity >=0.8.19;
184 | ```
185 |
186 | - Found in src/sd1x18/Constants.sol [Line: 2](../tests/prb-math/src/sd1x18/Constants.sol#L2)
187 |
188 | ```solidity
189 | pragma solidity >=0.8.19;
190 | ```
191 |
192 | - Found in src/sd1x18/Errors.sol [Line: 2](../tests/prb-math/src/sd1x18/Errors.sol#L2)
193 |
194 | ```solidity
195 | pragma solidity >=0.8.19;
196 | ```
197 |
198 | - Found in src/sd1x18/ValueType.sol [Line: 2](../tests/prb-math/src/sd1x18/ValueType.sol#L2)
199 |
200 | ```solidity
201 | pragma solidity >=0.8.19;
202 | ```
203 |
204 | - Found in src/sd59x18/Casting.sol [Line: 2](../tests/prb-math/src/sd59x18/Casting.sol#L2)
205 |
206 | ```solidity
207 | pragma solidity >=0.8.19;
208 | ```
209 |
210 | - Found in src/sd59x18/Constants.sol [Line: 2](../tests/prb-math/src/sd59x18/Constants.sol#L2)
211 |
212 | ```solidity
213 | pragma solidity >=0.8.19;
214 | ```
215 |
216 | - Found in src/sd59x18/Conversions.sol [Line: 2](../tests/prb-math/src/sd59x18/Conversions.sol#L2)
217 |
218 | ```solidity
219 | pragma solidity >=0.8.19;
220 | ```
221 |
222 | - Found in src/sd59x18/Errors.sol [Line: 2](../tests/prb-math/src/sd59x18/Errors.sol#L2)
223 |
224 | ```solidity
225 | pragma solidity >=0.8.19;
226 | ```
227 |
228 | - Found in src/sd59x18/Helpers.sol [Line: 2](../tests/prb-math/src/sd59x18/Helpers.sol#L2)
229 |
230 | ```solidity
231 | pragma solidity >=0.8.19;
232 | ```
233 |
234 | - Found in src/sd59x18/Math.sol [Line: 2](../tests/prb-math/src/sd59x18/Math.sol#L2)
235 |
236 | ```solidity
237 | pragma solidity >=0.8.19;
238 | ```
239 |
240 | - Found in src/sd59x18/ValueType.sol [Line: 2](../tests/prb-math/src/sd59x18/ValueType.sol#L2)
241 |
242 | ```solidity
243 | pragma solidity >=0.8.19;
244 | ```
245 |
246 | - Found in src/ud2x18/Casting.sol [Line: 2](../tests/prb-math/src/ud2x18/Casting.sol#L2)
247 |
248 | ```solidity
249 | pragma solidity >=0.8.19;
250 | ```
251 |
252 | - Found in src/ud2x18/Constants.sol [Line: 2](../tests/prb-math/src/ud2x18/Constants.sol#L2)
253 |
254 | ```solidity
255 | pragma solidity >=0.8.19;
256 | ```
257 |
258 | - Found in src/ud2x18/Errors.sol [Line: 2](../tests/prb-math/src/ud2x18/Errors.sol#L2)
259 |
260 | ```solidity
261 | pragma solidity >=0.8.19;
262 | ```
263 |
264 | - Found in src/ud2x18/ValueType.sol [Line: 2](../tests/prb-math/src/ud2x18/ValueType.sol#L2)
265 |
266 | ```solidity
267 | pragma solidity >=0.8.19;
268 | ```
269 |
270 | - Found in src/ud60x18/Casting.sol [Line: 2](../tests/prb-math/src/ud60x18/Casting.sol#L2)
271 |
272 | ```solidity
273 | pragma solidity >=0.8.19;
274 | ```
275 |
276 | - Found in src/ud60x18/Constants.sol [Line: 2](../tests/prb-math/src/ud60x18/Constants.sol#L2)
277 |
278 | ```solidity
279 | pragma solidity >=0.8.19;
280 | ```
281 |
282 | - Found in src/ud60x18/Conversions.sol [Line: 2](../tests/prb-math/src/ud60x18/Conversions.sol#L2)
283 |
284 | ```solidity
285 | pragma solidity >=0.8.19;
286 | ```
287 |
288 | - Found in src/ud60x18/Errors.sol [Line: 2](../tests/prb-math/src/ud60x18/Errors.sol#L2)
289 |
290 | ```solidity
291 | pragma solidity >=0.8.19;
292 | ```
293 |
294 | - Found in src/ud60x18/Helpers.sol [Line: 2](../tests/prb-math/src/ud60x18/Helpers.sol#L2)
295 |
296 | ```solidity
297 | pragma solidity >=0.8.19;
298 | ```
299 |
300 | - Found in src/ud60x18/Math.sol [Line: 2](../tests/prb-math/src/ud60x18/Math.sol#L2)
301 |
302 | ```solidity
303 | pragma solidity >=0.8.19;
304 | ```
305 |
306 | - Found in src/ud60x18/ValueType.sol [Line: 2](../tests/prb-math/src/ud60x18/ValueType.sol#L2)
307 |
308 | ```solidity
309 | pragma solidity >=0.8.19;
310 | ```
311 |
312 | </details>
313 |
314 |
315 |
316 | ## L-2: Large Numeric Literal
317 |
318 | Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.
319 |
320 | <details><summary>3 Found Instances</summary>
321 |
322 |
323 | - Found in src/sd59x18/Constants.sol [Line: 44](../tests/prb-math/src/sd59x18/Constants.sol#L44)
324 |
325 | ```solidity
326 | int256 constant uMAX_WHOLE_SD59x18 = 57896044618658097711785492504343953926634992332820282019728_000000000000000000;
327 | ```
328 |
329 | - Found in src/sd59x18/Constants.sol [Line: 52](../tests/prb-math/src/sd59x18/Constants.sol#L52)
330 |
331 | ```solidity
332 | int256 constant uMIN_WHOLE_SD59x18 = -57896044618658097711785492504343953926634992332820282019728_000000000000000000;
333 | ```
334 |
335 | - Found in src/ud60x18/Constants.sol [Line: 36](../tests/prb-math/src/ud60x18/Constants.sol#L36)
336 |
337 | ```solidity
338 | uint256 constant uMAX_WHOLE_UD60x18 = 115792089237316195423570985008687907853269984665640564039457_000000000000000000;
339 | ```
340 |
341 | </details>
342 |
343 |
344 |
345 | ## L-3: Internal Function Used Only Once
346 |
347 | Instead of separating the logic into a separate function, consider inlining the logic into the calling function. This can reduce the number of function calls and improve readability.
348 |
349 | <details><summary>3 Found Instances</summary>
350 |
351 |
352 | - Found in src/Common.sol [Line: 387](../tests/prb-math/src/Common.sol#L387)
353 |
354 | ```solidity
355 | function mulDiv(uint256 x, uint256 y, uint256 denominator) pure returns (uint256 result) {
356 | ```
357 |
358 | - Found in src/sd59x18/Math.sol [Line: 34](../tests/prb-math/src/sd59x18/Math.sol#L34)
359 |
360 | ```solidity
361 | function abs(SD59x18 x) pure returns (SD59x18 result) {
362 | ```
363 |
364 | - Found in src/sd59x18/Math.sol [Line: 557](../tests/prb-math/src/sd59x18/Math.sol#L557)
365 |
366 | ```solidity
367 | function mul(SD59x18 x, SD59x18 y) pure returns (SD59x18 result) {
368 | ```
369 |
370 | </details>
371 |
372 |
373 |
374 | ## L-4: Unused Import
375 |
376 | Redundant import statement. Consider removing it.
377 |
378 | <details><summary>22 Found Instances</summary>
379 |
380 |
381 | - Found in src/SD1x18.sol [Line: 22](../tests/prb-math/src/SD1x18.sol#L22)
382 |
383 | ```solidity
384 | import "./sd1x18/Casting.sol";
385 | ```
386 |
387 | - Found in src/SD1x18.sol [Line: 23](../tests/prb-math/src/SD1x18.sol#L23)
388 |
389 | ```solidity
390 | import "./sd1x18/Constants.sol";
391 | ```
392 |
393 | - Found in src/SD1x18.sol [Line: 24](../tests/prb-math/src/SD1x18.sol#L24)
394 |
395 | ```solidity
396 | import "./sd1x18/Errors.sol";
397 | ```
398 |
399 | - Found in src/SD1x18.sol [Line: 25](../tests/prb-math/src/SD1x18.sol#L25)
400 |
401 | ```solidity
402 | import "./sd1x18/ValueType.sol";
403 | ```
404 |
405 | - Found in src/SD59x18.sol [Line: 22](../tests/prb-math/src/SD59x18.sol#L22)
406 |
407 | ```solidity
408 | import "./sd59x18/Casting.sol";
409 | ```
410 |
411 | - Found in src/SD59x18.sol [Line: 23](../tests/prb-math/src/SD59x18.sol#L23)
412 |
413 | ```solidity
414 | import "./sd59x18/Constants.sol";
415 | ```
416 |
417 | - Found in src/SD59x18.sol [Line: 24](../tests/prb-math/src/SD59x18.sol#L24)
418 |
419 | ```solidity
420 | import "./sd59x18/Conversions.sol";
421 | ```
422 |
423 | - Found in src/SD59x18.sol [Line: 25](../tests/prb-math/src/SD59x18.sol#L25)
424 |
425 | ```solidity
426 | import "./sd59x18/Errors.sol";
427 | ```
428 |
429 | - Found in src/SD59x18.sol [Line: 26](../tests/prb-math/src/SD59x18.sol#L26)
430 |
431 | ```solidity
432 | import "./sd59x18/Helpers.sol";
433 | ```
434 |
435 | - Found in src/SD59x18.sol [Line: 27](../tests/prb-math/src/SD59x18.sol#L27)
436 |
437 | ```solidity
438 | import "./sd59x18/Math.sol";
439 | ```
440 |
441 | - Found in src/SD59x18.sol [Line: 28](../tests/prb-math/src/SD59x18.sol#L28)
442 |
443 | ```solidity
444 | import "./sd59x18/ValueType.sol";
445 | ```
446 |
447 | - Found in src/UD2x18.sol [Line: 22](../tests/prb-math/src/UD2x18.sol#L22)
448 |
449 | ```solidity
450 | import "./ud2x18/Casting.sol";
451 | ```
452 |
453 | - Found in src/UD2x18.sol [Line: 23](../tests/prb-math/src/UD2x18.sol#L23)
454 |
455 | ```solidity
456 | import "./ud2x18/Constants.sol";
457 | ```
458 |
459 | - Found in src/UD2x18.sol [Line: 24](../tests/prb-math/src/UD2x18.sol#L24)
460 |
461 | ```solidity
462 | import "./ud2x18/Errors.sol";
463 | ```
464 |
465 | - Found in src/UD2x18.sol [Line: 25](../tests/prb-math/src/UD2x18.sol#L25)
466 |
467 | ```solidity
468 | import "./ud2x18/ValueType.sol";
469 | ```
470 |
471 | - Found in src/UD60x18.sol [Line: 22](../tests/prb-math/src/UD60x18.sol#L22)
472 |
473 | ```solidity
474 | import "./ud60x18/Casting.sol";
475 | ```
476 |
477 | - Found in src/UD60x18.sol [Line: 23](../tests/prb-math/src/UD60x18.sol#L23)
478 |
479 | ```solidity
480 | import "./ud60x18/Constants.sol";
481 | ```
482 |
483 | - Found in src/UD60x18.sol [Line: 24](../tests/prb-math/src/UD60x18.sol#L24)
484 |
485 | ```solidity
486 | import "./ud60x18/Conversions.sol";
487 | ```
488 |
489 | - Found in src/UD60x18.sol [Line: 25](../tests/prb-math/src/UD60x18.sol#L25)
490 |
491 | ```solidity
492 | import "./ud60x18/Errors.sol";
493 | ```
494 |
495 | - Found in src/UD60x18.sol [Line: 26](../tests/prb-math/src/UD60x18.sol#L26)
496 |
497 | ```solidity
498 | import "./ud60x18/Helpers.sol";
499 | ```
500 |
501 | - Found in src/UD60x18.sol [Line: 27](../tests/prb-math/src/UD60x18.sol#L27)
502 |
503 | ```solidity
504 | import "./ud60x18/Math.sol";
505 | ```
506 |
507 | - Found in src/UD60x18.sol [Line: 28](../tests/prb-math/src/UD60x18.sol#L28)
508 |
509 | ```solidity
510 | import "./ud60x18/ValueType.sol";
511 | ```
512 |
513 | </details>
514 |
515 |
516 |
517 |
```
--------------------------------------------------------------------------------
/benchmarks/ecrecover/report/change/median.svg:
--------------------------------------------------------------------------------
```
1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
3 | ecrecover:median
4 | </text>
5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
6 | Density (a.u.)
7 | </text>
8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
9 | Relative change (%)
10 | </text>
11 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
12 | <text x="77" y="413" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
13 | 10
14 | </text>
15 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,413 86,413 "/>
16 | <text x="77" y="341" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
17 | 20
18 | </text>
19 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,341 86,341 "/>
20 | <text x="77" y="269" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
21 | 30
22 | </text>
23 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,269 86,269 "/>
24 | <text x="77" y="198" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
25 | 40
26 | </text>
27 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,198 86,198 "/>
28 | <text x="77" y="126" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
29 | 50
30 | </text>
31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,126 86,126 "/>
32 | <text x="77" y="54" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
33 | 60
34 | </text>
35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,54 86,54 "/>
36 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
37 | <text x="155" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
38 | -0.03
39 | </text>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="155,473 155,478 "/>
41 | <text x="265" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | -0.025
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="265,473 265,478 "/>
45 | <text x="374" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | -0.02
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="374,473 374,478 "/>
49 | <text x="483" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | -0.015
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="483,473 483,478 "/>
53 | <text x="592" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
54 | -0.01
55 | </text>
56 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="592,473 592,478 "/>
57 | <text x="701" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
58 | -0.005
59 | </text>
60 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="701,473 701,478 "/>
61 | <text x="810" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
62 | 0
63 | </text>
64 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="810,473 810,478 "/>
65 | <text x="919" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
66 | 0.005
67 | </text>
68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="919,473 919,478 "/>
69 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,469 88,469 90,469 92,469 93,470 95,470 97,470 98,470 100,471 102,471 103,471 105,471 107,472 109,472 110,472 112,472 114,472 115,472 117,472 119,472 120,472 122,472 124,472 125,472 127,472 129,472 131,472 132,472 134,472 136,472 137,472 139,471 141,471 142,471 144,471 146,471 147,470 149,470 151,470 153,469 154,469 156,469 158,468 159,468 161,468 163,467 164,467 166,466 168,466 169,465 171,464 173,464 175,463 176,462 178,461 180,461 181,460 183,459 185,458 186,457 188,456 190,455 191,454 193,453 195,452 197,451 198,451 200,450 202,449 203,448 205,447 207,447 208,446 210,445 212,445 214,444 215,443 217,443 219,442 220,441 222,440 224,439 225,439 227,438 229,437 230,436 232,435 234,434 236,433 237,432 239,431 241,430 242,429 244,427 246,426 247,425 249,424 251,423 252,422 254,421 256,420 258,419 259,418 261,416 263,415 264,414 266,412 268,411 269,409 271,407 273,405 274,403 276,401 278,398 280,396 281,393 283,390 285,387 286,384 288,381 290,378 291,374 293,371 295,367 296,363 298,360 300,356 302,352 303,348 305,343 307,339 308,335 310,330 312,326 313,321 315,317 317,312 318,308 320,303 322,298 324,293 325,288 327,283 329,278 330,272 332,267 334,262 335,256 337,251 339,245 341,239 342,233 344,227 346,222 347,216 349,210 351,203 352,197 354,191 356,185 357,179 359,173 361,167 363,161 364,156 366,150 368,144 369,139 371,133 373,128 374,123 376,118 378,113 379,108 381,104 383,99 385,95 386,91 388,87 390,84 391,81 393,78 395,75 396,72 398,70 400,68 401,66 403,64 405,63 407,61 408,60 410,59 412,58 413,58 415,57 417,56 418,56 420,56 422,55 423,55 425,55 427,54 429,54 430,54 432,54 434,54 435,53 437,54 439,54 440,54 442,54 444,54 445,55 447,56 449,57 451,58 452,59 454,60 456,62 457,64 459,65 461,68 462,70 464,72 466,75 468,78 469,81 471,84 473,87 474,90 476,93 478,96 479,99 481,102 483,104 484,107 486,110 488,112 490,114 491,116 493,118 495,120 496,122 498,124 500,125 501,127 503,129 505,130 506,132 508,134 510,135 512,137 513,139 515,141 517,144 518,146 520,148 522,150 523,153 525,155 527,157 528,159 530,161 532,162 534,164 535,165 537,165 539,166 540,166 542,167 544,167 545,166 547,166 549,165 550,165 552,164 554,163 556,163 557,162 559,161 561,161 562,160 564,160 566,159 567,159 569,158 571,158 573,158 574,157 576,157 578,157 579,156 581,155 583,155 584,154 586,153 588,152 589,151 591,150 593,149 595,148 596,147 598,146 600,145 601,145 603,144 605,144 606,145 608,145 610,146 611,147 613,149 615,150 617,153 618,155 620,158 622,161 623,164 625,167 627,171 628,174 630,178 632,182 633,186 635,190 637,194 639,198 640,202 642,207 644,211 645,215 647,220 649,224 650,229 652,233 654,238 655,242 657,247 659,251 661,256 662,260 664,265 666,269 667,274 669,278 671,282 672,286 674,290 676,294 677,298 679,302 681,305 683,308 684,312 686,315 688,318 689,320 691,323 693,326 694,328 696,331 698,333 700,336 701,338 703,340 705,343 706,345 708,347 710,350 711,352 713,354 715,356 716,358 718,360 720,362 722,364 723,366 725,368 727,370 728,371 730,373 732,375 733,376 735,378 737,380 738,381 740,383 742,384 744,385 745,387 747,388 749,389 750,391 752,392 754,393 755,394 757,395 759,396 760,397 762,398 764,399 766,400 767,400 769,401 771,402 772,402 774,403 776,403 777,404 779,404 781,404 782,405 784,405 786,405 788,406 789,406 791,406 793,406 794,407 796,407 798,408 799,408 801,408 803,409 804,409 806,410 808,411 810,411 811,412 813,413 815,413 816,414 818,415 820,416 821,417 823,418 825,419 827,420 828,421 830,422 832,423 833,424 835,425 837,426 838,427 840,429 842,430 843,431 845,432 847,433 849,434 850,435 852,436 854,437 855,438 857,440 859,441 860,442 862,442 864,443 865,444 867,445 869,446 871,447 872,448 874,449 876,449 877,450 879,451 881,451 882,452 884,453 886,453 887,454 889,454 891,455 893,455 894,456 896,456 898,457 899,457 901,457 903,458 904,458 906,459 908,459 909,459 911,460 913,460 915,460 916,461 918,461 920,461 921,462 923,462 925,462 926,463 928,463 930,464 932,464 "/>
70 | <polygon opacity="0.25" fill="#1F78B4" points="164,467 166,466 168,466 169,465 171,464 173,464 175,463 176,462 178,461 180,461 181,460 183,459 185,458 186,457 188,456 190,455 191,454 193,453 195,452 197,451 198,451 200,450 202,449 203,448 205,447 207,447 208,446 210,445 212,445 214,444 215,443 217,443 219,442 220,441 222,440 224,439 225,439 227,438 229,437 230,436 232,435 234,434 236,433 237,432 239,431 241,430 242,429 244,427 246,426 247,425 249,424 251,423 252,422 254,421 256,420 258,419 259,418 261,416 263,415 264,414 266,412 268,411 269,409 271,407 273,405 274,403 276,401 278,398 280,396 281,393 283,390 285,387 286,384 288,381 290,378 291,374 293,371 295,367 296,363 298,360 300,356 302,352 303,348 305,343 307,339 308,335 310,330 312,326 313,321 315,317 317,312 318,308 320,303 322,298 324,293 325,288 327,283 329,278 330,272 332,267 334,262 335,256 337,251 339,245 341,239 342,233 344,227 346,222 347,216 349,210 351,203 352,197 354,191 356,185 357,179 359,173 361,167 363,161 364,156 366,150 368,144 369,139 371,133 373,128 374,123 376,118 378,113 379,108 381,104 383,99 385,95 386,91 388,87 390,84 391,81 393,78 395,75 396,72 398,70 400,68 401,66 403,64 405,63 407,61 408,60 410,59 412,58 413,58 415,57 417,56 418,56 420,56 422,55 423,55 425,55 427,54 429,54 430,54 432,54 434,54 435,53 437,54 439,54 440,54 442,54 444,54 445,55 447,56 449,57 451,58 452,59 454,60 456,62 457,64 459,65 461,68 462,70 464,72 466,75 468,78 469,81 471,84 473,87 474,90 476,93 478,96 479,99 481,102 483,104 484,107 486,110 488,112 490,114 491,116 493,118 495,120 496,122 498,124 500,125 501,127 503,129 505,130 506,132 508,134 510,135 512,137 513,139 515,141 517,144 518,146 520,148 522,150 523,153 525,155 527,157 528,159 530,161 532,162 534,164 535,165 537,165 539,166 540,166 542,167 544,167 545,166 547,166 549,165 550,165 552,164 554,163 556,163 557,162 559,161 561,161 562,160 564,160 566,159 567,159 569,158 571,158 573,158 574,157 576,157 578,157 579,156 581,155 583,155 584,154 586,153 588,152 589,151 591,150 593,149 595,148 596,147 598,146 600,145 601,145 603,144 605,144 606,145 608,145 610,146 611,147 613,149 615,150 617,153 618,155 620,158 622,161 623,164 625,167 627,171 628,174 630,178 632,182 633,186 635,190 637,194 639,198 640,202 642,207 644,211 645,215 647,220 649,224 650,229 652,233 654,238 655,242 657,247 659,251 661,256 662,260 664,265 666,269 667,274 669,278 671,282 672,286 674,290 676,294 677,298 679,302 681,305 683,308 684,312 686,315 688,318 689,320 691,323 693,326 694,328 696,331 698,333 700,336 701,338 703,340 705,343 706,345 708,347 710,350 711,352 713,354 715,356 716,358 718,360 720,362 722,364 723,366 725,368 727,370 728,371 730,373 732,375 733,376 735,378 737,380 738,381 740,383 742,384 744,385 745,387 747,388 749,389 750,391 752,392 754,393 755,394 757,395 759,396 760,397 762,398 764,399 766,400 767,400 769,401 771,402 772,402 774,403 776,403 777,404 779,404 781,404 782,405 784,405 786,405 788,406 789,406 791,406 793,406 794,407 796,407 798,408 799,408 801,408 803,409 804,409 806,410 808,411 810,411 811,412 813,413 815,413 816,414 818,415 820,416 821,417 823,418 825,419 827,420 828,421 830,422 832,423 833,424 835,425 837,426 838,427 840,429 842,430 843,431 845,432 847,433 849,434 850,435 852,436 852,473 164,473 "/>
71 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="3" points="463,473 463,70 "/>
72 | <rect x="592" y="53" width="340" height="419" opacity="0.1" fill="#E31A1C" stroke="none"/>
73 | <text x="798" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
74 | Bootstrap distribution
75 | </text>
76 | <text x="798" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
77 | Confidence interval
78 | </text>
79 | <text x="798" y="98" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
80 | Point estimate
81 | </text>
82 | <text x="798" y="113" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
83 | Noise threshold
84 | </text>
85 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,73 788,73 "/>
86 | <rect x="768" y="83" width="20" height="10" opacity="0.25" fill="#1F78B4" stroke="none"/>
87 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,103 788,103 "/>
88 | <rect x="768" y="113" width="20" height="10" opacity="0.25" fill="#E31A1C" stroke="none"/>
89 | </svg>
90 |
```
--------------------------------------------------------------------------------
/benchmarks/unsafe-oz-erc721-mint/report/median.svg:
--------------------------------------------------------------------------------
```
1 | <svg width="960" height="540" viewBox="0 0 960 540" xmlns="http://www.w3.org/2000/svg">
2 | <text x="480" y="32" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="16.129032258064516" opacity="1" fill="#000000">
3 | unsafe-oz-erc721-mint:median
4 | </text>
5 | <text x="27" y="263" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000" transform="rotate(270, 27, 263)">
6 | Density (a.u.)
7 | </text>
8 | <text x="510" y="513" dy="-0.5ex" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
9 | Average time (µs)
10 | </text>
11 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="86,53 86,472 "/>
12 | <text x="77" y="421" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
13 | 0.02
14 | </text>
15 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,421 86,421 "/>
16 | <text x="77" y="365" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
17 | 0.04
18 | </text>
19 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,365 86,365 "/>
20 | <text x="77" y="310" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
21 | 0.06
22 | </text>
23 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,310 86,310 "/>
24 | <text x="77" y="254" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
25 | 0.08
26 | </text>
27 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,254 86,254 "/>
28 | <text x="77" y="198" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
29 | 0.1
30 | </text>
31 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,198 86,198 "/>
32 | <text x="77" y="142" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
33 | 0.12
34 | </text>
35 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,142 86,142 "/>
36 | <text x="77" y="86" dy="0.5ex" text-anchor="end" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
37 | 0.14
38 | </text>
39 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="81,86 86,86 "/>
40 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="87,473 932,473 "/>
41 | <text x="159" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
42 | 302
43 | </text>
44 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="159,473 159,478 "/>
45 | <text x="263" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
46 | 304
47 | </text>
48 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="263,473 263,478 "/>
49 | <text x="367" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
50 | 306
51 | </text>
52 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="367,473 367,478 "/>
53 | <text x="471" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
54 | 308
55 | </text>
56 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="471,473 471,478 "/>
57 | <text x="574" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
58 | 310
59 | </text>
60 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="574,473 574,478 "/>
61 | <text x="678" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
62 | 312
63 | </text>
64 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="678,473 678,478 "/>
65 | <text x="782" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
66 | 314
67 | </text>
68 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="782,473 782,478 "/>
69 | <text x="885" y="483" dy="0.76em" text-anchor="middle" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
70 | 316
71 | </text>
72 | <polyline fill="none" opacity="1" stroke="#000000" stroke-width="1" points="885,473 885,478 "/>
73 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="87,472 88,472 90,471 92,470 93,469 95,467 97,466 98,464 100,462 102,460 103,458 105,455 107,452 109,449 110,445 112,441 114,437 115,432 117,427 119,421 120,414 122,408 124,400 125,392 127,384 129,375 131,366 132,356 134,345 136,334 137,323 139,311 141,299 142,287 144,275 146,262 147,250 149,237 151,224 153,212 154,200 156,188 158,177 159,166 161,155 163,146 164,137 166,128 168,121 169,114 171,108 173,103 175,99 176,96 178,94 180,92 181,92 183,92 185,94 186,96 188,98 190,101 191,105 193,110 195,115 197,120 198,126 200,131 202,138 203,144 205,150 207,156 208,163 210,169 212,175 214,181 215,187 217,193 219,199 220,204 222,209 224,214 225,218 227,223 229,227 230,231 232,234 234,238 236,241 237,244 239,247 241,249 242,252 244,254 246,256 247,258 249,260 251,262 252,264 254,266 256,267 258,269 259,270 261,271 263,273 264,274 266,275 268,277 269,278 271,279 273,280 274,282 276,283 278,284 280,285 281,286 283,287 285,288 286,290 288,291 290,292 291,293 293,294 295,295 296,296 298,297 300,297 302,298 303,299 305,300 307,300 308,301 310,301 312,302 313,302 315,302 317,302 318,302 320,302 322,302 324,302 325,302 327,301 329,301 330,300 332,299 334,299 335,298 337,297 339,296 341,295 342,294 344,293 346,292 347,291 349,289 351,288 352,287 354,286 356,286 357,285 359,284 361,284 363,283 364,283 366,284 368,284 369,285 371,285 373,287 374,288 376,290 378,292 379,294 381,297 383,300 385,303 386,306 388,310 390,314 391,319 393,323 395,328 396,332 398,337 400,342 401,348 403,353 405,358 407,363 408,368 410,373 412,378 413,383 415,387 417,392 418,396 420,400 422,404 423,407 425,410 427,413 429,416 430,418 432,420 434,422 435,423 437,424 439,425 440,425 442,425 444,425 445,424 447,424 449,422 451,421 452,419 454,418 456,415 457,413 459,411 461,408 462,405 464,402 466,399 468,396 469,393 471,390 473,386 474,383 476,380 478,377 479,374 481,371 483,369 484,366 486,364 488,362 490,360 491,359 493,358 495,357 496,356 498,356 500,356 501,356 503,356 505,357 506,358 508,359 510,361 512,363 513,365 515,367 517,369 518,371 520,374 522,377 523,379 525,382 527,385 528,388 530,391 532,394 534,397 535,399 537,402 539,405 540,407 542,409 544,412 545,414 547,415 549,417 550,418 552,420 554,421 556,421 557,422 559,422 561,422 562,421 564,421 566,420 567,419 569,418 571,416 573,414 574,412 576,410 578,407 579,405 581,402 583,399 584,396 586,393 588,389 589,386 591,383 593,379 595,376 596,372 598,369 600,366 601,362 603,359 605,355 606,352 608,348 610,345 611,341 613,338 615,335 617,331 618,328 620,324 622,321 623,317 625,314 627,310 628,306 630,303 632,299 633,295 635,291 637,287 639,284 640,280 642,276 644,272 645,268 647,265 649,261 650,258 652,255 654,252 655,249 657,246 659,244 661,242 662,240 664,239 666,238 667,237 669,237 671,237 672,237 674,238 676,240 677,241 679,243 681,246 683,248 684,251 686,254 688,257 689,261 691,264 693,268 694,271 696,275 698,278 700,281 701,284 703,287 705,290 706,293 708,295 710,298 711,300 713,301 715,303 716,305 718,306 720,307 722,308 723,309 725,309 727,310 728,310 730,310 732,310 733,310 735,310 737,310 738,309 740,308 742,307 744,306 745,304 747,302 749,300 750,297 752,294 754,291 755,287 757,283 759,278 760,273 762,267 764,261 766,254 767,247 769,240 771,233 772,225 774,217 776,209 777,200 779,192 781,184 782,176 784,168 786,160 788,153 789,145 791,139 793,133 794,127 796,122 798,118 799,114 801,112 803,109 804,108 806,107 808,107 810,108 811,110 813,112 815,115 816,118 818,122 820,127 821,132 823,138 825,144 827,151 828,158 830,166 832,173 833,181 835,189 837,198 838,206 840,214 842,223 843,232 845,240 847,249 849,257 850,266 852,274 854,282 855,290 857,298 859,306 860,314 862,321 864,328 865,335 867,342 869,349 871,355 872,361 874,367 876,373 877,379 879,384 881,389 882,394 884,399 886,403 887,407 889,411 891,415 893,419 894,422 896,426 898,429 899,432 901,435 903,437 904,440 906,442 908,444 909,447 911,449 913,450 915,452 916,454 918,455 920,457 921,458 923,460 925,461 926,462 928,463 930,464 932,465 "/>
74 | <polygon opacity="0.25" fill="#1F78B4" points="164,137 166,128 168,121 169,114 171,108 173,103 175,99 176,96 178,94 180,92 181,92 183,92 185,94 186,96 188,98 190,101 191,105 193,110 195,115 197,120 198,126 200,131 202,138 203,144 205,150 207,156 208,163 210,169 212,175 214,181 215,187 217,193 219,199 220,204 222,209 224,214 225,218 227,223 229,227 230,231 232,234 234,238 236,241 237,244 239,247 241,249 242,252 244,254 246,256 247,258 249,260 251,262 252,264 254,266 256,267 258,269 259,270 261,271 263,273 264,274 266,275 268,277 269,278 271,279 273,280 274,282 276,283 278,284 280,285 281,286 283,287 285,288 286,290 288,291 290,292 291,293 293,294 295,295 296,296 298,297 300,297 302,298 303,299 305,300 307,300 308,301 310,301 312,302 313,302 315,302 317,302 318,302 320,302 322,302 324,302 325,302 327,301 329,301 330,300 332,299 334,299 335,298 337,297 339,296 341,295 342,294 344,293 346,292 347,291 349,289 351,288 352,287 354,286 356,286 357,285 359,284 361,284 363,283 364,283 366,284 368,284 369,285 371,285 373,287 374,288 376,290 378,292 379,294 381,297 383,300 385,303 386,306 388,310 390,314 391,319 393,323 395,328 396,332 398,337 400,342 401,348 403,353 405,358 407,363 408,368 410,373 412,378 413,383 415,387 417,392 418,396 420,400 422,404 423,407 425,410 427,413 429,416 430,418 432,420 434,422 435,423 437,424 439,425 440,425 442,425 444,425 445,424 447,424 449,422 451,421 452,419 454,418 456,415 457,413 459,411 461,408 462,405 464,402 466,399 468,396 469,393 471,390 473,386 474,383 476,380 478,377 479,374 481,371 483,369 484,366 486,364 488,362 490,360 491,359 493,358 495,357 496,356 498,356 500,356 501,356 503,356 505,357 506,358 508,359 510,361 512,363 513,365 515,367 517,369 518,371 520,374 522,377 523,379 525,382 527,385 528,388 530,391 532,394 534,397 535,399 537,402 539,405 540,407 542,409 544,412 545,414 547,415 549,417 550,418 552,420 554,421 556,421 557,422 559,422 561,422 562,421 564,421 566,420 567,419 569,418 571,416 573,414 574,412 576,410 578,407 579,405 581,402 583,399 584,396 586,393 588,389 589,386 591,383 593,379 595,376 596,372 598,369 600,366 601,362 603,359 605,355 606,352 608,348 610,345 611,341 613,338 615,335 617,331 618,328 620,324 622,321 623,317 625,314 627,310 628,306 630,303 632,299 633,295 635,291 637,287 639,284 640,280 642,276 644,272 645,268 647,265 649,261 650,258 652,255 654,252 655,249 657,246 659,244 661,242 662,240 664,239 666,238 667,237 669,237 671,237 672,237 674,238 676,240 677,241 679,243 681,246 683,248 684,251 686,254 688,257 689,261 691,264 693,268 694,271 696,275 698,278 700,281 701,284 703,287 705,290 706,293 708,295 710,298 711,300 713,301 715,303 716,305 718,306 720,307 722,308 723,309 725,309 727,310 728,310 730,310 732,310 733,310 735,310 737,310 738,309 740,308 742,307 744,306 745,304 747,302 749,300 750,297 752,294 754,291 755,287 757,283 759,278 760,273 762,267 764,261 766,254 767,247 769,240 771,233 772,225 774,217 776,209 777,200 779,192 781,184 782,176 784,168 786,160 788,153 789,145 791,139 793,133 794,127 796,122 798,118 799,114 801,112 803,109 804,108 806,107 808,107 810,108 811,110 813,112 815,115 816,118 818,122 820,127 821,132 823,138 825,144 827,151 828,158 830,166 832,173 833,181 835,189 837,198 838,206 840,214 842,223 843,232 845,240 847,249 849,257 850,266 852,274 852,473 164,473 "/>
75 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="3" points="497,473 497,356 "/>
76 | <text x="798" y="68" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
77 | Bootstrap distribution
78 | </text>
79 | <text x="798" y="83" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
80 | Confidence interval
81 | </text>
82 | <text x="798" y="98" dy="0.76em" text-anchor="start" font-family="sans-serif" font-size="9.67741935483871" opacity="1" fill="#000000">
83 | Point estimate
84 | </text>
85 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,73 788,73 "/>
86 | <rect x="768" y="83" width="20" height="10" opacity="0.25" fill="#1F78B4" stroke="none"/>
87 | <polyline fill="none" opacity="1" stroke="#1F78B4" stroke-width="1" points="768,103 788,103 "/>
88 | </svg>
89 |
```