#
tokens: 84684/50000 1/1143 files (page 92/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 92 of 94. Use http://codebase.md/cyfrin/aderyn?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_visitor.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── getters.rs
│   │   │   │   │   ├── 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
│   │   │   ├── workspace_visitor.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
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.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
│   │   │   ├── 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
│   │   │   │   ├── macros.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_init_order.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
│   ├── 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
│   ├── detector-exclude-report.md
│   ├── detector-include-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
│   └── via-ir-enabled-report.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
│   ├── detector-exclude
│   │   ├── aderyn.toml
│   │   └── InconsistentUints.sol
│   ├── detector-include
│   │   ├── aderyn.toml
│   │   └── InconsistentUints.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
│   └── via-ir-enabled
│       ├── .gitignore
│       ├── foundry.toml
│       └── src
│           └── SemanticOrdering.sol
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/reports/report.md:
--------------------------------------------------------------------------------

```markdown
# Aderyn Analysis Report

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.
# Table of Contents

- [Summary](#summary)
  - [Files Summary](#files-summary)
  - [Files Details](#files-details)
  - [Issue Summary](#issue-summary)
- [High Issues](#high-issues)
  - [H-1: `abi.encodePacked()` Hash Collision](#h-1-abiencodepacked-hash-collision)
  - [H-2: Arbitrary `from` Passed to `transferFrom`](#h-2-arbitrary-from-passed-to-transferfrom)
  - [H-3: Constant functions changes state](#h-3-constant-functions-changes-state)
  - [H-4: Contract locks Ether without a withdraw function](#h-4-contract-locks-ether-without-a-withdraw-function)
  - [H-5: Dangerous unary operator](#h-5-dangerous-unary-operator)
  - [H-6: `delegatecall` to an Arbitrary Address](#h-6-delegatecall-to-an-arbitrary-address)
  - [H-7: Deletion from a nested mapping](#h-7-deletion-from-a-nested-mapping)
  - [H-8: Direct assignment of array length](#h-8-direct-assignment-of-array-length)
  - [H-9: EnumerableSet.remove Corrupts Order](#h-9-enumerablesetremove-corrupts-order)
  - [H-10: ETH transferred without address checks](#h-10-eth-transferred-without-address-checks)
  - [H-11: Experimental ABI Encoder](#h-11-experimental-abi-encoder)
  - [H-12: Function Selector Collision](#h-12-function-selector-collision)
  - [H-13: Incorrect use of caret operator](#h-13-incorrect-use-of-caret-operator)
  - [H-14: Incorrect ERC20 interface](#h-14-incorrect-erc20-interface)
  - [H-15: Incorrect ERC721 interface](#h-15-incorrect-erc721-interface)
  - [H-16: Incorrect Assembly Shift Parameter Order](#h-16-incorrect-assembly-shift-parameter-order)
  - [H-17: Misused boolean with logical operators](#h-17-misused-boolean-with-logical-operators)
  - [H-18: Loop contains `msg.value`](#h-18-loop-contains-msgvalue)
  - [H-19: Contract Has Multiple Constructors](#h-19-contract-has-multiple-constructors)
  - [H-20: Nested Structs in Mappings pre-0.5.0](#h-20-nested-structs-in-mappings-pre-050)
  - [H-21: Out of Order Retryable Transaction](#h-21-out-of-order-retryable-transaction)
  - [H-22: Usage of variable before declaration](#h-22-usage-of-variable-before-declaration)
  - [H-23: Reentrancy: State change after external call](#h-23-reentrancy-state-change-after-external-call)
  - [H-24: Contract Name Reused in Different Files](#h-24-contract-name-reused-in-different-files)
  - [H-25: RTLO character detected in file: \u{202e}](#h-25-rtlo-character-detected-in-file-u202e)
  - [H-26: `selfdestruct` is Deprecated](#h-26-selfdestruct-is-deprecated)
  - [H-27: Signed integer array in storage (solc `<0.5.10`)](#h-27-signed-integer-array-in-storage-solc-0510)
  - [H-28: Shadowed State Variable](#h-28-shadowed-state-variable)
  - [H-29: Storage Array Edited with Memory](#h-29-storage-array-edited-with-memory)
  - [H-30: Dangerous strict equality checks on contract balances](#h-30-dangerous-strict-equality-checks-on-contract-balances)
  - [H-31: Tautological comparison](#h-31-tautological-comparison)
  - [H-32: Tautology or Contradiction in comparison](#h-32-tautology-or-contradiction-in-comparison)
  - [H-33: Use of `tx.origin` for authentication](#h-33-use-of-txorigin-for-authentication)
  - [H-34: Unchecked Low level calls](#h-34-unchecked-low-level-calls)
  - [H-35: Unchecked `bool success` value for ETH send](#h-35-unchecked-bool-success-value-for-eth-send)
  - [H-36: Unprotected initializer](#h-36-unprotected-initializer)
  - [H-37: Unsafe Casting of integers](#h-37-unsafe-casting-of-integers)
  - [H-38: Weak Randomness](#h-38-weak-randomness)
  - [H-39: Yul block contains `return`](#h-39-yul-block-contains-return)
- [Low Issues](#low-issues)
  - [L-1: State change in `assert()` statement](#l-1-state-change-in-assert-statement)
  - [L-2: Using `block.timestamp` for swap deadline offers no protection](#l-2-using-blocktimestamp-for-swap-deadline-offers-no-protection)
  - [L-3: Boolean equality is not required](#l-3-boolean-equality-is-not-required)
  - [L-4: Builtin Symbol Shadowing](#l-4-builtin-symbol-shadowing)
  - [L-5: Centralization Risk](#l-5-centralization-risk)
  - [L-6: Constant Function Contains Assembly](#l-6-constant-function-contains-assembly)
  - [L-7: Costly operations inside loop](#l-7-costly-operations-inside-loop)
  - [L-8: Dead Code](#l-8-dead-code)
  - [L-9: `delegatecall` in loop](#l-9-delegatecall-in-loop)
  - [L-10: Deprecated OpenZeppelin Function](#l-10-deprecated-openzeppelin-function)
  - [L-11: Incorrect Order of Division and Multiplication](#l-11-incorrect-order-of-division-and-multiplication)
  - [L-12: `ecrecover` Signature Malleability](#l-12-ecrecover-signature-malleability)
  - [L-13: Empty Block](#l-13-empty-block)
  - [L-14: Empty `require()` / `revert()` Statement](#l-14-empty-require--revert-statement)
  - [L-15: Function Used to Initialize State Variable](#l-15-function-used-to-initialize-state-variable)
  - [L-16: Function Pointer in Constructor](#l-16-function-pointer-in-constructor)
  - [L-17: Inconsistent uint256/uint (or) int256/int types](#l-17-inconsistent-uint256uint-or-int256int-types)
  - [L-18: Incorrect Use Of Modifier](#l-18-incorrect-use-of-modifier)
  - [L-19: Internal Function Used Only Once](#l-19-internal-function-used-only-once)
  - [L-20: Large Numeric Literal](#l-20-large-numeric-literal)
  - [L-21: Literal Instead of Constant](#l-21-literal-instead-of-constant)
  - [L-22: Local Variable Shadows State Variable](#l-22-local-variable-shadows-state-variable)
  - [L-23: Missing Inheritance](#l-23-missing-inheritance)
  - [L-24: Modifier Invoked Only Once](#l-24-modifier-invoked-only-once)
  - [L-25: Multiple Placeholders in Modifier](#l-25-multiple-placeholders-in-modifier)
  - [L-26: `nonReentrant` is Not the First Modifier](#l-26-nonreentrant-is-not-the-first-modifier)
  - [L-27: PUSH0 Opcode](#l-27-push0-opcode)
  - [L-28: Redundant Statement](#l-28-redundant-statement)
  - [L-29: Loop Contains `require`/`revert`](#l-29-loop-contains-requirerevert)
  - [L-30: Return Bomb](#l-30-return-bomb)
  - [L-31: Solmate's SafeTransferLib](#l-31-solmates-safetransferlib)
  - [L-32: State Change Without Event](#l-32-state-change-without-event)
  - [L-33: Address State Variable Set Without Checks](#l-33-address-state-variable-set-without-checks)
  - [L-34: State Variable Could Be Constant](#l-34-state-variable-could-be-constant)
  - [L-35: State Variable Could Be Immutable](#l-35-state-variable-could-be-immutable)
  - [L-36: State Variable is Read as External](#l-36-state-variable-is-read-as-external)
  - [L-37: Storage Array Length not Cached](#l-37-storage-array-length-not-cached)
  - [L-38: Contract has TODO Comments](#l-38-contract-has-todo-comments)
  - [L-39: Unchecked Return](#l-39-unchecked-return)
  - [L-40: Uninitialized Local Variable](#l-40-uninitialized-local-variable)
  - [L-41: Unsafe ERC20 Operation](#l-41-unsafe-erc20-operation)
  - [L-42: Unsafe `ERC721::_mint()`](#l-42-unsafe-erc721mint)
  - [L-43: Unspecific Solidity Pragma](#l-43-unspecific-solidity-pragma)
  - [L-44: Unused Error](#l-44-unused-error)
  - [L-45: Unused Import](#l-45-unused-import)
  - [L-46: Public Function Not Used Internally](#l-46-public-function-not-used-internally)
  - [L-47: Unused State Variable](#l-47-unused-state-variable)
  - [L-48: Void constructor](#l-48-void-constructor)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 126 |
| Total nSLOC | 4727 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| src/AbstractContract.sol | 12 |
| src/AderynIgnoreCustomDetectors.sol | 17 |
| src/AdminContract.sol | 11 |
| src/ArbitraryTransferFrom.sol | 37 |
| src/AssemblyExample.sol | 9 |
| src/AssertStateChange.sol | 11 |
| src/BooleanEquality.sol | 27 |
| src/BuiltinSymbolShadow.sol | 14 |
| src/CacheArrayLength.sol | 38 |
| src/CallGraphTests.sol | 49 |
| src/Casting.sol | 146 |
| src/CompilerBugStorageSignedIntegerArray.sol | 13 |
| src/ConstFuncChangeState.sol | 15 |
| src/ConstantFuncsAssembly.sol | 26 |
| src/ConstantsLiterals.sol | 28 |
| src/ContractLocksEther.sol | 142 |
| src/ContractWithTodo.sol | 7 |
| src/CostlyOperationsInsideLoops.sol | 17 |
| src/Counter.sol | 20 |
| src/CrazyPragma.sol | 4 |
| src/DangerousStrictEquality1.sol | 6 |
| src/DangerousStrictEquality2.sol | 9 |
| src/DangerousUnaryOperator.sol | 13 |
| src/DeadCode.sol | 23 |
| src/DelegateCallWithoutAddressCheck.sol | 31 |
| src/DeletionNestedMappingStructureContract.sol | 11 |
| src/DeprecatedOZFunctions.sol | 32 |
| src/DivisionBeforeMultiplication.sol | 22 |
| src/DynamicArrayLengthAssignment.sol | 16 |
| src/EmitAfterExternalCall.sol | 67 |
| src/EmptyBlocks.sol | 48 |
| src/EnumerableSetIteration.sol | 55 |
| src/ExperimentalEncoder.sol | 4 |
| src/ExternalCalls.sol | 60 |
| src/FunctionInitializingState.sol | 49 |
| src/FunctionPointers.sol | 10 |
| src/FunctionSignatureCollision.sol | 9 |
| src/HugeConstants.sol | 36 |
| src/IgnoreEverything.sol | 5 |
| src/InconsistentUints.sol | 17 |
| src/IncorrectCaretOperator.sol | 16 |
| src/IncorrectERC20.sol | 98 |
| src/IncorrectERC721.sol | 238 |
| src/IncorrectModifier.sol | 65 |
| src/IncorrectShift.sol | 17 |
| src/InternalFunctions.sol | 22 |
| src/KeccakContract.sol | 21 |
| src/LocalVariableShadow.sol | 23 |
| src/MissingInheritance.sol | 39 |
| src/MisusedBoolean.sol | 67 |
| src/MsgValueInLoop.sol | 55 |
| src/MultipleConstructorSchemes.sol | 10 |
| src/MultiplePlaceholders.sol | 40 |
| src/OnceModifierExample.sol | 8 |
| src/OnlyLibrary.sol | 2 |
| src/OutOfOrderRetryable.sol | 165 |
| src/PragmaRange.sol | 6 |
| src/PreDeclaredVarUsage.sol | 9 |
| src/PublicFunction.sol | 15 |
| src/PublicVariableReadInExternalContext.sol | 32 |
| src/RTLO.sol | 7 |
| src/RedundantStatements.sol | 14 |
| src/ReturnBomb.sol | 44 |
| src/RevertsAndRequriesInLoops.sol | 27 |
| src/SendEtherNoChecks.sol | 58 |
| src/SendEtherNoChecksLibImport.sol | 17 |
| src/StateChangeAfterExternalCall.sol | 54 |
| src/StateShadowing.sol | 17 |
| src/StateVariableCouldBeDeclaredConstant.sol | 27 |
| src/StateVariableCouldBeDeclaredImmutable.sol | 22 |
| src/StateVariables.sol | 58 |
| src/StateVariablesChangesWithoutEvents.sol | 80 |
| src/StateVariablesManipulation.sol | 250 |
| src/StorageConditionals.sol | 59 |
| src/StorageParameters.sol | 16 |
| src/T11sTranferer.sol | 8 |
| src/TautologicalCompare.sol | 17 |
| src/TautologyOrContradiction.sol | 11 |
| src/TestERC20.sol | 62 |
| src/TransientKeyword.sol | 10 |
| src/Trump.sol | 281 |
| src/TxOriginUsedForAuth.sol | 43 |
| src/U2.sol | 3 |
| src/U3.sol | 2 |
| src/U4.sol | 3 |
| src/U5.sol | 6 |
| src/UncheckedCalls.sol | 24 |
| src/UncheckedReturn.sol | 33 |
| src/UncheckedSend.sol | 18 |
| src/UninitializedLocalVariables.sol | 62 |
| src/UninitializedStateVariable.sol | 29 |
| src/UnprotectedInitialize.sol | 44 |
| src/UnsafeERC721Mint.sol | 18 |
| src/UnusedError.sol | 23 |
| src/UnusedImport.sol | 10 |
| src/UnusedStateVariables.sol | 12 |
| src/UsingSelfdestruct.sol | 6 |
| src/VoidConstructor.sol | 21 |
| src/WeakRandomness.sol | 59 |
| src/WrongOrderOfLayout.sol | 13 |
| src/YulReturn.sol | 8 |
| src/ZeroAddressCheck.sol | 41 |
| src/auditor_mode/ExternalCalls.sol | 65 |
| src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol | 45 |
| src/cloc/AnotherHeavilyCommentedContract.sol | 32 |
| src/cloc/EmptyContractFile.sol | 0 |
| src/cloc/HeavilyCommentedContract.sol | 21 |
| src/control_flow/SimpleProgram.sol | 188 |
| src/eth2/DepositContract.sol | 96 |
| src/inheritance/ExtendedInheritance.sol | 18 |
| src/inheritance/IContractInheritance.sol | 4 |
| src/inheritance/InheritanceBase.sol | 12 |
| src/nested/1/Nested.sol | 10 |
| src/nested/2/Nested.sol | 7 |
| src/nested_mappings/LaterVersion.sol | 10 |
| src/nested_mappings/NestedMappings.sol | 10 |
| src/parent_chain/ParentChainContract.sol | 29 |
| src/reused_contract_name/ContractA.sol | 7 |
| src/reused_contract_name/ContractB.sol | 7 |
| src/router/ExternalCalls.sol | 30 |
| src/router/FallbackAndReceiveOverrides.sol | 17 |
| src/router/InternalCalls.sol | 135 |
| src/router/ModifierCalls.sol | 33 |
| src/router/VarOverridesFunction.sol | 20 |
| src/uniswap/UniswapV2Swapper.sol | 50 |
| src/uniswap/UniswapV3Swapper.sol | 150 |
| **Total** | **4727** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 39 |
| Low | 48 |


# High Issues

## H-1: `abi.encodePacked()` Hash Collision

abi.encodePacked() should not be used with dynamic types when passing the result to a hash function such as `keccak256()`. Use `abi.encode()` instead which will pad items to 32 bytes, preventing hash collisions: https://docs.soliditylang.org/en/v0.8.13/abi-spec.html#non-standard-packed-mode. (e.g. `abi.encodePacked(0x123,0x456)` => `0x123456` => `abi.encodePacked(0x1,0x23456)`, but `abi.encode(0x123,0x456)` => `0x0...1230...456`). Unless there is a compelling reason, `abi.encode` should be preferred. If there is only one argument to `abi.encodePacked()` it can often be cast to `bytes()` or `bytes32()` instead: https://ethereum.stackexchange.com/questions/30912/how-to-compare-strings-in-solidity#answer-82739. If all arguments are strings and or bytes, `bytes.concat()` should be used instead.

<details><summary>3 Found Instances</summary>


- Found in src/KeccakContract.sol [Line: 18](../tests/contract-playground/src/KeccakContract.sol#L18)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

- Found in src/KeccakContract.sol [Line: 22](../tests/contract-playground/src/KeccakContract.sol#L22)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

- Found in src/KeccakContract.sol [Line: 26](../tests/contract-playground/src/KeccakContract.sol#L26)

	```solidity
	        return keccak256(abi.encodePacked(a, b));
	```

</details>



## H-2: Arbitrary `from` Passed to `transferFrom`

Passing an arbitrary `from` address to `transferFrom` (or `safeTransferFrom`) can lead to loss of funds, because anyone can transfer tokens from the `from` address if an approval is made.

<details><summary>4 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 24](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L24)

	```solidity
	        s_token.safeTransferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 29](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L29)

	```solidity
	        SafeERC20.safeTransferFrom(s_token, from, to, amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 17](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L17)

	```solidity
	        token.safeTransferFrom(from, to, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

</details>



## H-3: Constant functions changes state

Function is declared constant/view but it changes state. Ensure that the attributes of contract compiled prior to 0.5 are correct.

<details><summary>1 Found Instances</summary>


- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)

	```solidity
	    function changeState() public view returns (uint) {
	```

</details>



## H-4: Contract locks Ether without a withdraw function

It appears that the contract includes a payable function to accept Ether but lacks a corresponding function to withdraw it, which leads to the Ether being locked in the contract. To resolve this issue, please implement a public or external function that allows for the withdrawal of Ether from the contract.

<details><summary>15 Found Instances</summary>


- Found in src/ContractLocksEther.sol [Line: 5](../tests/contract-playground/src/ContractLocksEther.sol#L5)

	```solidity
	contract NoWithdraw {
	```

- Found in src/ContractLocksEther.sol [Line: 31](../tests/contract-playground/src/ContractLocksEther.sol#L31)

	```solidity
	contract NoWithdraw2 {
	```

- Found in src/EmptyBlocks.sol [Line: 20](../tests/contract-playground/src/EmptyBlocks.sol#L20)

	```solidity
	contract EmptyBlocksNestedInReceiverAndFallbacks {
	```

- Found in src/EmptyBlocks.sol [Line: 44](../tests/contract-playground/src/EmptyBlocks.sol#L44)

	```solidity
	contract EmptyBlocks {
	```

- Found in src/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/ExternalCalls.sol#L8)

	```solidity
	contract MyTarget is IMyTarget {
	```

- Found in src/MsgValueInLoop.sol [Line: 7](../tests/contract-playground/src/MsgValueInLoop.sol#L7)

	```solidity
	contract MsgValueInLoop1 {
	```

- Found in src/MsgValueInLoop.sol [Line: 19](../tests/contract-playground/src/MsgValueInLoop.sol#L19)

	```solidity
	contract MsgValueOutsideLoop {
	```

- Found in src/MsgValueInLoop.sol [Line: 33](../tests/contract-playground/src/MsgValueInLoop.sol#L33)

	```solidity
	contract MsgValueInLoop2 {
	```

- Found in src/MsgValueInLoop.sol [Line: 48](../tests/contract-playground/src/MsgValueInLoop.sol#L48)

	```solidity
	contract MsgValueInLoop3 {
	```

- Found in src/MsgValueInLoop.sol [Line: 65](../tests/contract-playground/src/MsgValueInLoop.sol#L65)

	```solidity
	contract MsgValueInLoop4 {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 38](../tests/contract-playground/src/OutOfOrderRetryable.sol#L38)

	```solidity
	contract L1 {
	```

- Found in src/eth2/DepositContract.sol [Line: 58](../tests/contract-playground/src/eth2/DepositContract.sol#L58)

	```solidity
	contract DepositContract is IDepositContract, ERC165 {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 4](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L4)

	```solidity
	contract A {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 10](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L10)

	```solidity
	contract B is A {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 14](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L14)

	```solidity
	contract C is A {}
	```

</details>



## H-5: Dangerous unary operator

Potentially mistaken `=+` for `+=` or `=-` for `-=`. This acts as an assignment instead of an increment or decrement.Use the correct operator to increment or decrement a variable.

<details><summary>2 Found Instances</summary>


- Found in src/DangerousUnaryOperator.sol [Line: 12](../tests/contract-playground/src/DangerousUnaryOperator.sol#L12)

	```solidity
	        counter=+1; // BAD
	```

- Found in src/DangerousUnaryOperator.sol [Line: 13](../tests/contract-playground/src/DangerousUnaryOperator.sol#L13)

	```solidity
	        counter=-1; // BAD
	```

</details>



## H-6: `delegatecall` to an Arbitrary Address

Making a `delegatecall` to an arbitrary address without any checks is dangerous. Consider adding requirements on the target address.

<details><summary>5 Found Instances</summary>


- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 15](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L15)

	```solidity
	    function delegate1(address to, bytes memory data) external {
	```

- Found in src/UncheckedCalls.sol [Line: 14](../tests/contract-playground/src/UncheckedCalls.sol#L14)

	```solidity
	    function delegateCallFunction(address target, bytes calldata data) external {
	```

- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)

	```solidity
	    function testMultipleUncheckedCalls(address target) external payable {
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 38](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L38)

	```solidity
	    function rawDelegateCallFromParameter(address myTarget, bytes calldata data) external returns (bytes memory) {
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)

	```solidity
	    function doSomethingElse(address target) external {
	```

</details>



## H-7: Deletion from a nested mapping

A deletion in a structure containing a mapping will not delete the mapping. The remaining data may be used to compromise the contract.

<details><summary>1 Found Instances</summary>


- Found in src/DeletionNestedMappingStructureContract.sol [Line: 17](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L17)

	```solidity
	        delete people[msg.sender];
	```

</details>



## H-8: Direct assignment of array length

If the length of a dynamic array (storage variable) is directly assigned to, it may allow access to other storage slots by tweaking it's value. This practice has been deprecated in newer Solidity versions

<details><summary>5 Found Instances</summary>


- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)

	```solidity
			myArray.length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)

	```solidity
	        myArray2[7].length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 15](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L15)

	```solidity
	        myArray3[bytes("blah")][5].length = 100;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 16](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L16)

	```solidity
	        myArray4.length = 900;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)

	```solidity
	        myArray.length += 200;
	```

</details>



## H-9: EnumerableSet.remove Corrupts Order

If the order of an EnumerableSet is required, removing items in a loop using `at` and `remove` corrupts this order.
Consider using a different data structure or removing items by collecting them during the loop, then removing after the loop.

<details><summary>5 Found Instances</summary>


- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)

	```solidity
	            addressSet.remove(thisAddress);
	```

- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)

	```solidity
	            uintSet.remove(thisUint);
	```

</details>



## H-10: ETH transferred without address checks

Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.

<details><summary>27 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 23](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L23)

	```solidity
	    function bad2(address from, address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 28](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L28)

	```solidity
	    function bad3(address from, address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 37](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L37)

	```solidity
	    function good2(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 41](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L41)

	```solidity
	    function good3(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 45](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L45)

	```solidity
	    function good4(address to, uint256 amount) external {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 49](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L49)

	```solidity
	    function good5(address from, address to, uint256 amount) external {
	```

- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)

	```solidity
	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
	```

- Found in src/ContractLocksEther.sol [Line: 94](../tests/contract-playground/src/ContractLocksEther.sol#L94)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 131](../tests/contract-playground/src/ContractLocksEther.sol#L131)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 167](../tests/contract-playground/src/ContractLocksEther.sol#L167)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/ContractLocksEther.sol [Line: 194](../tests/contract-playground/src/ContractLocksEther.sol#L194)

	```solidity
	    function takeEthBack(uint256 amount) external {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 16](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L16)

	```solidity
	    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) external {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 26](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L26)

	```solidity
	    function safeApprove(IERC20 token, address spender, uint256 value) external {
	```

- Found in src/ExternalCalls.sol [Line: 67](../tests/contract-playground/src/ExternalCalls.sol#L67)

	```solidity
	    function ext9() external {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)

	```solidity
	    function claim_rewards() public {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/Trump.sol [Line: 321](../tests/contract-playground/src/Trump.sol#L321)

	```solidity
	    function manualSend() external {
	```

- Found in src/UncheckedCalls.sol [Line: 6](../tests/contract-playground/src/UncheckedCalls.sol#L6)

	```solidity
	    function sendEther(address payable recipient) external payable {
	```

- Found in src/UncheckedCalls.sol [Line: 22](../tests/contract-playground/src/UncheckedCalls.sol#L22)

	```solidity
	    function testMultipleUncheckedCalls(address target) external payable {
	```

- Found in src/UncheckedSend.sol [Line: 6](../tests/contract-playground/src/UncheckedSend.sol#L6)

	```solidity
	    function send1(address payable recipient, uint256 amount) external {
	```

- Found in src/UncheckedSend.sol [Line: 12](../tests/contract-playground/src/UncheckedSend.sol#L12)

	```solidity
	    function send2(address payable recipient, uint256 amount) external {
	```

- Found in src/UncheckedSend.sol [Line: 17](../tests/contract-playground/src/UncheckedSend.sol#L17)

	```solidity
	    function send3(address payable recipient, uint256 amount) external returns(bool) {
	```

- Found in src/UncheckedSend.sol [Line: 22](../tests/contract-playground/src/UncheckedSend.sol#L22)

	```solidity
	    function send4(address payable recipient, uint256 amount) external {
	```

- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)

	```solidity
	    function transfer() payable public {
	```

</details>



## H-11: Experimental ABI Encoder

Experimental encoders should not be used in production. There are multiple known compiler bugs that are caused by the experimental encoder. Upgrade your solidity version to remove the need for experimental features.

<details><summary>1 Found Instances</summary>


- Found in src/ExperimentalEncoder.sol [Line: 2](../tests/contract-playground/src/ExperimentalEncoder.sol#L2)

	```solidity
	pragma experimental ABIEncoderV2;
	```

</details>



## H-12: Function Selector Collision

Function selector collides with other functions. This may cause the solidity function dispatcher to invoke the wrong function if the functions happen to be included in the same contract through an inheritance hierarchy later down the line. It is recommended to rename this function or change its parameters.

<details><summary>2 Found Instances</summary>


- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)

	collides with the following function name(s) in scope: OwnerTransferV7b711143
	```solidity
	    function withdraw(uint256) external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)

	collides with the following function name(s) in scope: withdraw
	```solidity
	    function OwnerTransferV7b711143(uint256) external {
	```

</details>



## H-13: Incorrect use of caret operator

The caret operator is usually mistakenly thought of as an exponentiation operator but actually, it's a bitwise xor operator.

<details><summary>5 Found Instances</summary>


- Found in src/IncorrectCaretOperator.sol [Line: 16](../tests/contract-playground/src/IncorrectCaretOperator.sol#L16)

	```solidity
	        uint256 x = 3^40 - 1;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)

	```solidity
	        uint256 z = s_second^89 + 13;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)

	```solidity
	        uint256 w = s_second^s_first + 13; 
	```

- Found in src/IncorrectCaretOperator.sol [Line: 19](../tests/contract-playground/src/IncorrectCaretOperator.sol#L19)

	```solidity
	        uint256 y = s_first ^ 100; // s_first is not a constant but, 100 is.
	```

- Found in src/IncorrectCaretOperator.sol [Line: 20](../tests/contract-playground/src/IncorrectCaretOperator.sol#L20)

	```solidity
	        uint256 p = s_third ^ 20;
	```

</details>



## H-14: Incorrect ERC20 interface

Incorrect return values for ERC20 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC20 functions.

<details><summary>5 Found Instances</summary>


- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)

	```solidity
	    function balanceOf(address account) public pure returns (address) {
	```

- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)

	```solidity
	    function allowance(
	```

</details>



## H-15: Incorrect ERC721 interface

Incorrect return values for ERC721 functions. A contract compiled with Solidity > 0.4.22 interacting with these functions will fail to execute them, as the return value is missing. Set the appropriate return values and types for the defined ERC721 functions.

<details><summary>8 Found Instances</summary>


- Found in src/IncorrectERC721.sol [Line: 14](../tests/contract-playground/src/IncorrectERC721.sol#L14)

	```solidity
	    function balanceOf(address owner) external view returns (uint72) {
	```

- Found in src/IncorrectERC721.sol [Line: 18](../tests/contract-playground/src/IncorrectERC721.sol#L18)

	```solidity
	    function ownerOf(uint256 tokenId) public view returns (bytes4) {
	```

- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)

	```solidity
	    function approve(
	```

- Found in src/IncorrectERC721.sol [Line: 37](../tests/contract-playground/src/IncorrectERC721.sol#L37)

	```solidity
	    function getApproved(uint256 tokenId) external view returns (uint72) {
	```

- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)

	```solidity
	    function setApprovalForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 49](../tests/contract-playground/src/IncorrectERC721.sol#L49)

	```solidity
	    function isApprovedForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 71](../tests/contract-playground/src/IncorrectERC721.sol#L71)

	```solidity
	    function safeTransferFrom(
	```

</details>



## H-16: Incorrect Assembly Shift Parameter Order

Example: `shl(shifted, 4)` will shift the right constant `4` by `a` bits. The correct order is `shl(4, shifted)`.

<details><summary>2 Found Instances</summary>


- Found in src/IncorrectShift.sol [Line: 7](../tests/contract-playground/src/IncorrectShift.sol#L7)

	```solidity
	            shifted := shr(shifted, 4) // BAD
	```

- Found in src/IncorrectShift.sol [Line: 8](../tests/contract-playground/src/IncorrectShift.sol#L8)

	```solidity
	            shifted := shl(shifted, 4) // BAD
	```

</details>



## H-17: Misused boolean with logical operators

The patterns `if (… || true)` and `if (.. && false)` will always evaluate to true and false respectively.

<details><summary>10 Found Instances</summary>


- Found in src/MisusedBoolean.sol [Line: 12](../tests/contract-playground/src/MisusedBoolean.sol#L12)

	```solidity
	        if (isEven(num) || true) {
	```

- Found in src/MisusedBoolean.sol [Line: 19](../tests/contract-playground/src/MisusedBoolean.sol#L19)

	```solidity
	        if (isEven(num) && false) {
	```

- Found in src/MisusedBoolean.sol [Line: 26](../tests/contract-playground/src/MisusedBoolean.sol#L26)

	```solidity
	        if (false && isEven(num)) {
	```

- Found in src/MisusedBoolean.sol [Line: 33](../tests/contract-playground/src/MisusedBoolean.sol#L33)

	```solidity
	        if (true || isEven(num)) {
	```

- Found in src/MisusedBoolean.sol [Line: 40](../tests/contract-playground/src/MisusedBoolean.sol#L40)

	```solidity
	        if (true) {
	```

- Found in src/MisusedBoolean.sol [Line: 47](../tests/contract-playground/src/MisusedBoolean.sol#L47)

	```solidity
	        if (false) {
	```

- Found in src/MisusedBoolean.sol [Line: 54](../tests/contract-playground/src/MisusedBoolean.sol#L54)

	```solidity
	        if (!false) {
	```

- Found in src/MisusedBoolean.sol [Line: 61](../tests/contract-playground/src/MisusedBoolean.sol#L61)

	```solidity
	        if (isEven(num) && !false) {
	```

- Found in src/MisusedBoolean.sol [Line: 68](../tests/contract-playground/src/MisusedBoolean.sol#L68)

	```solidity
	        if (isEven(num) && NO) {
	```

- Found in src/MisusedBoolean.sol [Line: 75](../tests/contract-playground/src/MisusedBoolean.sol#L75)

	```solidity
	        if (isEven(num) && !NO) {
	```

</details>



## H-18: Loop contains `msg.value`

Provide an explicit array of amounts alongside the receivers array, and check that the sum of all amounts matches `msg.value`.

<details><summary>4 Found Instances</summary>


- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)

	```solidity
	        while (i < receivers.length) {
	```

- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)

	```solidity
	        do {
	```

</details>



## H-19: Contract Has Multiple Constructors

In some versions of Solidity, contracts compile with multiple constructors. The first constructor takes precedence. This can lead to unexpected behavior.

<details><summary>1 Found Instances</summary>


- Found in src/MultipleConstructorSchemes.sol [Line: 3](../tests/contract-playground/src/MultipleConstructorSchemes.sol#L3)

	```solidity
	contract MultipleConstructorSchemes {
	```

</details>



## H-20: Nested Structs in Mappings pre-0.5.0

Prior to updates in Solidity 0.5.0, public mappings with nested structs compiled, but produced incorrect values. Refrain from using these, or update to a more recent version of Solidity.

<details><summary>1 Found Instances</summary>


- Found in src/nested_mappings/NestedMappings.sol [Line: 17](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L17)

	```solidity
	    mapping(uint256 => structMain) public s_mapOfNestedStructs;
	```

</details>



## H-21: Out of Order Retryable Transaction

Do not rely on the order or successful execution of retryable tickets. Functions like createRetryableTicket, outboundTransferCustomRefund, unsafeCreateRetryableTicket are free to be re-tried in any
            order if they fail in the first go. Since this operation happens off chain, the sequencer is in control of the
            order of these transactions. Therefore, restrict the use to at most 1 ticket call per function.

<details><summary>2 Found Instances</summary>


- Found in src/OutOfOrderRetryable.sol [Line: 63](../tests/contract-playground/src/OutOfOrderRetryable.sol#L63)

	```solidity
	    function doStuffOnL2() external {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 90](../tests/contract-playground/src/OutOfOrderRetryable.sol#L90)

	```solidity
	    function doStuffOnL2Alternative() external {
	```

</details>



## H-22: Usage of variable before declaration

Declare the variable before using it to avoid unintended consequences.

<details><summary>1 Found Instances</summary>


- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)

	```solidity
	        a = 100;
	```

</details>



## H-23: Reentrancy: State change after external call

Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.

<details><summary>7 Found Instances</summary>


- Found in src/StateChangeAfterExternalCall.sol [Line: 24](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L24)

	State is changed at: `s_useMe += 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 33](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L33)

	State is changed at: `s_useMe -= 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 52](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L52)

	State is changed at: `s_useMe += 4`
	```solidity
	            s_actor.hello();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 82](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L82)

	State is changed at: `s_useMe += 1`
	```solidity
	        s_actor.hello();
	```

- Found in src/Trump.sol [Line: 342](../tests/contract-playground/src/Trump.sol#L342)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
	```

- Found in src/Trump.sol [Line: 343](../tests/contract-playground/src/Trump.sol#L343)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	State is changed at: `swapEnabled = true`, `tradingOpen = true`, `firstBlock = block.number`
	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

</details>



## H-24: Contract Name Reused in Different Files

When compiling contracts with certain development frameworks (for example: Truffle), having contracts with the same name across different files can lead to one being overwritten.

<details><summary>26 Found Instances</summary>


- Found in src/EmitAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/EmitAfterExternalCall.sol#L4)

	```solidity
	contract MaliciousActor {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 4](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L4)

	```solidity
	contract MaliciousActor {
	```

- Found in src/Trump.sol [Line: 18](../tests/contract-playground/src/Trump.sol#L18)

	```solidity
	abstract contract Context {
	```

- Found in src/Trump.sol [Line: 24](../tests/contract-playground/src/Trump.sol#L24)

	```solidity
	interface IERC20 {
	```

- Found in src/Trump.sol [Line: 73](../tests/contract-playground/src/Trump.sol#L73)

	```solidity
	contract Ownable is Context {
	```

- Found in src/Trump.sol [Line: 103](../tests/contract-playground/src/Trump.sol#L103)

	```solidity
	interface IUniswapV2Router02 {
	```

- Found in src/ZeroAddressCheck.sol [Line: 4](../tests/contract-playground/src/ZeroAddressCheck.sol#L4)

	```solidity
	interface IERC20 {
	```

- Found in src/eth2/DepositContract.sol [Line: 44](../tests/contract-playground/src/eth2/DepositContract.sol#L44)

	```solidity
	interface ERC165 {
	```

- Found in src/nested/1/Nested.sol [Line: 7](../tests/contract-playground/src/nested/1/Nested.sol#L7)

	```solidity
	contract Nested {
	```

- Found in src/nested/2/Nested.sol [Line: 7](../tests/contract-playground/src/nested/2/Nested.sol#L7)

	```solidity
	contract Nested {
	```

- Found in src/reused_contract_name/ContractA.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L4)

	```solidity
	contract ReusedName {
	```

- Found in src/reused_contract_name/ContractB.sol [Line: 4](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L4)

	```solidity
	contract ReusedName {
	```

- Found in src/router/ExternalCalls.sol [Line: 4](../tests/contract-playground/src/router/ExternalCalls.sol#L4)

	```solidity
	interface A {
	```

- Found in src/router/ExternalCalls.sol [Line: 8](../tests/contract-playground/src/router/ExternalCalls.sol#L8)

	```solidity
	contract B is A {
	```

- Found in src/router/ExternalCalls.sol [Line: 12](../tests/contract-playground/src/router/ExternalCalls.sol#L12)

	```solidity
	contract E is A {
	```

- Found in src/router/ExternalCalls.sol [Line: 31](../tests/contract-playground/src/router/ExternalCalls.sol#L31)

	```solidity
	abstract contract C {
	```

- Found in src/router/ExternalCalls.sol [Line: 35](../tests/contract-playground/src/router/ExternalCalls.sol#L35)

	```solidity
	contract D is C {
	```

- Found in src/router/ModifierCalls.sol [Line: 4](../tests/contract-playground/src/router/ModifierCalls.sol#L4)

	```solidity
	abstract contract A {
	```

- Found in src/router/ModifierCalls.sol [Line: 12](../tests/contract-playground/src/router/ModifierCalls.sol#L12)

	```solidity
	contract B is A {
	```

- Found in src/router/ModifierCalls.sol [Line: 28](../tests/contract-playground/src/router/ModifierCalls.sol#L28)

	```solidity
	contract C is B {
	```

- Found in src/router/ModifierCalls.sol [Line: 41](../tests/contract-playground/src/router/ModifierCalls.sol#L41)

	```solidity
	library D {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 4](../tests/contract-playground/src/router/VarOverridesFunction.sol#L4)

	```solidity
	contract A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 9](../tests/contract-playground/src/router/VarOverridesFunction.sol#L9)

	```solidity
	contract B is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 13](../tests/contract-playground/src/router/VarOverridesFunction.sol#L13)

	```solidity
	contract C is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 17](../tests/contract-playground/src/router/VarOverridesFunction.sol#L17)

	```solidity
	contract D is A {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 21](../tests/contract-playground/src/router/VarOverridesFunction.sol#L21)

	```solidity
	contract E is A {
	```

</details>



## H-25: RTLO character detected in file: \u{202e}

The right to left override character may be misleading and cause potential attacks by visually misordering method arguments.

<details><summary>1 Found Instances</summary>


- Found in src/RTLO.sol [Line: 3](../tests/contract-playground/src/RTLO.sol#L3)

	```solidity
	pragma solidity 0.6.4;
	```

</details>



## H-26: `selfdestruct` is Deprecated

Remove the `selfdestruct` instruction from the code.

<details><summary>1 Found Instances</summary>


- Found in src/UsingSelfdestruct.sol [Line: 7](../tests/contract-playground/src/UsingSelfdestruct.sol#L7)

	```solidity
	        selfdestruct(payable(sink));
	```

</details>



## H-27: Signed integer array in storage (solc `<0.5.10`)

solc versions 0.4.7-0.5.9 contain a compiler bug leading to incorrect values in signed integer arrays.Use solidity version 0.5.10 or above.

<details><summary>1 Found Instances</summary>


- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)

	```solidity
	        affectedArray = [-1, 5, 2];
	```

</details>



## H-28: Shadowed State Variable

This vulnerability arises when a derived contract unintentionally shadows a state variable from a parent contract by declaring a variable with the same name. This can be misleading. To prevent this, ensure variable names are unique across the inheritance hierarchy or use proper visibility and scope controls.

<details><summary>1 Found Instances</summary>


- Found in src/StateShadowing.sol [Line: 15](../tests/contract-playground/src/StateShadowing.sol#L15)

	```solidity
	    address owner;
	```

</details>



## H-29: Storage Array Edited with Memory

Storage reference is passed to a function with a memory parameter. This will not update the storage variable as expected. Consider using storage parameters instead.

<details><summary>1 Found Instances</summary>


- Found in src/StorageParameters.sol [Line: 11](../tests/contract-playground/src/StorageParameters.sol#L11)

	```solidity
	        editMemory(storageArray); // BAD LINE
	```

</details>



## H-30: Dangerous strict equality checks on contract balances

A contract's balance can be forcibly manipulated by another selfdestructing contract. Therefore, it's recommended to use >, <, >= or <= instead of strict equality.

<details><summary>3 Found Instances</summary>


- Found in src/DangerousStrictEquality1.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality1.sol#L6)

	```solidity
	        return this.balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)

	```solidity
	        return address(this).balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)

	```solidity
	        return payable(address(this)).balance == 100 ether;
	```

</details>



## H-31: Tautological comparison

The left hand side and the right hand side of the binary operation has the same value. This makes the condition always true or always false.

<details><summary>3 Found Instances</summary>


- Found in src/TautologicalCompare.sol [Line: 18](../tests/contract-playground/src/TautologicalCompare.sol#L18)

	```solidity
	        return (f >= 7);
	```

- Found in src/TautologicalCompare.sol [Line: 23](../tests/contract-playground/src/TautologicalCompare.sol#L23)

	```solidity
	        return (f < f);
	```

- Found in src/TautologicalCompare.sol [Line: 28](../tests/contract-playground/src/TautologicalCompare.sol#L28)

	```solidity
	        return (f < g);
	```

</details>



## H-32: Tautology or Contradiction in comparison

The condition has been determined to be either always true or always false due to the integer range in which we're operating.

<details><summary>3 Found Instances</summary>


- Found in src/EmitAfterExternalCall.sol [Line: 48](../tests/contract-playground/src/EmitAfterExternalCall.sol#L48)

	```solidity
	        for (uint256 i = 0; i < 0; ++i) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 13](../tests/contract-playground/src/TautologyOrContradiction.sol#L13)

	```solidity
	        if (a > 258) {}
	```

- Found in src/TautologyOrContradiction.sol [Line: 16](../tests/contract-playground/src/TautologyOrContradiction.sol#L16)

	```solidity
	        if (map[67] < 0) {}
	```

</details>



## H-33: Use of `tx.origin` for authentication

Using `tx.origin` may lead to problems when users are interacting via smart contract with your protocol. It is recommended to use `msg.sender` for authentication.

<details><summary>3 Found Instances</summary>


- Found in src/TxOriginUsedForAuth.sol [Line: 40](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L40)

	```solidity
	        if (tx.origin == owner) {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 51](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L51)

	```solidity
	        if (tx.origin == owner || authorizedUsers[tx.origin]) {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 59](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L59)

	```solidity
	        require(tx.origin == owner, "Not authorized to perform this action");
	```

</details>



## H-34: Unchecked Low level calls

The return value of the low-level call is not checked, so if the call fails, the Ether will be locked in the contract. If the low level is used to prevent blocking operations, consider logging failed calls. Ensure that the return value of a low-level call is checked or logged.

<details><summary>14 Found Instances</summary>


- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 16](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L16)

	```solidity
	        to.delegatecall(data); // `to` is not protected, therefore BAD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 20](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L20)

	```solidity
	        manager.delegatecall(data); // `manager` is state variable, therefore GOOD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 36](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L36)

	```solidity
	        to.delegatecall(data); // `to` is protected, therefore GOOD
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 42](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L42)

	```solidity
	            to.delegatecall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 7](../tests/contract-playground/src/UncheckedCalls.sol#L7)

	```solidity
	        recipient.call{value: 100}("");
	```

- Found in src/UncheckedCalls.sol [Line: 11](../tests/contract-playground/src/UncheckedCalls.sol#L11)

	```solidity
	        target.call(data);
	```

- Found in src/UncheckedCalls.sol [Line: 15](../tests/contract-playground/src/UncheckedCalls.sol#L15)

	```solidity
	        target.delegatecall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 19](../tests/contract-playground/src/UncheckedCalls.sol#L19)

	```solidity
	        target.staticcall(data);
	```

- Found in src/UncheckedCalls.sol [Line: 23](../tests/contract-playground/src/UncheckedCalls.sol#L23)

	```solidity
	        target.call{value: 100}("");
	```

- Found in src/UncheckedCalls.sol [Line: 25](../tests/contract-playground/src/UncheckedCalls.sol#L25)

	```solidity
	        target.call(abi.encodeWithSignature("someFunction(uint256)", 123));
	```

- Found in src/UncheckedCalls.sol [Line: 27](../tests/contract-playground/src/UncheckedCalls.sol#L27)

	```solidity
	        target.delegatecall(abi.encodeWithSignature("someOtherFunction(address)", msg.sender));
	```

- Found in src/UncheckedCalls.sol [Line: 29](../tests/contract-playground/src/UncheckedCalls.sol#L29)

	```solidity
	        target.staticcall(abi.encodeWithSignature("aViewFunction()"));
	```

- Found in src/UncheckedCalls.sol [Line: 34](../tests/contract-playground/src/UncheckedCalls.sol#L34)

	```solidity
	        dst.call.value(100)("");
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 16](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L16)

	```solidity
	            target.delegatecall(abi.encodeWithSignature("doSomething(uint256)", i));
	```

</details>



## H-35: Unchecked `bool success` value for ETH send

The call `address(payable?).send(address)` may fail because of reasons like out-of-gas, invalid recipient address or revert from the recipient, but not revert the transaction. Therefore, the boolean returned by this function call must be checked to be `true` in order to verify that the transaction was successful.

<details><summary>1 Found Instances</summary>


- Found in src/UncheckedSend.sol [Line: 24](../tests/contract-playground/src/UncheckedSend.sol#L24)

	```solidity
	        recipient.send(amount); // parent of Send FunctionCall is Block (return value is unused)
	```

</details>



## H-36: Unprotected initializer

Consider protecting the initializer functions with modifiers.

<details><summary>2 Found Instances</summary>


- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)

	```solidity
	    function initializeWithoutModifierOrRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)

	```solidity
	    function initializeWithoutProtection() external {
	```

</details>



## H-37: Unsafe Casting of integers

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.

<details><summary>94 Found Instances</summary>


- Found in src/Casting.sol [Line: 42](../tests/contract-playground/src/Casting.sol#L42)

	```solidity
	        uint248 b = uint248(a);
	```

- Found in src/Casting.sol [Line: 43](../tests/contract-playground/src/Casting.sol#L43)

	```solidity
	        uint240 c = uint240(b);
	```

- Found in src/Casting.sol [Line: 44](../tests/contract-playground/src/Casting.sol#L44)

	```solidity
	        uint232 d = uint232(c);
	```

- Found in src/Casting.sol [Line: 45](../tests/contract-playground/src/Casting.sol#L45)

	```solidity
	        uint224 e = uint224(d);
	```

- Found in src/Casting.sol [Line: 46](../tests/contract-playground/src/Casting.sol#L46)

	```solidity
	        uint216 f = uint216(e);
	```

- Found in src/Casting.sol [Line: 47](../tests/contract-playground/src/Casting.sol#L47)

	```solidity
	        uint208 g = uint208(f);
	```

- Found in src/Casting.sol [Line: 48](../tests/contract-playground/src/Casting.sol#L48)

	```solidity
	        uint200 h = uint200(g);
	```

- Found in src/Casting.sol [Line: 49](../tests/contract-playground/src/Casting.sol#L49)

	```solidity
	        uint192 i = uint192(h);
	```

- Found in src/Casting.sol [Line: 50](../tests/contract-playground/src/Casting.sol#L50)

	```solidity
	        uint184 j = uint184(i);
	```

- Found in src/Casting.sol [Line: 51](../tests/contract-playground/src/Casting.sol#L51)

	```solidity
	        uint176 k = uint176(j);
	```

- Found in src/Casting.sol [Line: 52](../tests/contract-playground/src/Casting.sol#L52)

	```solidity
	        uint168 l = uint168(k);
	```

- Found in src/Casting.sol [Line: 53](../tests/contract-playground/src/Casting.sol#L53)

	```solidity
	        uint160 m = uint160(l);
	```

- Found in src/Casting.sol [Line: 54](../tests/contract-playground/src/Casting.sol#L54)

	```solidity
	        uint152 n = uint152(m);
	```

- Found in src/Casting.sol [Line: 55](../tests/contract-playground/src/Casting.sol#L55)

	```solidity
	        uint144 o = uint144(n);
	```

- Found in src/Casting.sol [Line: 56](../tests/contract-playground/src/Casting.sol#L56)

	```solidity
	        uint136 p = uint136(o);
	```

- Found in src/Casting.sol [Line: 57](../tests/contract-playground/src/Casting.sol#L57)

	```solidity
	        uint128 q = uint128(p);
	```

- Found in src/Casting.sol [Line: 58](../tests/contract-playground/src/Casting.sol#L58)

	```solidity
	        uint120 r = uint120(q);
	```

- Found in src/Casting.sol [Line: 59](../tests/contract-playground/src/Casting.sol#L59)

	```solidity
	        uint112 s = uint112(r);
	```

- Found in src/Casting.sol [Line: 60](../tests/contract-playground/src/Casting.sol#L60)

	```solidity
	        uint104 t = uint104(s);
	```

- Found in src/Casting.sol [Line: 61](../tests/contract-playground/src/Casting.sol#L61)

	```solidity
	        uint96 u = uint96(t);
	```

- Found in src/Casting.sol [Line: 62](../tests/contract-playground/src/Casting.sol#L62)

	```solidity
	        uint88 v = uint88(u);
	```

- Found in src/Casting.sol [Line: 63](../tests/contract-playground/src/Casting.sol#L63)

	```solidity
	        uint80 w = uint80(v);
	```

- Found in src/Casting.sol [Line: 64](../tests/contract-playground/src/Casting.sol#L64)

	```solidity
	        uint72 x = uint72(w);
	```

- Found in src/Casting.sol [Line: 65](../tests/contract-playground/src/Casting.sol#L65)

	```solidity
	        uint64 y = uint64(x);
	```

- Found in src/Casting.sol [Line: 66](../tests/contract-playground/src/Casting.sol#L66)

	```solidity
	        uint56 z = uint56(y);
	```

- Found in src/Casting.sol [Line: 67](../tests/contract-playground/src/Casting.sol#L67)

	```solidity
	        uint48 aa = uint48(z);
	```

- Found in src/Casting.sol [Line: 68](../tests/contract-playground/src/Casting.sol#L68)

	```solidity
	        uint40 ab = uint40(aa);
	```

- Found in src/Casting.sol [Line: 69](../tests/contract-playground/src/Casting.sol#L69)

	```solidity
	        uint32 ac = uint32(ab);
	```

- Found in src/Casting.sol [Line: 70](../tests/contract-playground/src/Casting.sol#L70)

	```solidity
	        uint24 ad = uint24(ac);
	```

- Found in src/Casting.sol [Line: 71](../tests/contract-playground/src/Casting.sol#L71)

	```solidity
	        uint16 ae = uint16(ad);
	```

- Found in src/Casting.sol [Line: 72](../tests/contract-playground/src/Casting.sol#L72)

	```solidity
	        uint8Value = uint8(ae);
	```

- Found in src/Casting.sol [Line: 80](../tests/contract-playground/src/Casting.sol#L80)

	```solidity
	        int248 b = int248(a);
	```

- Found in src/Casting.sol [Line: 81](../tests/contract-playground/src/Casting.sol#L81)

	```solidity
	        int240 c = int240(b);
	```

- Found in src/Casting.sol [Line: 82](../tests/contract-playground/src/Casting.sol#L82)

	```solidity
	        int232 d = int232(c);
	```

- Found in src/Casting.sol [Line: 83](../tests/contract-playground/src/Casting.sol#L83)

	```solidity
	        int224 e = int224(d);
	```

- Found in src/Casting.sol [Line: 84](../tests/contract-playground/src/Casting.sol#L84)

	```solidity
	        int216 f = int216(e);
	```

- Found in src/Casting.sol [Line: 85](../tests/contract-playground/src/Casting.sol#L85)

	```solidity
	        int208 g = int208(f);
	```

- Found in src/Casting.sol [Line: 86](../tests/contract-playground/src/Casting.sol#L86)

	```solidity
	        int200 h = int200(g);
	```

- Found in src/Casting.sol [Line: 87](../tests/contract-playground/src/Casting.sol#L87)

	```solidity
	        int192 i = int192(h);
	```

- Found in src/Casting.sol [Line: 88](../tests/contract-playground/src/Casting.sol#L88)

	```solidity
	        int184 j = int184(i);
	```

- Found in src/Casting.sol [Line: 89](../tests/contract-playground/src/Casting.sol#L89)

	```solidity
	        int176 k = int176(j);
	```

- Found in src/Casting.sol [Line: 90](../tests/contract-playground/src/Casting.sol#L90)

	```solidity
	        int168 l = int168(k);
	```

- Found in src/Casting.sol [Line: 91](../tests/contract-playground/src/Casting.sol#L91)

	```solidity
	        int160 m = int160(l);
	```

- Found in src/Casting.sol [Line: 92](../tests/contract-playground/src/Casting.sol#L92)

	```solidity
	        int152 n = int152(m);
	```

- Found in src/Casting.sol [Line: 93](../tests/contract-playground/src/Casting.sol#L93)

	```solidity
	        int144 o = int144(n);
	```

- Found in src/Casting.sol [Line: 94](../tests/contract-playground/src/Casting.sol#L94)

	```solidity
	        int136 p = int136(o);
	```

- Found in src/Casting.sol [Line: 95](../tests/contract-playground/src/Casting.sol#L95)

	```solidity
	        int128 q = int128(p);
	```

- Found in src/Casting.sol [Line: 96](../tests/contract-playground/src/Casting.sol#L96)

	```solidity
	        int120 r = int120(q);
	```

- Found in src/Casting.sol [Line: 97](../tests/contract-playground/src/Casting.sol#L97)

	```solidity
	        int112 s = int112(r);
	```

- Found in src/Casting.sol [Line: 98](../tests/contract-playground/src/Casting.sol#L98)

	```solidity
	        int104 t = int104(s);
	```

- Found in src/Casting.sol [Line: 99](../tests/contract-playground/src/Casting.sol#L99)

	```solidity
	        int96 u = int96(t);
	```

- Found in src/Casting.sol [Line: 100](../tests/contract-playground/src/Casting.sol#L100)

	```solidity
	        int88 v = int88(u);
	```

- Found in src/Casting.sol [Line: 101](../tests/contract-playground/src/Casting.sol#L101)

	```solidity
	        int80 w = int80(v);
	```

- Found in src/Casting.sol [Line: 102](../tests/contract-playground/src/Casting.sol#L102)

	```solidity
	        int72 x = int72(w);
	```

- Found in src/Casting.sol [Line: 103](../tests/contract-playground/src/Casting.sol#L103)

	```solidity
	        int64 y = int64(x);
	```

- Found in src/Casting.sol [Line: 104](../tests/contract-playground/src/Casting.sol#L104)

	```solidity
	        int56 z = int56(y);
	```

- Found in src/Casting.sol [Line: 105](../tests/contract-playground/src/Casting.sol#L105)

	```solidity
	        int48 aa = int48(z);
	```

- Found in src/Casting.sol [Line: 106](../tests/contract-playground/src/Casting.sol#L106)

	```solidity
	        int40 ab = int40(aa);
	```

- Found in src/Casting.sol [Line: 107](../tests/contract-playground/src/Casting.sol#L107)

	```solidity
	        int32 ac = int32(ab);
	```

- Found in src/Casting.sol [Line: 108](../tests/contract-playground/src/Casting.sol#L108)

	```solidity
	        int24 ad = int24(ac);
	```

- Found in src/Casting.sol [Line: 109](../tests/contract-playground/src/Casting.sol#L109)

	```solidity
	        int16 ae = int16(ad);
	```

- Found in src/Casting.sol [Line: 110](../tests/contract-playground/src/Casting.sol#L110)

	```solidity
	        int8Value = int8(ae);
	```

- Found in src/Casting.sol [Line: 118](../tests/contract-playground/src/Casting.sol#L118)

	```solidity
	        bytes31 b = bytes31(a);
	```

- Found in src/Casting.sol [Line: 119](../tests/contract-playground/src/Casting.sol#L119)

	```solidity
	        bytes30 c = bytes30(b);
	```

- Found in src/Casting.sol [Line: 120](../tests/contract-playground/src/Casting.sol#L120)

	```solidity
	        bytes29 d = bytes29(c);
	```

- Found in src/Casting.sol [Line: 121](../tests/contract-playground/src/Casting.sol#L121)

	```solidity
	        bytes28 e = bytes28(d);
	```

- Found in src/Casting.sol [Line: 122](../tests/contract-playground/src/Casting.sol#L122)

	```solidity
	        bytes27 f = bytes27(e);
	```

- Found in src/Casting.sol [Line: 123](../tests/contract-playground/src/Casting.sol#L123)

	```solidity
	        bytes26 g = bytes26(f);
	```

- Found in src/Casting.sol [Line: 124](../tests/contract-playground/src/Casting.sol#L124)

	```solidity
	        bytes25 h = bytes25(g);
	```

- Found in src/Casting.sol [Line: 125](../tests/contract-playground/src/Casting.sol#L125)

	```solidity
	        bytes24 i = bytes24(h);
	```

- Found in src/Casting.sol [Line: 126](../tests/contract-playground/src/Casting.sol#L126)

	```solidity
	        bytes23 j = bytes23(i);
	```

- Found in src/Casting.sol [Line: 127](../tests/contract-playground/src/Casting.sol#L127)

	```solidity
	        bytes22 k = bytes22(j);
	```

- Found in src/Casting.sol [Line: 128](../tests/contract-playground/src/Casting.sol#L128)

	```solidity
	        bytes21 l = bytes21(k);
	```

- Found in src/Casting.sol [Line: 129](../tests/contract-playground/src/Casting.sol#L129)

	```solidity
	        bytes20 m = bytes20(l);
	```

- Found in src/Casting.sol [Line: 130](../tests/contract-playground/src/Casting.sol#L130)

	```solidity
	        bytes19 n = bytes19(m);
	```

- Found in src/Casting.sol [Line: 131](../tests/contract-playground/src/Casting.sol#L131)

	```solidity
	        bytes18 o = bytes18(n);
	```

- Found in src/Casting.sol [Line: 132](../tests/contract-playground/src/Casting.sol#L132)

	```solidity
	        bytes17 p = bytes17(o);
	```

- Found in src/Casting.sol [Line: 133](../tests/contract-playground/src/Casting.sol#L133)

	```solidity
	        bytes16 q = bytes16(p);
	```

- Found in src/Casting.sol [Line: 134](../tests/contract-playground/src/Casting.sol#L134)

	```solidity
	        bytes15 r = bytes15(q);
	```

- Found in src/Casting.sol [Line: 135](../tests/contract-playground/src/Casting.sol#L135)

	```solidity
	        bytes14 s = bytes14(r);
	```

- Found in src/Casting.sol [Line: 136](../tests/contract-playground/src/Casting.sol#L136)

	```solidity
	        bytes13 t = bytes13(s);
	```

- Found in src/Casting.sol [Line: 137](../tests/contract-playground/src/Casting.sol#L137)

	```solidity
	        bytes12 u = bytes12(t);
	```

- Found in src/Casting.sol [Line: 138](../tests/contract-playground/src/Casting.sol#L138)

	```solidity
	        bytes11 v = bytes11(u);
	```

- Found in src/Casting.sol [Line: 139](../tests/contract-playground/src/Casting.sol#L139)

	```solidity
	        bytes10 w = bytes10(v);
	```

- Found in src/Casting.sol [Line: 140](../tests/contract-playground/src/Casting.sol#L140)

	```solidity
	        bytes9 x = bytes9(w);
	```

- Found in src/Casting.sol [Line: 141](../tests/contract-playground/src/Casting.sol#L141)

	```solidity
	        bytes8 y = bytes8(x);
	```

- Found in src/Casting.sol [Line: 142](../tests/contract-playground/src/Casting.sol#L142)

	```solidity
	        bytes7 z = bytes7(y);
	```

- Found in src/Casting.sol [Line: 143](../tests/contract-playground/src/Casting.sol#L143)

	```solidity
	        bytes6 aa = bytes6(z);
	```

- Found in src/Casting.sol [Line: 144](../tests/contract-playground/src/Casting.sol#L144)

	```solidity
	        bytes5 ab = bytes5(aa);
	```

- Found in src/Casting.sol [Line: 145](../tests/contract-playground/src/Casting.sol#L145)

	```solidity
	        bytes4 ac = bytes4(ab);
	```

- Found in src/Casting.sol [Line: 146](../tests/contract-playground/src/Casting.sol#L146)

	```solidity
	        bytes3 ad = bytes3(ac);
	```

- Found in src/Casting.sol [Line: 147](../tests/contract-playground/src/Casting.sol#L147)

	```solidity
	        bytes2 ae = bytes2(ad);
	```

- Found in src/Casting.sol [Line: 148](../tests/contract-playground/src/Casting.sol#L148)

	```solidity
	        bytes1Value = bytes1(ae);
	```

- Found in src/Casting.sol [Line: 155](../tests/contract-playground/src/Casting.sol#L155)

	```solidity
	            return int128(result);
	```

</details>



## H-38: Weak Randomness

The use of keccak256 hash functions on predictable values like block.timestamp, block.number, or similar data, including modulo operations on these values, should be avoided for generating randomness, as they are easily predictable and manipulable. The `PREVRANDAO` opcode also should not be used as a source of randomness. Instead, utilize Chainlink VRF for cryptographically secure and provably random values to ensure protocol integrity.

<details><summary>9 Found Instances</summary>


- Found in src/WeakRandomness.sol [Line: 6](../tests/contract-playground/src/WeakRandomness.sol#L6)

	```solidity
	        uint256 randomNumber = uint256(keccak256(abi.encodePacked(msg.sender, block.number, block.timestamp)));
	```

- Found in src/WeakRandomness.sol [Line: 11](../tests/contract-playground/src/WeakRandomness.sol#L11)

	```solidity
	        return uint256(keccak256(abi.encodePacked(block.number)));
	```

- Found in src/WeakRandomness.sol [Line: 16](../tests/contract-playground/src/WeakRandomness.sol#L16)

	```solidity
	        return uint256(keccak256(someBytes));
	```

- Found in src/WeakRandomness.sol [Line: 21](../tests/contract-playground/src/WeakRandomness.sol#L21)

	```solidity
	        return uint256(keccak256(someBytes));
	```

- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)

	```solidity
	        return block.timestamp % 10;
	```

- Found in src/WeakRandomness.sol [Line: 31](../tests/contract-playground/src/WeakRandomness.sol#L31)

	```solidity
	        return a % b;
	```

- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)

	```solidity
	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
	```

- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)

	```solidity
	        return hash % 10;
	```

- Found in src/WeakRandomness.sol [Line: 45](../tests/contract-playground/src/WeakRandomness.sol#L45)

	```solidity
	        uint256 randomNumber = block.prevrandao;
	```

</details>



## H-39: Yul block contains `return`

This causes the transaction execution to halt, and nothing after that call will execute including code following the assembly block.

<details><summary>1 Found Instances</summary>


- Found in src/YulReturn.sol [Line: 8](../tests/contract-playground/src/YulReturn.sol#L8)

	```solidity
	            return(0, 0)
	```

</details>



# Low Issues

## L-1: State change in `assert()` statement

An argument to `assert()` modifies the state. Use `require` for invariants modifying state.

<details><summary>1 Found Instances</summary>


- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)

	```solidity
	        assert((s_a += 1) > 10);
	```

</details>



## L-2: Using `block.timestamp` for swap deadline offers no protection

In the PoS model, proposers know well in advance if they will propose one or consecutive blocks ahead of time. In such a scenario, a malicious validator can hold back the transaction and execute it at a more favourable block number.Consider allowing function caller to specify swap deadline input parameter.

<details><summary>17 Found Instances</summary>


- Found in src/Trump.sol [Line: 290](../tests/contract-playground/src/Trump.sol#L290)

	```solidity
	        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 31](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L31)

	```solidity
	        router2.swapExactTokensForTokensSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 32](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L32)

	```solidity
	        router2.swapExactETHForTokensSupportingFeeOnTransferTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 33](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L33)

	```solidity
	        router2.swapExactTokensForETHSupportingFeeOnTransferTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 52](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L52)

	```solidity
	        ExactInputSingleParams memory exactInputSingleParams = ExactInputSingleParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 55](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L55)

	```solidity
	        exactInputSingleParams = ExactInputSingleParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 66](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L66)

	```solidity
	        ExactInputParams memory exactInputParams = ExactInputParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 69](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L69)

	```solidity
	        exactInputParams = ExactInputParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 77](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L77)

	```solidity
	        ExactOutputSingleParams memory exactOutputSingleParams = ExactOutputSingleParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 80](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L80)

	```solidity
	        exactOutputSingleParams = ExactOutputSingleParams({
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 91](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L91)

	```solidity
	        ExactOutputParams memory exactOutputParams = ExactOutputParams(
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 94](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L94)

	```solidity
	        exactOutputParams = ExactOutputParams({
	```

</details>



## L-3: Boolean equality is not required

If `x` is a boolean, use `if(x)` and `if(!x)` instead of `if(x == true)` or `if(x == false)`.

<details><summary>4 Found Instances</summary>


- Found in src/BooleanEquality.sol [Line: 5](../tests/contract-playground/src/BooleanEquality.sol#L5)

	```solidity
	        if (isEven == true) {
	```

- Found in src/BooleanEquality.sol [Line: 12](../tests/contract-playground/src/BooleanEquality.sol#L12)

	```solidity
	        if (isEven == !true) {
	```

- Found in src/BooleanEquality.sol [Line: 19](../tests/contract-playground/src/BooleanEquality.sol#L19)

	```solidity
	        if (isEven == false) {
	```

- Found in src/BooleanEquality.sol [Line: 26](../tests/contract-playground/src/BooleanEquality.sol#L26)

	```solidity
	        if (isEven == !false) {
	```

</details>



## L-4: Builtin Symbol Shadowing

Name clashes with a built-in-symbol. Consider renaming it.

<details><summary>4 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 5](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L5)

	```solidity
	    uint now; // BAD
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)

	```solidity
	    modifier blockhash() {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 22](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L22)

	```solidity
	    event sha256();
	```

</details>



## L-5: Centralization Risk

Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.

<details><summary>23 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 7](../tests/contract-playground/src/AdminContract.sol#L7)

	```solidity
	contract AdminContract is Ownable, ReentrancyGuard {
	```

- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 7](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L7)

	```solidity
	contract DeprecatedOZFunctions is AccessControl {
	```

- Found in src/EmptyBlocks.sol [Line: 6](../tests/contract-playground/src/EmptyBlocks.sol#L6)

	```solidity
	contract EmptyBlocksWithOwnableConstructor is Ownable {
	```

- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)

	```solidity
	    function setValue(uint256 _newValue) external onlyOwner {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 7](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L7)

	```solidity
	contract SendEtherCheckOZOnlyOWner is Ownable, AccessControl {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L16)

	```solidity
	    function send(address x) external onlyOwner {
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 20](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L20)

	```solidity
	    function sendWithRole(address x) external onlyRole(DEFAULT_ADMIN_ROLE) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)

	```solidity
	    function badSituation4() external onlyOwner {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)

	```solidity
	    function goodSituation3() external onlyOwner {
	```

- Found in src/Trump.sol [Line: 92](../tests/contract-playground/src/Trump.sol#L92)

	```solidity
	    function renounceOwnership() public virtual onlyOwner {
	```

- Found in src/Trump.sol [Line: 123](../tests/contract-playground/src/Trump.sol#L123)

	```solidity
	contract MAGA is Context, IERC20, Ownable {
	```

- Found in src/Trump.sol [Line: 299](../tests/contract-playground/src/Trump.sol#L299)

	```solidity
	    function removeLimits() external onlyOwner{
	```

- Found in src/Trump.sol [Line: 338](../tests/contract-playground/src/Trump.sol#L338)

	```solidity
	    function openTrading() external onlyOwner() {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 9](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L9)

	```solidity
	contract OwnableExamples is Ownable {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)

	```solidity
	    function onlyOwnerFunction() external onlyOwner {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 35](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L35)

	```solidity
	contract AccessControlExamples is AccessControl {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)

	```solidity
	    function onlyRoleFunction() external onlyRole(ROLE) {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 7](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L7)

	```solidity
	contract ParentChainContract is Ownable, ReentrancyGuard {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

</details>



## L-6: Constant Function Contains Assembly

constant/pure/view was not enforced prior to Solidity 0.5. Starting from Solidity 0.5, a call to a constant/pure/view function uses the STATICCALL opcode, which reverts in case of state modification. As a result, a call to an incorrectly labeled function may trap a contract compiled with Solidity 0.5. https://docs.soliditylang.org/en/develop/050-breaking-changes.html#interoperability-with-older-contracts

<details><summary>3 Found Instances</summary>


- Found in src/ConstantFuncsAssembly.sol [Line: 9](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L9)

	```solidity
	    function setValue(uint256 _value) external view {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 17](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L17)

	```solidity
	    function getConstantValue() external pure returns (uint256) {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 36](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L36)

	```solidity
	    function getConstantValue2() external pure returns (uint256) {
	```

</details>



## L-7: Costly operations inside loop

Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.

<details><summary>19 Found Instances</summary>


- Found in src/CacheArrayLength.sol [Line: 25](../tests/contract-playground/src/CacheArrayLength.sol#L25)

	```solidity
	        for (uint i = 0; i < array.length; i++) {
	```

- Found in src/CacheArrayLength.sol [Line: 35](../tests/contract-playground/src/CacheArrayLength.sol#L35)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 10](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L10)

	```solidity
	        for (uint i = 0; i < loop_count; i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 29](../tests/contract-playground/src/EnumerableSetIteration.sol#L29)

	```solidity
	        for (uint256 i = 0; i < bytes32Set.length(); i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 38](../tests/contract-playground/src/EnumerableSetIteration.sol#L38)

	```solidity
	        while(i < bytes32Set.length()) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 48](../tests/contract-playground/src/EnumerableSetIteration.sol#L48)

	```solidity
	        do {
	```

- Found in src/EnumerableSetIteration.sol [Line: 57](../tests/contract-playground/src/EnumerableSetIteration.sol#L57)

	```solidity
	        for (uint256 i = 0; i < addressSet.length(); i++) {
	```

- Found in src/EnumerableSetIteration.sol [Line: 65](../tests/contract-playground/src/EnumerableSetIteration.sol#L65)

	```solidity
	        for (uint256 i = 0; i < uintSet.length(); i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 12](../tests/contract-playground/src/MsgValueInLoop.sol#L12)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 25](../tests/contract-playground/src/MsgValueInLoop.sol#L25)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 38](../tests/contract-playground/src/MsgValueInLoop.sol#L38)

	```solidity
	        for (uint256 i = 0; i < receivers.length; i++) {
	```

- Found in src/MsgValueInLoop.sol [Line: 54](../tests/contract-playground/src/MsgValueInLoop.sol#L54)

	```solidity
	        while (i < receivers.length) {
	```

- Found in src/MsgValueInLoop.sol [Line: 71](../tests/contract-playground/src/MsgValueInLoop.sol#L71)

	```solidity
	        do {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 47](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L47)

	```solidity
	        for (uint256 i = 0; i < s_useMe; ++i) {
	```

- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 17](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L17)

	```solidity
	            for (uint256 j = 9; j != 0; --j) {
	```

</details>



## L-8: Dead Code

Functions that are not used. Consider removing them.

<details><summary>12 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 18](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L18)

	```solidity
	    function bad1(address from, address to, uint256 amount) internal {
	```

- Found in src/ContractLocksEther.sol [Line: 54](../tests/contract-playground/src/ContractLocksEther.sol#L54)

	```solidity
	    function _sendEther(address payable recipient, uint256 amount) internal {
	```

- Found in src/DeadCode.sol [Line: 16](../tests/contract-playground/src/DeadCode.sol#L16)

	```solidity
	    function unusedInternalFunction() internal pure returns (string memory) {
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 14](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L14)

	```solidity
	    function remove() internal{
	```

- Found in src/IncorrectShift.sol [Line: 5](../tests/contract-playground/src/IncorrectShift.sol#L5)

	```solidity
	    function shiftBad() internal pure returns (uint shifted) {
	```

- Found in src/IncorrectShift.sol [Line: 13](../tests/contract-playground/src/IncorrectShift.sol#L13)

	```solidity
	    function shiftGood() internal pure returns (uint shifted) {
	```

- Found in src/UncheckedReturn.sol [Line: 12](../tests/contract-playground/src/UncheckedReturn.sol#L12)

	```solidity
	    function callOneAndDoNothing() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 20](../tests/contract-playground/src/UncheckedReturn.sol#L20)

	```solidity
	    function callOneAndDoSomething() internal {
	```

- Found in src/UncheckedReturn.sol [Line: 25](../tests/contract-playground/src/UncheckedReturn.sol#L25)

	```solidity
	    function callTwoAndDoNothing() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 30](../tests/contract-playground/src/UncheckedReturn.sol#L30)

	```solidity
	    function callTwoAndDoSomething() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 35](../tests/contract-playground/src/UncheckedReturn.sol#L35)

	```solidity
	    function callTwoAndRequireSomething() internal pure {
	```

- Found in src/UncheckedReturn.sol [Line: 40](../tests/contract-playground/src/UncheckedReturn.sol#L40)

	```solidity
	    function callTwoAndEmitError() internal pure {
	```

</details>



## L-9: `delegatecall` in loop

Using `delegatecall` in loop may consume excessive gas, or worse, lead to more severe issues.

<details><summary>1 Found Instances</summary>


- Found in src/inheritance/ExtendedInheritance.sol [Line: 15](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L15)

	```solidity
	        for (uint256 i = 0; i < 3; i++) {
	```

</details>



## L-10: Deprecated OpenZeppelin Function

Openzeppelin has deprecated several functions and replaced with newer versions. Please consult https://docs.openzeppelin.com/

<details><summary>2 Found Instances</summary>


- Found in src/DeprecatedOZFunctions.sol [Line: 22](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L22)

	```solidity
	        _setupRole(role, account);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 27](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L27)

	```solidity
	        token.safeApprove(spender, value);
	```

</details>



## L-11: Incorrect Order of Division and Multiplication

Division operations followed directly by multiplication operations can lead to precision loss due to the way integer arithmetic is handled in Solidity./
        Consider Multiplication before Division.

<details><summary>4 Found Instances</summary>


- Found in src/DivisionBeforeMultiplication.sol [Line: 8](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L8)

	```solidity
	        result = a * d + b / c * b / d; 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 12](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L12)

	```solidity
	        result = (a + b / c * b) * c; 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 16](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L16)

	```solidity
	        result = (a / b * c); 
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 20](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L20)

	```solidity
	        result = a + b / c * b * c; 
	```

</details>



## L-12: `ecrecover` Signature Malleability

The `ecrecover` function is susceptible to signature malleability. This means that the same message can be signed in multiple ways, allowing an attacker to change the message signature without invalidating it. This can lead to unexpected behavior in smart contracts, such as the loss of funds or the ability to bypass access control. Consider using OpenZeppelin's ECDSA library instead of the built-in function.

<details><summary>1 Found Instances</summary>


- Found in src/inheritance/ExtendedInheritance.sol [Line: 22](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L22)

	```solidity
	        return ecrecover(theHash, v, r, s);
	```

</details>



## L-13: Empty Block

Consider removing empty blocks.

<details><summary>56 Found Instances</summary>


- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)

	```solidity
	    function f1() public {
	```

- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/CacheArrayLength.sol [Line: 17](../tests/contract-playground/src/CacheArrayLength.sol#L17)

	```solidity
	    function c2() external view {
	```

- Found in src/CacheArrayLength.sol [Line: 42](../tests/contract-playground/src/CacheArrayLength.sol#L42)

	```solidity
	    function c5() external view {
	```

- Found in src/CallGraphTests.sol [Line: 16](../tests/contract-playground/src/CallGraphTests.sol#L16)

	```solidity
	    function enterTenthFloor1() external passThroughNinthFloor1() {
	```

- Found in src/CallGraphTests.sol [Line: 38](../tests/contract-playground/src/CallGraphTests.sol#L38)

	```solidity
	    function enterTenthFloor2(address x) external passThroughNinthFloor2(x) {
	```

- Found in src/ContractWithTodo.sol [Line: 7](../tests/contract-playground/src/ContractWithTodo.sol#L7)

	```solidity
	    function createTask(string memory _content) private {
	```

- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)

	```solidity
	    function toggleCompleted(uint _taskId) public {
	```

- Found in src/EmptyBlocks.sol [Line: 30](../tests/contract-playground/src/EmptyBlocks.sol#L30)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 38](../tests/contract-playground/src/EmptyBlocks.sol#L38)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 49](../tests/contract-playground/src/EmptyBlocks.sol#L49)

	```solidity
	        {
	```

- Found in src/EmptyBlocks.sol [Line: 63](../tests/contract-playground/src/EmptyBlocks.sol#L63)

	```solidity
	    function emptyFunction() external {
	```

- Found in src/EmptyBlocks.sol [Line: 67](../tests/contract-playground/src/EmptyBlocks.sol#L67)

	```solidity
	    function emptyFunctionWithComment() external {
	```

- Found in src/EmptyBlocks.sol [Line: 73](../tests/contract-playground/src/EmptyBlocks.sol#L73)

	```solidity
	    function emptyBlockInsideNormalFunction() external {
	```

- Found in src/EmptyBlocks.sol [Line: 81](../tests/contract-playground/src/EmptyBlocks.sol#L81)

	```solidity
	    function emptyBlockWithCommentInsideNormalFunction() external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 7](../tests/contract-playground/src/FunctionSignatureCollision.sol#L7)

	```solidity
	    function withdraw(uint256) external {
	```

- Found in src/FunctionSignatureCollision.sol [Line: 13](../tests/contract-playground/src/FunctionSignatureCollision.sol#L13)

	```solidity
	    function OwnerTransferV7b711143(uint256) external {
	```

- Found in src/OnceModifierExample.sol [Line: 10](../tests/contract-playground/src/OnceModifierExample.sol#L10)

	```solidity
	    function perform() external onlyOnce {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 193](../tests/contract-playground/src/OutOfOrderRetryable.sol#L193)

	```solidity
	    function _free_rewards(address user) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 53](../tests/contract-playground/src/SendEtherNoChecks.sol#L53)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 77](../tests/contract-playground/src/SendEtherNoChecks.sol#L77)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 99](../tests/contract-playground/src/SendEtherNoChecks.sol#L99)

	```solidity
	    function func1(address x) external mod1(x) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 9](../tests/contract-playground/src/TautologyOrContradiction.sol#L9)

	```solidity
	    function makeUselessComparisons() external view {
	```

- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)

	```solidity
	    function doSomething(bool success) internal pure {
	```

- Found in src/UnprotectedInitialize.sol [Line: 43](../tests/contract-playground/src/UnprotectedInitialize.sol#L43)

	```solidity
	    function initializeWithModifierNamedInitiliazer() external initializer {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 11](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L11)

	```solidity
	    function onlyOwnerFunction() external onlyOwner {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 30](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L30)

	```solidity
	    function transferOwnershipFunction(address newOwner) external {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 38](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L38)

	```solidity
	    function onlyRoleFunction() external onlyRole(ROLE) {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 61](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L61)

	```solidity
	    function grantRoleFunction(address account) external {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 85](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L85)

	```solidity
	    function transferOwnershipFunction(address newOwner) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 40](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L40)

	```solidity
	    function setOwner(address _owner) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 44](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L44)

	```solidity
	    function someOtherImportantThing() external {
	```

- Found in src/router/ExternalCalls.sol [Line: 13](../tests/contract-playground/src/router/ExternalCalls.sol#L13)

	```solidity
	    function abc() external virtual returns (uint256) {}
	```

- Found in src/router/ExternalCalls.sol [Line: 17](../tests/contract-playground/src/router/ExternalCalls.sol#L17)

	```solidity
	    function abc() public override returns (uint256) {}
	```

- Found in src/router/InternalCalls.sol [Line: 8](../tests/contract-playground/src/router/InternalCalls.sol#L8)

	```solidity
	    function help1() private {}
	```

- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)

	```solidity
	    function help2() internal virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)

	```solidity
	    function help2() internal override {}
	```

- Found in src/router/InternalCalls.sol [Line: 40](../tests/contract-playground/src/router/InternalCalls.sol#L40)

	```solidity
	    function g(Orange memory f) public virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 44](../tests/contract-playground/src/router/InternalCalls.sol#L44)

	```solidity
	    function g(Basic2.Orange memory f) public override {}
	```

- Found in src/router/InternalCalls.sol [Line: 54](../tests/contract-playground/src/router/InternalCalls.sol#L54)

	```solidity
	    function live() public virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 84](../tests/contract-playground/src/router/InternalCalls.sol#L84)

	```solidity
	    function live() public virtual override {}
	```

- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)

	```solidity
	    function aux1(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 98](../tests/contract-playground/src/router/InternalCalls.sol#L98)

	```solidity
	    function aux2(uint256 a) internal {}
	```

- Found in src/router/InternalCalls.sol [Line: 111](../tests/contract-playground/src/router/InternalCalls.sol#L111)

	```solidity
	    function ext1(uint256 a) external {}
	```

- Found in src/router/InternalCalls.sol [Line: 113](../tests/contract-playground/src/router/InternalCalls.sol#L113)

	```solidity
	    function ext2(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 136](../tests/contract-playground/src/router/InternalCalls.sol#L136)

	```solidity
	    function priv() private {}
	```

- Found in src/router/InternalCalls.sol [Line: 142](../tests/contract-playground/src/router/InternalCalls.sol#L142)

	```solidity
	    function d() external virtual returns (uint256, bool, uint256) {}
	```

- Found in src/router/InternalCalls.sol [Line: 167](../tests/contract-playground/src/router/InternalCalls.sol#L167)

	```solidity
	    function free(uint256 x) external {}
	```

- Found in src/router/InternalCalls.sol [Line: 175](../tests/contract-playground/src/router/InternalCalls.sol#L175)

	```solidity
	    function free(string memory x) public {}
	```

- Found in src/router/ModifierCalls.sol [Line: 7](../tests/contract-playground/src/router/ModifierCalls.sol#L7)

	```solidity
	    function geez() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)

	```solidity
	    function tree() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 46](../tests/contract-playground/src/router/ModifierCalls.sol#L46)

	```solidity
	    function show(uint256 a) internal modify {
	```

- Found in src/router/VarOverridesFunction.sol [Line: 5](../tests/contract-playground/src/router/VarOverridesFunction.sol#L5)

	```solidity
	    function mercy() external virtual returns (uint256) {
	```

</details>



## L-14: Empty `require()` / `revert()` Statement

Use descriptive reason strings or custom errors for revert paths.

<details><summary>31 Found Instances</summary>


- Found in src/CallGraphTests.sol [Line: 7](../tests/contract-playground/src/CallGraphTests.sol#L7)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/CallGraphTests.sol [Line: 28](../tests/contract-playground/src/CallGraphTests.sol#L28)

	```solidity
	            revert();
	```

- Found in src/CallGraphTests.sol [Line: 50](../tests/contract-playground/src/CallGraphTests.sol#L50)

	```solidity
	            revert();
	```

- Found in src/CallGraphTests.sol [Line: 65](../tests/contract-playground/src/CallGraphTests.sol#L65)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 31](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L31)

	```solidity
	        require(isLegit);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)

	```solidity
	        require(token.approve(spender, value));
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 40](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L40)

	```solidity
	            revert();
	```

- Found in src/EmitAfterExternalCall.sol [Line: 18](../tests/contract-playground/src/EmitAfterExternalCall.sol#L18)

	```solidity
	        require(actor != address(0));
	```

- Found in src/ExternalCalls.sol [Line: 72](../tests/contract-playground/src/ExternalCalls.sol#L72)

	```solidity
	            revert();
	```

- Found in src/IncorrectModifier.sol [Line: 49](../tests/contract-playground/src/IncorrectModifier.sol#L49)

	```solidity
	            revert();
	```

- Found in src/LocalVariableShadow.sol [Line: 12](../tests/contract-playground/src/LocalVariableShadow.sol#L12)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/LocalVariableShadow.sol [Line: 19](../tests/contract-playground/src/LocalVariableShadow.sol#L19)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/LocalVariableShadow.sol [Line: 33](../tests/contract-playground/src/LocalVariableShadow.sol#L33)

	```solidity
	        require(roll == msg.sender);
	```

- Found in src/MultiplePlaceholders.sol [Line: 23](../tests/contract-playground/src/MultiplePlaceholders.sol#L23)

	```solidity
	            revert();
	```

- Found in src/MultiplePlaceholders.sol [Line: 34](../tests/contract-playground/src/MultiplePlaceholders.sol#L34)

	```solidity
	            revert();
	```

- Found in src/MultiplePlaceholders.sol [Line: 46](../tests/contract-playground/src/MultiplePlaceholders.sol#L46)

	```solidity
	            revert();
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 19](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L19)

	```solidity
	                revert();
	```

- Found in src/SendEtherNoChecks.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecks.sol#L12)

	```solidity
	            revert();
	```

- Found in src/SendEtherNoChecks.sol [Line: 27](../tests/contract-playground/src/SendEtherNoChecks.sol#L27)

	```solidity
	        require(msg.sender == address(0x11));
	```

- Found in src/SendEtherNoChecks.sol [Line: 43](../tests/contract-playground/src/SendEtherNoChecks.sol#L43)

	```solidity
	            revert();
	```

- Found in src/SendEtherNoChecksLibImport.sol [Line: 12](../tests/contract-playground/src/SendEtherNoChecksLibImport.sol#L12)

	```solidity
	            revert();
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 17](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L17)

	```solidity
	        require(actor != address(0));
	```

- Found in src/StateShadowing.sol [Line: 8](../tests/contract-playground/src/StateShadowing.sol#L8)

	```solidity
	        require(owner == msg.sender);
	```

- Found in src/Trump.sol [Line: 240](../tests/contract-playground/src/Trump.sol#L240)

	```solidity
	                    require(!isContract(to));
	```

- Found in src/ZeroAddressCheck.sol [Line: 13](../tests/contract-playground/src/ZeroAddressCheck.sol#L13)

	```solidity
	        if (newAddr == address(0)) revert();
	```

- Found in src/ZeroAddressCheck.sol [Line: 23](../tests/contract-playground/src/ZeroAddressCheck.sol#L23)

	```solidity
	        if (newAddr == address(0)) revert();
	```

- Found in src/ZeroAddressCheck.sol [Line: 38](../tests/contract-playground/src/ZeroAddressCheck.sol#L38)

	```solidity
	        if (address(newToken) == address(0)) revert();
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L35)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 56](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L56)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 35](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L35)

	```solidity
	        require(bar != address(0));
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 53](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L53)

	```solidity
	        require(bar != address(0));
	```

</details>



## L-15: Function Used to Initialize State Variable

Instead of using a function to initialize a state variable in its declaration; declare the state variable and initialize it in the constructor.

<details><summary>3 Found Instances</summary>


- Found in src/FunctionInitializingState.sol [Line: 6](../tests/contract-playground/src/FunctionInitializingState.sol#L6)

	```solidity
	    uint public v = set(); // Initialize from function (sets to 77)
	```

- Found in src/FunctionInitializingState.sol [Line: 8](../tests/contract-playground/src/FunctionInitializingState.sol#L8)

	```solidity
	    uint public x = set(); // Initialize from function (sets to 88)
	```

- Found in src/FunctionInitializingState.sol [Line: 9](../tests/contract-playground/src/FunctionInitializingState.sol#L9)

	```solidity
	    uint public f = tes();
	```

</details>



## L-16: Function Pointer in Constructor

solc versions below 0.5.9 contain a compiler bug leading to unexpected behavior when calling uninitialized function pointers in constructors. It is recommended to not use function pointers in constructors.

<details><summary>1 Found Instances</summary>


- Found in src/FunctionPointers.sol [Line: 13](../tests/contract-playground/src/FunctionPointers.sol#L13)

	```solidity
	        function(uint, uint) pure returns (uint) operation;
	```

</details>



## L-17: Inconsistent uint256/uint (or) int256/int types

Inconsistency in declaring uint256/uint (or) int256/int variables within a contract. Use explicit size declarations (uint256 or int256). Consider keeping the naming convention consistent in a given contract. Explicit size declarations are preferred (uint256, int256) over implicit ones (uint, int) to avoid confusion.

<details><summary>29 Found Instances</summary>


- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)

	```solidity
	        uint unspecificUint = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)

	```solidity
	        int unspecificInt = -0x1234567890abcdef;
	```

- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)

	```solidity
	    uint public uintVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 7](../tests/contract-playground/src/InconsistentUints.sol#L7)

	```solidity
	    int public intVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 11](../tests/contract-playground/src/InconsistentUints.sol#L11)

	```solidity
	        uint personUint; // 2
	```

- Found in src/InconsistentUints.sol [Line: 12](../tests/contract-playground/src/InconsistentUints.sol#L12)

	```solidity
	        mapping (uint => uint256) personMap; // 3 2
	```

- Found in src/InconsistentUints.sol [Line: 15](../tests/contract-playground/src/InconsistentUints.sol#L15)

	```solidity
	    uint[] public uintArray; // 4
	```

- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)

	```solidity
	    mapping(uint256 => uint other) u2uMapping; // 5 3
	```

- Found in src/InconsistentUints.sol [Line: 19](../tests/contract-playground/src/InconsistentUints.sol#L19)

	```solidity
	    constructor(uint _uintInitial, uint256 _uint256Initial) { // 6 4
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 115](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L115)

	```solidity
	    ) external pure returns (uint) {
	```

- Found in src/TautologicalCompare.sol [Line: 11](../tests/contract-playground/src/TautologicalCompare.sol#L11)

	```solidity
	    function check(uint a) external pure returns (bool) {
	```

- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)

	```solidity
	    uint x;
	```

- Found in src/Trump.sol [Line: 159](../tests/contract-playground/src/Trump.sol#L159)

	```solidity
	    event MaxTxAmountUpdated(uint _maxTxAmount);
	```

- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)

	```solidity
	        uint uninitializedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)

	```solidity
	        uint[1] memory uninitializedUintArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 25](../tests/contract-playground/src/UninitializedLocalVariables.sol#L25)

	```solidity
	        uint initializedUint = 1;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 31](../tests/contract-playground/src/UninitializedLocalVariables.sol#L31)

	```solidity
	        uint[1] memory initializedUintArray = [uint(2)];
	```

- Found in src/UninitializedLocalVariables.sol [Line: 43](../tests/contract-playground/src/UninitializedLocalVariables.sol#L43)

	```solidity
	        uint delayedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 49](../tests/contract-playground/src/UninitializedLocalVariables.sol#L49)

	```solidity
	        uint[1] memory delayedUintArray;
	```

- Found in src/eth2/DepositContract.sol [Line: 59](../tests/contract-playground/src/eth2/DepositContract.sol#L59)

	```solidity
	    uint constant DEPOSIT_CONTRACT_TREE_DEPTH = 32;
	```

- Found in src/eth2/DepositContract.sol [Line: 61](../tests/contract-playground/src/eth2/DepositContract.sol#L61)

	```solidity
	    uint constant MAX_DEPOSIT_COUNT = 2**DEPOSIT_CONTRACT_TREE_DEPTH - 1;
	```

- Found in src/eth2/DepositContract.sol [Line: 70](../tests/contract-playground/src/eth2/DepositContract.sol#L70)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH - 1; height++)
	```

- Found in src/eth2/DepositContract.sol [Line: 76](../tests/contract-playground/src/eth2/DepositContract.sol#L76)

	```solidity
	        uint size = deposit_count;
	```

- Found in src/eth2/DepositContract.sol [Line: 77](../tests/contract-playground/src/eth2/DepositContract.sol#L77)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/eth2/DepositContract.sol [Line: 103](../tests/contract-playground/src/eth2/DepositContract.sol#L103)

	```solidity
	        uint deposit_amount = msg.value / 1 gwei;
	```

- Found in src/eth2/DepositContract.sol [Line: 133](../tests/contract-playground/src/eth2/DepositContract.sol#L133)

	```solidity
	        uint size = deposit_count;
	```

- Found in src/eth2/DepositContract.sol [Line: 134](../tests/contract-playground/src/eth2/DepositContract.sol#L134)

	```solidity
	        for (uint height = 0; height < DEPOSIT_CONTRACT_TREE_DEPTH; height++) {
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 8](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L8)

	```solidity
	        uint dummy;
	```

- Found in src/nested_mappings/NestedMappings.sol [Line: 8](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L8)

	```solidity
	        uint dummy;
	```

</details>



## L-18: Incorrect Use Of Modifier

If a modifier does not execute `_` or revert, the execution of the function will return the default value, which can be misleading for the caller. It is recommended that all the paths in a modifier must execute _ or revert.

<details><summary>2 Found Instances</summary>


- Found in src/IncorrectModifier.sol [Line: 22](../tests/contract-playground/src/IncorrectModifier.sol#L22)

	```solidity
	    modifier modifierIfRetBAD() {
	```

- Found in src/IncorrectModifier.sol [Line: 30](../tests/contract-playground/src/IncorrectModifier.sol#L30)

	```solidity
	    modifier modifierIfPlaceBAD() {
	```

</details>



## L-19: Internal Function Used Only Once

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.

<details><summary>22 Found Instances</summary>


- Found in src/CallGraphTests.sol [Line: 6](../tests/contract-playground/src/CallGraphTests.sol#L6)

	```solidity
	    function visitEighthFloor1() internal {
	```

- Found in src/CallGraphTests.sol [Line: 25](../tests/contract-playground/src/CallGraphTests.sol#L25)

	```solidity
	    function visitEighthFloor2(address x) internal {
	```

- Found in src/CallGraphTests.sol [Line: 47](../tests/contract-playground/src/CallGraphTests.sol#L47)

	```solidity
	    function visitEighthFloor3(address x) internal {
	```

- Found in src/CallGraphTests.sol [Line: 64](../tests/contract-playground/src/CallGraphTests.sol#L64)

	```solidity
	    function visitSeventhFloor3() internal {
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 26](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L26)

	```solidity
	    function useAssembly() internal pure returns (uint256) {
	```

- Found in src/InternalFunctions.sol [Line: 28](../tests/contract-playground/src/InternalFunctions.sol#L28)

	```solidity
	    function internalSet2(uint256 _newValue) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 43](../tests/contract-playground/src/MsgValueInLoop.sol#L43)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 60](../tests/contract-playground/src/MsgValueInLoop.sol#L60)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/MsgValueInLoop.sol [Line: 77](../tests/contract-playground/src/MsgValueInLoop.sol#L77)

	```solidity
	    function addToBal(address[] memory receivers, uint256 index) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 9](../tests/contract-playground/src/SendEtherNoChecks.sol#L9)

	```solidity
	    function callAndSendNativeEth(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 26](../tests/contract-playground/src/SendEtherNoChecks.sol#L26)

	```solidity
	    function func2() internal view {
	```

- Found in src/SendEtherNoChecks.sol [Line: 40](../tests/contract-playground/src/SendEtherNoChecks.sol#L40)

	```solidity
	    function callAndSendNativeEth(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 66](../tests/contract-playground/src/SendEtherNoChecks.sol#L66)

	```solidity
	    function transferBalance(address x) internal {
	```

- Found in src/SendEtherNoChecks.sol [Line: 88](../tests/contract-playground/src/SendEtherNoChecks.sol#L88)

	```solidity
	    function sendBalance(address x) internal {
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 26](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L26)

	```solidity
	    function callSecretFunc() internal {
	```

- Found in src/StorageParameters.sol [Line: 17](../tests/contract-playground/src/StorageParameters.sol#L17)

	```solidity
	    function editStorage(uint[1] storage arr) internal {
	```

- Found in src/Trump.sol [Line: 46](../tests/contract-playground/src/Trump.sol#L46)

	```solidity
	    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
	```

- Found in src/Trump.sol [Line: 65](../tests/contract-playground/src/Trump.sol#L65)

	```solidity
	    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
	```

- Found in src/UncheckedSend.sol [Line: 27](../tests/contract-playground/src/UncheckedSend.sol#L27)

	```solidity
	    function doSomething(bool success) internal pure {
	```

- Found in src/router/InternalCalls.sol [Line: 18](../tests/contract-playground/src/router/InternalCalls.sol#L18)

	```solidity
	    function help1() internal virtual {
	```

- Found in src/router/InternalCalls.sol [Line: 23](../tests/contract-playground/src/router/InternalCalls.sol#L23)

	```solidity
	    function help2() internal virtual {}
	```

- Found in src/router/InternalCalls.sol [Line: 38](../tests/contract-playground/src/router/InternalCalls.sol#L38)

	```solidity
	    function help2() internal override {}
	```

</details>



## L-20: Large Numeric Literal

Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.

<details><summary>27 Found Instances</summary>


- Found in src/HugeConstants.sol [Line: 6](../tests/contract-playground/src/HugeConstants.sol#L6)

	```solidity
	    uint256 constant public HUGE_NUMBER_1 = 100000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 7](../tests/contract-playground/src/HugeConstants.sol#L7)

	```solidity
	    uint256 constant public HUGE_NUMBER_2 = 10000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 8](../tests/contract-playground/src/HugeConstants.sol#L8)

	```solidity
	    uint256 constant public HUGE_NUMBER_3 = 1000000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 9](../tests/contract-playground/src/HugeConstants.sol#L9)

	```solidity
	    uint256 constant public HUGE_NUMBER_4 = 100000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 10](../tests/contract-playground/src/HugeConstants.sol#L10)

	```solidity
	    uint256 constant public HUGE_NUMBER_5 = 10000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 11](../tests/contract-playground/src/HugeConstants.sol#L11)

	```solidity
	    uint256 constant public HUGE_NUMBER_6 = 1000000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 12](../tests/contract-playground/src/HugeConstants.sol#L12)

	```solidity
	    uint256 constant public HUGE_NUMBER_7 = 100000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 13](../tests/contract-playground/src/HugeConstants.sol#L13)

	```solidity
	    uint256 constant public HUGE_NUMBER_8 = 10000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 14](../tests/contract-playground/src/HugeConstants.sol#L14)

	```solidity
	    uint256 constant public HUGE_NUMBER_9 = 1000000000000000;
	```

- Found in src/HugeConstants.sol [Line: 15](../tests/contract-playground/src/HugeConstants.sol#L15)

	```solidity
	    uint256 constant public HUGE_NUMBER_10 = 100000000000000;
	```

- Found in src/HugeConstants.sol [Line: 16](../tests/contract-playground/src/HugeConstants.sol#L16)

	```solidity
	    uint256 constant public HUGE_NUMBER_11 = 10000000000000;
	```

- Found in src/HugeConstants.sol [Line: 17](../tests/contract-playground/src/HugeConstants.sol#L17)

	```solidity
	    uint256 constant public HUGE_NUMBER_12 = 1000000000000;
	```

- Found in src/HugeConstants.sol [Line: 18](../tests/contract-playground/src/HugeConstants.sol#L18)

	```solidity
	    uint256 constant public HUGE_NUMBER_13 = 100000000000;
	```

- Found in src/HugeConstants.sol [Line: 19](../tests/contract-playground/src/HugeConstants.sol#L19)

	```solidity
	    uint256 constant public HUGE_NUMBER_14 = 10000000000;
	```

- Found in src/HugeConstants.sol [Line: 20](../tests/contract-playground/src/HugeConstants.sol#L20)

	```solidity
	    uint256 constant public HUGE_NUMBER_15 = 1000000000;
	```

- Found in src/HugeConstants.sol [Line: 21](../tests/contract-playground/src/HugeConstants.sol#L21)

	```solidity
	    uint256 constant public HUGE_NUMBER_16 = 100000000;
	```

- Found in src/HugeConstants.sol [Line: 22](../tests/contract-playground/src/HugeConstants.sol#L22)

	```solidity
	    uint256 constant public HUGE_NUMBER_17 = 10000000;
	```

- Found in src/HugeConstants.sol [Line: 23](../tests/contract-playground/src/HugeConstants.sol#L23)

	```solidity
	    uint256 constant public HUGE_NUMBER_18 = 1000000;
	```

- Found in src/HugeConstants.sol [Line: 24](../tests/contract-playground/src/HugeConstants.sol#L24)

	```solidity
	    uint256 constant public HUGE_NUMBER_19 = 100000;
	```

- Found in src/HugeConstants.sol [Line: 25](../tests/contract-playground/src/HugeConstants.sol#L25)

	```solidity
	    uint256 constant public HUGE_NUMBER_20 = 10000;
	```

- Found in src/HugeConstants.sol [Line: 31](../tests/contract-playground/src/HugeConstants.sol#L31)

	```solidity
	    uint256 constant public HUGE_NUMBER_24_UNDERSCORES = 1_000_000_000_000_000_000_000;
	```

- Found in src/HugeConstants.sol [Line: 32](../tests/contract-playground/src/HugeConstants.sol#L32)

	```solidity
	    uint256 constant public HUGE_NUMBER_25_UNDERSCORES = 10_000;
	```

- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)

	```solidity
	    uint256 public totalSupply = 1000000;
	```

- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)

	```solidity
	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
	```

- Found in src/Trump.sol [Line: 145](../tests/contract-playground/src/Trump.sol#L145)

	```solidity
	    uint256 private constant _tTotal = 47000000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 148](../tests/contract-playground/src/Trump.sol#L148)

	```solidity
	    uint256 public _maxTxAmount =   470000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)

	```solidity
	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
	```

</details>



## L-21: Literal Instead of Constant

Define and use `constant` variables instead of using literals. If the same constant literal value is used multiple times, create a constant state variable and reference it throughout the contract.

<details><summary>81 Found Instances</summary>


- Found in src/AssertStateChange.sol [Line: 9](../tests/contract-playground/src/AssertStateChange.sol#L9)

	```solidity
	        assert((s_a += 1) > 10);
	```

- Found in src/AssertStateChange.sol [Line: 14](../tests/contract-playground/src/AssertStateChange.sol#L14)

	```solidity
	        assert(s_a > 10);
	```

- Found in src/BooleanEquality.sol [Line: 6](../tests/contract-playground/src/BooleanEquality.sol#L6)

	```solidity
	            return 100;
	```

- Found in src/BooleanEquality.sol [Line: 13](../tests/contract-playground/src/BooleanEquality.sol#L13)

	```solidity
	            return 200;
	```

- Found in src/BooleanEquality.sol [Line: 15](../tests/contract-playground/src/BooleanEquality.sol#L15)

	```solidity
	        return 130;
	```

- Found in src/BooleanEquality.sol [Line: 20](../tests/contract-playground/src/BooleanEquality.sol#L20)

	```solidity
	            return 100;
	```

- Found in src/BooleanEquality.sol [Line: 27](../tests/contract-playground/src/BooleanEquality.sol#L27)

	```solidity
	            return 200;
	```

- Found in src/BooleanEquality.sol [Line: 29](../tests/contract-playground/src/BooleanEquality.sol#L29)

	```solidity
	        return 130;
	```

- Found in src/CacheArrayLength.sol [Line: 26](../tests/contract-playground/src/CacheArrayLength.sol#L26)

	```solidity
	            array[i] = 100;
	```

- Found in src/CacheArrayLength.sol [Line: 27](../tests/contract-playground/src/CacheArrayLength.sol#L27)

	```solidity
	            array.push(100);
	```

- Found in src/CacheArrayLength.sol [Line: 36](../tests/contract-playground/src/CacheArrayLength.sol#L36)

	```solidity
	            array[i] = 100;
	```

- Found in src/CacheArrayLength.sol [Line: 37](../tests/contract-playground/src/CacheArrayLength.sol#L37)

	```solidity
	            array.push(100);
	```

- Found in src/Casting.sol [Line: 20](../tests/contract-playground/src/Casting.sol#L20)

	```solidity
	        uint256 a = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 26](../tests/contract-playground/src/Casting.sol#L26)

	```solidity
	        int256 c = -0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 38](../tests/contract-playground/src/Casting.sol#L38)

	```solidity
	        uint unspecificUint = 0x1234567890abcdef;
	```

- Found in src/Casting.sol [Line: 76](../tests/contract-playground/src/Casting.sol#L76)

	```solidity
	        int unspecificInt = -0x1234567890abcdef;
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 9](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L9)

	```solidity
	        affectedArray = [-1, 5, 2];
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 14](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L14)

	```solidity
	        unaffectedArray[1] = 5;
	```

- Found in src/ConstantsLiterals.sol [Line: 25](../tests/contract-playground/src/ConstantsLiterals.sol#L25)

	```solidity
	        uint multipleUseOfValue = 987;
	```

- Found in src/ConstantsLiterals.sol [Line: 26](../tests/contract-playground/src/ConstantsLiterals.sol#L26)

	```solidity
	        multipleUseOfValue = 987;
	```

- Found in src/ConstantsLiterals.sol [Line: 27](../tests/contract-playground/src/ConstantsLiterals.sol#L27)

	```solidity
	        uint multipleUseOfValue2 = 9876;
	```

- Found in src/ConstantsLiterals.sol [Line: 28](../tests/contract-playground/src/ConstantsLiterals.sol#L28)

	```solidity
	        multipleUseOfValue2 = 9876 + 1;
	```

- Found in src/ConstantsLiterals.sol [Line: 29](../tests/contract-playground/src/ConstantsLiterals.sol#L29)

	```solidity
	        address multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
	```

- Found in src/ConstantsLiterals.sol [Line: 30](../tests/contract-playground/src/ConstantsLiterals.sol#L30)

	```solidity
	        multipleUseOfAddress = 0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5;
	```

- Found in src/ConstantsLiterals.sol [Line: 31](../tests/contract-playground/src/ConstantsLiterals.sol#L31)

	```solidity
	        bytes32 multipleUseOfBytes32 = 0x8a1b3dbe6301650442bfa765d4de23775fc9a4ec4329ebb5995ec7f1e3777dc4;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 6](../tests/contract-playground/src/DangerousStrictEquality2.sol#L6)

	```solidity
	        return address(this).balance == 100 ether;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 10](../tests/contract-playground/src/DangerousStrictEquality2.sol#L10)

	```solidity
	        return payable(address(this)).balance == 100 ether;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 24](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L24)

	```solidity
	        address[3] memory allowed = [address(1), address(2), address(3)];
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 26](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L26)

	```solidity
	        for (uint256 i = 0; i < 3; i++) {
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 13](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L13)

	```solidity
			myArray.length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 14](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L14)

	```solidity
	        myArray2[7].length = 200;
	```

- Found in src/DynamicArrayLengthAssignment.sol [Line: 17](../tests/contract-playground/src/DynamicArrayLengthAssignment.sol#L17)

	```solidity
	        myArray.length += 200;
	```

- Found in src/FunctionInitializingState.sol [Line: 23](../tests/contract-playground/src/FunctionInitializingState.sol#L23)

	```solidity
	            return 77;
	```

- Found in src/FunctionInitializingState.sol [Line: 26](../tests/contract-playground/src/FunctionInitializingState.sol#L26)

	```solidity
	        return 88;
	```

- Found in src/FunctionInitializingState.sol [Line: 34](../tests/contract-playground/src/FunctionInitializingState.sol#L34)

	```solidity
	            return 77;
	```

- Found in src/FunctionInitializingState.sol [Line: 37](../tests/contract-playground/src/FunctionInitializingState.sol#L37)

	```solidity
	        return 88;
	```

- Found in src/FunctionInitializingState.sol [Line: 42](../tests/contract-playground/src/FunctionInitializingState.sol#L42)

	```solidity
	        f = 1e10 * 1e12;
	```

- Found in src/FunctionInitializingState.sol [Line: 48](../tests/contract-playground/src/FunctionInitializingState.sol#L48)

	```solidity
	            f = 1e10 * 1e12;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 17](../tests/contract-playground/src/IncorrectCaretOperator.sol#L17)

	```solidity
	        uint256 z = s_second^89 + 13;
	```

- Found in src/IncorrectCaretOperator.sol [Line: 18](../tests/contract-playground/src/IncorrectCaretOperator.sol#L18)

	```solidity
	        uint256 w = s_second^s_first + 13; 
	```

- Found in src/MultiplePlaceholders.sol [Line: 22](../tests/contract-playground/src/MultiplePlaceholders.sol#L22)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 33](../tests/contract-playground/src/MultiplePlaceholders.sol#L33)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 45](../tests/contract-playground/src/MultiplePlaceholders.sol#L45)

	```solidity
	        } else if (a + b < 100) {
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 8](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L8)

	```solidity
	        a = 100;
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 9](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L9)

	```solidity
	        uint b = 100; 
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 26](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L26)

	```solidity
	        uint256[] memory failedIds = new uint256[](10);
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 27](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L27)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/StateVariablesManipulation.sol [Line: 121](../tests/contract-playground/src/StateVariablesManipulation.sol#L121)

	```solidity
	        person = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 123](../tests/contract-playground/src/StateVariablesManipulation.sol#L123)

	```solidity
	        person2.age = 21;
	```

- Found in src/StateVariablesManipulation.sol [Line: 192](../tests/contract-playground/src/StateVariablesManipulation.sol#L192)

	```solidity
	        p.age = 200;
	```

- Found in src/StateVariablesManipulation.sol [Line: 202](../tests/contract-playground/src/StateVariablesManipulation.sol#L202)

	```solidity
	        p2.age = 200;
	```

- Found in src/StateVariablesManipulation.sol [Line: 233](../tests/contract-playground/src/StateVariablesManipulation.sol#L233)

	```solidity
	        uint256[5][1] memory m_allAges;
	```

- Found in src/StateVariablesManipulation.sol [Line: 237](../tests/contract-playground/src/StateVariablesManipulation.sol#L237)

	```solidity
	        m_person = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 239](../tests/contract-playground/src/StateVariablesManipulation.sol#L239)

	```solidity
	        m_person2.age = 21;
	```

- Found in src/StateVariablesManipulation.sol [Line: 244](../tests/contract-playground/src/StateVariablesManipulation.sol#L244)

	```solidity
	        Person memory m_dummy = Person("Spiderman", 21);
	```

- Found in src/StateVariablesManipulation.sol [Line: 258](../tests/contract-playground/src/StateVariablesManipulation.sol#L258)

	```solidity
	        uint256[5] storage ageRef1 = allAges[0];
	```

- Found in src/StateVariablesManipulation.sol [Line: 264](../tests/contract-playground/src/StateVariablesManipulation.sol#L264)

	```solidity
	        uint256[5] storage ageRef2 = allAges[0];
	```

- Found in src/StateVariablesManipulation.sol [Line: 333](../tests/contract-playground/src/StateVariablesManipulation.sol#L333)

	```solidity
	        p.some.push(102);
	```

- Found in src/StateVariablesManipulation.sol [Line: 339](../tests/contract-playground/src/StateVariablesManipulation.sol#L339)

	```solidity
	        that.push(102);
	```

- Found in src/Trump.sol [Line: 233](../tests/contract-playground/src/Trump.sol#L233)

	```solidity
	            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);
	```

- Found in src/Trump.sol [Line: 250](../tests/contract-playground/src/Trump.sol#L250)

	```solidity
	                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
	```

- Found in src/Trump.sol [Line: 306](../tests/contract-playground/src/Trump.sol#L306)

	```solidity
	        uint256 taxWalletShare = amount * _taxWalletPercentage / 100;
	```

- Found in src/Trump.sol [Line: 307](../tests/contract-playground/src/Trump.sol#L307)

	```solidity
	        uint256 teamWalletShare = amount * _teamWalletPercentage / 100;
	```

- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)

	```solidity
	        UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/UncheckedReturn.sol [Line: 32](../tests/contract-playground/src/UncheckedReturn.sol#L32)

	```solidity
	        uint256 _answer = UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/UncheckedReturn.sol [Line: 37](../tests/contract-playground/src/UncheckedReturn.sol#L37)

	```solidity
	        require(UncheckedHelperExternal(address(0x12345)).two() == 2, "Not two");
	```

- Found in src/UncheckedReturn.sol [Line: 42](../tests/contract-playground/src/UncheckedReturn.sol#L42)

	```solidity
	        if (UncheckedHelperExternal(address(0x12345)).two() != 2) {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 34](../tests/contract-playground/src/UninitializedLocalVariables.sol#L34)

	```solidity
	            0x0000000000000000000000000000000000000001
	```

- Found in src/UninitializedLocalVariables.sol [Line: 63](../tests/contract-playground/src/UninitializedLocalVariables.sol#L63)

	```solidity
	        delayedAddress = 0x0000000000000000000000000000000000000001;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 67](../tests/contract-playground/src/UninitializedLocalVariables.sol#L67)

	```solidity
	        delayedUintArray[0] = 21;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 70](../tests/contract-playground/src/UninitializedLocalVariables.sol#L70)

	```solidity
	        delayedIntArray[0] = -21;
	```

- Found in src/WeakRandomness.sol [Line: 25](../tests/contract-playground/src/WeakRandomness.sol#L25)

	```solidity
	        return block.timestamp % 10;
	```

- Found in src/WeakRandomness.sol [Line: 35](../tests/contract-playground/src/WeakRandomness.sol#L35)

	```solidity
	        uint256 randomNumber = uint256(blockhash(block.number)) % 10;
	```

- Found in src/WeakRandomness.sol [Line: 41](../tests/contract-playground/src/WeakRandomness.sol#L41)

	```solidity
	        return hash % 10;
	```

- Found in src/eth2/DepositContract.sol [Line: 113](../tests/contract-playground/src/eth2/DepositContract.sol#L113)

	```solidity
	            abi.encodePacked(sha256(abi.encodePacked(signature[:64])), sha256(abi.encodePacked(signature[64:], bytes32(0))))
	```

</details>



## L-22: Local Variable Shadows State Variable

Rename the local variable that shadows another state variable.

<details><summary>10 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/FunctionInitializingState.sol [Line: 41](../tests/contract-playground/src/FunctionInitializingState.sol#L41)

	```solidity
	    function okay() public returns (uint f) {
	```

- Found in src/FunctionInitializingState.sol [Line: 46](../tests/contract-playground/src/FunctionInitializingState.sol#L46)

	```solidity
	    function okay2() public returns (uint f) {
	```

- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)

	```solidity
	    function sensitiveFunction(address owner) public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 17](../tests/contract-playground/src/LocalVariableShadow.sol#L17)

	```solidity
	        address owner = msg.sender;
	```

- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)

	```solidity
	    function sensitiveFfunction(address roll) public view {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 144](../tests/contract-playground/src/OutOfOrderRetryable.sol#L144)

	```solidity
	        uint256 maxSubmissionCost,
	```

- Found in src/OutOfOrderRetryable.sol [Line: 147](../tests/contract-playground/src/OutOfOrderRetryable.sol#L147)

	```solidity
	        uint256 gasLimit,
	```

- Found in src/OutOfOrderRetryable.sol [Line: 148](../tests/contract-playground/src/OutOfOrderRetryable.sol#L148)

	```solidity
	        uint256 maxFeePerGas,
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

</details>



## L-23: Missing Inheritance

There is an interface / abstract contract that is potentially missing (not included in) the inheritance of this contract.

<details><summary>3 Found Instances</summary>


- Found in src/MissingInheritance.sol [Line: 7](../tests/contract-playground/src/MissingInheritance.sol#L7)

	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingInheritanceCounter
	```solidity
	contract MissingInheritanceCounter {
	```

- Found in src/MissingInheritance.sol [Line: 41](../tests/contract-playground/src/MissingInheritance.sol#L41)

	Is this contract supposed to implement an interface? Consider extending one of the following: IMissingChild, IMissingParent
	```solidity
	contract MissingContract2 {
	```

- Found in src/TestERC20.sol [Line: 4](../tests/contract-playground/src/TestERC20.sol#L4)

	Is this contract supposed to implement an interface? Consider extending one of the following: IERC20
	```solidity
	contract TestERC20 {
	```

</details>



## L-24: Modifier Invoked Only Once

Consider removing the modifier or inlining the logic into the calling function.

<details><summary>17 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 17](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L17)

	```solidity
	    modifier blockhash() {
	```

- Found in src/CallGraphTests.sol [Line: 10](../tests/contract-playground/src/CallGraphTests.sol#L10)

	```solidity
	    modifier passThroughNinthFloor1() {
	```

- Found in src/CallGraphTests.sol [Line: 32](../tests/contract-playground/src/CallGraphTests.sol#L32)

	```solidity
	    modifier passThroughNinthFloor2(address x) {
	```

- Found in src/CallGraphTests.sol [Line: 54](../tests/contract-playground/src/CallGraphTests.sol#L54)

	```solidity
	    modifier passThroughNinthFloor3(address x) {
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 23](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L23)

	```solidity
	    modifier isAllowed(address to) {
	```

- Found in src/InternalFunctions.sol [Line: 18](../tests/contract-playground/src/InternalFunctions.sol#L18)

	```solidity
	    modifier onlyOwner() {
	```

- Found in src/OnceModifierExample.sol [Line: 6](../tests/contract-playground/src/OnceModifierExample.sol#L6)

	```solidity
	    modifier onlyOnce() {
	```

- Found in src/SendEtherNoChecks.sol [Line: 16](../tests/contract-playground/src/SendEtherNoChecks.sol#L16)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 47](../tests/contract-playground/src/SendEtherNoChecks.sol#L47)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 70](../tests/contract-playground/src/SendEtherNoChecks.sol#L70)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/SendEtherNoChecks.sol [Line: 93](../tests/contract-playground/src/SendEtherNoChecks.sol#L93)

	```solidity
	    modifier mod1(address x) {
	```

- Found in src/StateShadowing.sol [Line: 7](../tests/contract-playground/src/StateShadowing.sol#L7)

	```solidity
	    modifier isOwner(){
	```

- Found in src/Trump.sol [Line: 162](../tests/contract-playground/src/Trump.sol#L162)

	```solidity
	    modifier lockTheSwap {
	```

- Found in src/UnprotectedInitialize.sol [Line: 15](../tests/contract-playground/src/UnprotectedInitialize.sol#L15)

	```solidity
	    modifier firstTimeInitializing() {
	```

- Found in src/router/ModifierCalls.sol [Line: 5](../tests/contract-playground/src/router/ModifierCalls.sol#L5)

	```solidity
	    modifier modify() virtual;
	```

- Found in src/router/ModifierCalls.sol [Line: 31](../tests/contract-playground/src/router/ModifierCalls.sol#L31)

	```solidity
	    modifier modify() override  {
	```

- Found in src/router/ModifierCalls.sol [Line: 42](../tests/contract-playground/src/router/ModifierCalls.sol#L42)

	```solidity
	    modifier modify() {
	```

</details>



## L-25: Multiple Placeholders in Modifier

Design the modifier to only contain 1 placeholder statement. If that is not possible, split the logic into multiple modifiers.

<details><summary>3 Found Instances</summary>


- Found in src/MultiplePlaceholders.sol [Line: 12](../tests/contract-playground/src/MultiplePlaceholders.sol#L12)

	```solidity
	    modifier checkOwner() {
	```

- Found in src/MultiplePlaceholders.sol [Line: 19](../tests/contract-playground/src/MultiplePlaceholders.sol#L19)

	```solidity
	    modifier test2(uint256 a, uint256 b) {
	```

- Found in src/MultiplePlaceholders.sol [Line: 40](../tests/contract-playground/src/MultiplePlaceholders.sol#L40)

	```solidity
	    modifier test4(uint256 a, uint256 b) {
	```

</details>



## L-26: `nonReentrant` is Not the First Modifier

To protect against reentrancy in other modifiers, the `nonReentrant` modifier should be the first modifier in the list of modifiers.

<details><summary>2 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 10](../tests/contract-playground/src/AdminContract.sol#L10)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 28](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L28)

	```solidity
	    function setOwner(address _owner) external onlyOwner nonReentrant {
	```

</details>



## L-27: PUSH0 Opcode

Solc compiler version 0.8.20 switches the default target EVM version to Shanghai, which means that the generated bytecode will include PUSH0 opcodes. Be sure to select the appropriate EVM version in case you intend to deploy on a chain other than mainnet like L2 chains that may not support PUSH0, otherwise deployment of your contracts will fail.

<details><summary>45 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 2](../tests/contract-playground/src/AdminContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/AssertStateChange.sol [Line: 2](../tests/contract-playground/src/AssertStateChange.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/CacheArrayLength.sol [Line: 2](../tests/contract-playground/src/CacheArrayLength.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)

	```solidity
	pragma solidity ^0.8.13;
	```

- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)

	```solidity
	pragma solidity >=0.8.19 <0.9.1;
	```

- Found in src/DangerousStrictEquality2.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality2.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)

	```solidity
	pragma solidity ^0.8;
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 2](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)

	```solidity
	pragma solidity ^0.8.24;
	```

- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/KeccakContract.sol [Line: 2](../tests/contract-playground/src/KeccakContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OnlyLibrary.sol [Line: 2](../tests/contract-playground/src/OnlyLibrary.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ReturnBomb.sol [Line: 2](../tests/contract-playground/src/ReturnBomb.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/StateVariables.sol [Line: 2](../tests/contract-playground/src/StateVariables.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/StateVariablesManipulation.sol [Line: 2](../tests/contract-playground/src/StateVariablesManipulation.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/StorageConditionals.sol [Line: 2](../tests/contract-playground/src/StorageConditionals.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/T11sTranferer.sol [Line: 2](../tests/contract-playground/src/T11sTranferer.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/TautologicalCompare.sol [Line: 2](../tests/contract-playground/src/TautologicalCompare.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/Trump.sol [Line: 16](../tests/contract-playground/src/Trump.sol#L16)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UnsafeERC721Mint.sol [Line: 2](../tests/contract-playground/src/UnsafeERC721Mint.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/WeakRandomness.sol [Line: 2](../tests/contract-playground/src/WeakRandomness.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity ^0.8.18;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity >=0.8.0 <0.8.25; 
	```

- Found in src/eth2/DepositContract.sol [Line: 12](../tests/contract-playground/src/eth2/DepositContract.sol#L12)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)

	```solidity
	pragma solidity >=0.8.0;
	```

- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested/1/Nested.sol [Line: 5](../tests/contract-playground/src/nested/1/Nested.sol#L5)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/nested/2/Nested.sol [Line: 5](../tests/contract-playground/src/nested/2/Nested.sol#L5)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 2](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

- Found in src/uniswap/UniswapV3Swapper.sol [Line: 2](../tests/contract-playground/src/uniswap/UniswapV3Swapper.sol#L2)

	```solidity
	pragma solidity 0.8.20;
	```

</details>



## L-28: Redundant Statement

Remove the redundant statement.

<details><summary>6 Found Instances</summary>


- Found in src/RedundantStatements.sol [Line: 6](../tests/contract-playground/src/RedundantStatements.sol#L6)

	```solidity
	        uint; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 7](../tests/contract-playground/src/RedundantStatements.sol#L7)

	```solidity
	        bool; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 8](../tests/contract-playground/src/RedundantStatements.sol#L8)

	```solidity
	        RedundantStatementsContract; // Identifier
	```

- Found in src/RedundantStatements.sol [Line: 12](../tests/contract-playground/src/RedundantStatements.sol#L12)

	```solidity
	        uint; // Elementary Type Name
	```

- Found in src/RedundantStatements.sol [Line: 13](../tests/contract-playground/src/RedundantStatements.sol#L13)

	```solidity
	        assert; // Identifier
	```

- Found in src/RedundantStatements.sol [Line: 14](../tests/contract-playground/src/RedundantStatements.sol#L14)

	```solidity
	        test; // Identifier
	```

</details>



## L-29: Loop Contains `require`/`revert`

Avoid `require` / `revert` statements in a loop because a single bad item can cause the whole transaction to fail. It's better to forgive on fail and return failed elements post processing of the loop

<details><summary>2 Found Instances</summary>


- Found in src/RevertsAndRequriesInLoops.sol [Line: 10](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L10)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 17](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L17)

	```solidity
	        for (uint256 id = 0; id < 10; ++id) {
	```

</details>



## L-30: Return Bomb

A low level callee may consume all callers gas unexpectedly. Avoid unlimited implicit decoding of returndata on calls to unchecked addresses. You can limit the gas by passing a gas limit as an option to the call. For example, `unknownAddress.call{gas: gasLimitHere}("calldata")` That would act as a safety net from OOG errors.
        

<details><summary>1 Found Instances</summary>


- Found in src/ReturnBomb.sol [Line: 22](../tests/contract-playground/src/ReturnBomb.sol#L22)

	```solidity
	        (success, ret) = badGuy.call(
	```

</details>



## L-31: Solmate's SafeTransferLib

There is a subtle difference between the implementation of solmate's SafeTransferLib and OZ's SafeERC20: OZ's SafeERC20 checks if the token is a contract or not, solmate's SafeTransferLib does not.
https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol#L9 
`@dev Note that none of the functions in this library check that a token has code at all! That responsibility is delegated to the caller`


<details><summary>1 Found Instances</summary>


- Found in src/T11sTranferer.sol [Line: 4](../tests/contract-playground/src/T11sTranferer.sol#L4)

	```solidity
	import {ERC20, SafeTransferLib} from "../lib/solmate/src/utils/SafeTransferLib.sol";
	```

</details>



## L-32: State Change Without Event

There are state variable changes in this function but no event is emitted. Consider emitting an event to enable offchain indexers to track the changes.

<details><summary>115 Found Instances</summary>


- Found in src/AdminContract.sol [Line: 14](../tests/contract-playground/src/AdminContract.sol#L14)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)

	```solidity
	    function bad() public {
	```

- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)

	```solidity
	    function good() public {
	```

- Found in src/CacheArrayLength.sol [Line: 23](../tests/contract-playground/src/CacheArrayLength.sol#L23)

	```solidity
	    function c3() external {
	```

- Found in src/CacheArrayLength.sol [Line: 32](../tests/contract-playground/src/CacheArrayLength.sol#L32)

	```solidity
	    function c4() external {
	```

- Found in src/Casting.sol [Line: 37](../tests/contract-playground/src/Casting.sol#L37)

	```solidity
	    function unsafeUintCasting() external {
	```

- Found in src/Casting.sol [Line: 75](../tests/contract-playground/src/Casting.sol#L75)

	```solidity
	    function unsafeIntCasting() external {
	```

- Found in src/Casting.sol [Line: 113](../tests/contract-playground/src/Casting.sol#L113)

	```solidity
	    function unsafeBytes32Casting() external {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 9](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L9)

	```solidity
	    function bad() external {
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 15](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L15)

	```solidity
	    function good() external {
	```

- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/Counter.sol [Line: 11](../tests/contract-playground/src/Counter.sol#L11)

	```solidity
	    function increment() public {
	```

- Found in src/Counter.sol [Line: 16](../tests/contract-playground/src/Counter.sol#L16)

	```solidity
	    function callIncrement() external {
	```

- Found in src/Counter.sol [Line: 21](../tests/contract-playground/src/Counter.sol#L21)

	```solidity
	    function incrementByTwoMagic() external {
	```

- Found in src/Counter.sol [Line: 28](../tests/contract-playground/src/Counter.sol#L28)

	```solidity
	    function incrementByTwoConstant() external {
	```

- Found in src/DeadCode.sol [Line: 11](../tests/contract-playground/src/DeadCode.sol#L11)

	```solidity
	    function setValue(uint256 _value) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 7](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L7)

	```solidity
	    function calculateWrong(uint a, uint b, uint c, uint d) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 11](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L11)

	```solidity
	    function calculateAlsoWrong(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 15](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L15)

	```solidity
	    function calculateAl(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 19](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L19)

	```solidity
	    function calculateStillWrong(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 23](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L23)

	```solidity
	    function calculateCorrect(uint a, uint b, uint c) external {
	```

- Found in src/DivisionBeforeMultiplication.sol [Line: 27](../tests/contract-playground/src/DivisionBeforeMultiplication.sol#L27)

	```solidity
	    function calculateAlsoCorrect(uint a, uint b, uint c, uint d) external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 28](../tests/contract-playground/src/EnumerableSetIteration.sol#L28)

	```solidity
	    function badBytes32IterationInForLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 36](../tests/contract-playground/src/EnumerableSetIteration.sol#L36)

	```solidity
	    function badBytes32IterationInWhileLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 46](../tests/contract-playground/src/EnumerableSetIteration.sol#L46)

	```solidity
	    function badBytes32IterationInDoWhileLoop() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 56](../tests/contract-playground/src/EnumerableSetIteration.sol#L56)

	```solidity
	    function badAddressIteration() external {
	```

- Found in src/EnumerableSetIteration.sol [Line: 64](../tests/contract-playground/src/EnumerableSetIteration.sol#L64)

	```solidity
	    function badUintIteration() external {
	```

- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)

	```solidity
	    function extCall(uint256 m_a) public payable {
	```

- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)

	```solidity
	    function baseThing(address x) public {
	```

- Found in src/ExternalCalls.sol [Line: 78](../tests/contract-playground/src/ExternalCalls.sol#L78)

	```solidity
	    function notExt1() external {
	```

- Found in src/ExternalCalls.sol [Line: 82](../tests/contract-playground/src/ExternalCalls.sol#L82)

	```solidity
	    function notExt2() external {
	```

- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 68](../tests/contract-playground/src/IncorrectERC20.sol#L68)

	```solidity
	    function transfer(
	```

- Found in src/IncorrectERC20.sol [Line: 83](../tests/contract-playground/src/IncorrectERC20.sol#L83)

	```solidity
	    function approve(address spender, uint256 amount) external returns (bool) {
	```

- Found in src/IncorrectERC20.sol [Line: 88](../tests/contract-playground/src/IncorrectERC20.sol#L88)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 22](../tests/contract-playground/src/IncorrectERC721.sol#L22)

	```solidity
	    function approve(
	```

- Found in src/IncorrectERC721.sol [Line: 41](../tests/contract-playground/src/IncorrectERC721.sol#L41)

	```solidity
	    function setApprovalForAll(
	```

- Found in src/IncorrectERC721.sol [Line: 56](../tests/contract-playground/src/IncorrectERC721.sol#L56)

	```solidity
	    function transferFrom(
	```

- Found in src/IncorrectERC721.sol [Line: 86](../tests/contract-playground/src/IncorrectERC721.sol#L86)

	```solidity
	    function mint(address to, uint256 tokenId) external returns (uint72) {
	```

- Found in src/InternalFunctions.sol [Line: 12](../tests/contract-playground/src/InternalFunctions.sol#L12)

	```solidity
	    function setValue(uint256 _newValue) external onlyOwner {
	```

- Found in src/MissingInheritance.sol [Line: 10](../tests/contract-playground/src/MissingInheritance.sol#L10)

	```solidity
	    function increment() external {
	```

- Found in src/MissingInheritance.sol [Line: 25](../tests/contract-playground/src/MissingInheritance.sol#L25)

	```solidity
	    function increment() external {
	```

- Found in src/MsgValueInLoop.sol [Line: 10](../tests/contract-playground/src/MsgValueInLoop.sol#L10)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 22](../tests/contract-playground/src/MsgValueInLoop.sol#L22)

	```solidity
	    function good(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 36](../tests/contract-playground/src/MsgValueInLoop.sol#L36)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 51](../tests/contract-playground/src/MsgValueInLoop.sol#L51)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/MsgValueInLoop.sol [Line: 68](../tests/contract-playground/src/MsgValueInLoop.sol#L68)

	```solidity
	    function bad(address[] memory receivers) external payable {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 9](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L9)

	```solidity
	    function deductMassFundsV1() external {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 16](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L16)

	```solidity
	    function deductMassFundsV2() external {
	```

- Found in src/RevertsAndRequriesInLoops.sol [Line: 25](../tests/contract-playground/src/RevertsAndRequriesInLoops.sol#L25)

	```solidity
	     function deductMassFundsV3() external returns(uint256[] memory failedIds) {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 22](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L22)

	```solidity
	    function badSituation1() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 31](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L31)

	```solidity
	    function badSituation2() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 42](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L42)

	```solidity
	    function badSituation3() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 57](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L57)

	```solidity
	    function goodSituation1() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 66](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L66)

	```solidity
	    function goodSituation2() external {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 81](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L81)

	```solidity
	    function badSituation4() external onlyOwner {
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 87](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L87)

	```solidity
	    function goodSituation3() external onlyOwner {
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 39](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L39)

	```solidity
	    function changeIt() external {
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 37](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L37)

	```solidity
	    function changeNotImmutableVar() external {
	```

- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)

	```solidity
	    function setAddrNoZeroError(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)

	```solidity
	    function setAddrNoZeroRequire(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)

	```solidity
	    function setAddrNoCheck(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)

	```solidity
	    function setEmptyAlteredNumbers(
	```

- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)

	```solidity
	    function setNonEmptyAlteredNumbers(
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 23](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L23)

	```solidity
	    function stateChangedNoEventEmitted(uint256 a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 28](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L28)

	```solidity
	    function stateChangedNoEventEmittedPlusEquals(uint256 a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 33](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L33)

	```solidity
	    function stateChangedToBooleanNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 45](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L45)

	```solidity
	    function stateChangedToConstantNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 50](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L50)

	```solidity
	    function stateChangedNoEventEmitted() external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 55](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L55)

	```solidity
	    function addressChangedNotEmitted(address a) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 68](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L68)

	```solidity
	    function wholeStructChangedEventNotEmitted(uint256 a, uint256 b) external {
	```

- Found in src/StateVariablesChangesWithoutEvents.sol [Line: 81](../tests/contract-playground/src/StateVariablesChangesWithoutEvents.sol#L81)

	```solidity
	    function structMemberChangedEventNotEmitted(uint256 a, uint256 b) external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 48](../tests/contract-playground/src/StateVariablesManipulation.sol#L48)

	```solidity
	    function manipulateStateVarDirectly(
	```

- Found in src/StateVariablesManipulation.sol [Line: 80](../tests/contract-playground/src/StateVariablesManipulation.sol#L80)

	```solidity
	    function manipulateDirectly(uint256[5] calldata _values) external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 85](../tests/contract-playground/src/StateVariablesManipulation.sol#L85)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 120](../tests/contract-playground/src/StateVariablesManipulation.sol#L120)

	```solidity
	    function manipulateStateVariables() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 126](../tests/contract-playground/src/StateVariablesManipulation.sol#L126)

	```solidity
	    function manipulateStateVariables2() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 139](../tests/contract-playground/src/StateVariablesManipulation.sol#L139)

	```solidity
	    function manipulateStateVariables4() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 160](../tests/contract-playground/src/StateVariablesManipulation.sol#L160)

	```solidity
	    function manipulateStateVariables6() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 176](../tests/contract-playground/src/StateVariablesManipulation.sol#L176)

	```solidity
	    function manipulateStateVariables7() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 182](../tests/contract-playground/src/StateVariablesManipulation.sol#L182)

	```solidity
	    function manipulateStateVariables8() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 281](../tests/contract-playground/src/StateVariablesManipulation.sol#L281)

	```solidity
	    function manipulateDirectly() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 286](../tests/contract-playground/src/StateVariablesManipulation.sol#L286)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 314](../tests/contract-playground/src/StateVariablesManipulation.sol#L314)

	```solidity
	    function manipulateDirectly() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 321](../tests/contract-playground/src/StateVariablesManipulation.sol#L321)

	```solidity
	    function manipulateViaIndexAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 332](../tests/contract-playground/src/StateVariablesManipulation.sol#L332)

	```solidity
	    function manipulateViaMemberAccess() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 337](../tests/contract-playground/src/StateVariablesManipulation.sol#L337)

	```solidity
	    function manipulateViaMemberAccess2() external {
	```

- Found in src/StateVariablesManipulation.sol [Line: 353](../tests/contract-playground/src/StateVariablesManipulation.sol#L353)

	```solidity
	    function add(uint256 i) external {
	```

- Found in src/StorageParameters.sol [Line: 7](../tests/contract-playground/src/StorageParameters.sol#L7)

	```solidity
	    function editArrays() external {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 16](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L16)

	```solidity
	    function authorizeUser(address _user) external {
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 22](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L22)

	```solidity
	    function revokeUser(address _user) external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 21](../tests/contract-playground/src/UnprotectedInitialize.sol#L21)

	```solidity
	    function initializeWithModifier() external firstTimeInitializing {
	```

- Found in src/UnprotectedInitialize.sol [Line: 27](../tests/contract-playground/src/UnprotectedInitialize.sol#L27)

	```solidity
	    function initializeWithRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 37](../tests/contract-playground/src/UnprotectedInitialize.sol#L37)

	```solidity
	    function initializeWithoutModifierOrRevert() external {
	```

- Found in src/UnprotectedInitialize.sol [Line: 70](../tests/contract-playground/src/UnprotectedInitialize.sol#L70)

	```solidity
	    function initializeWithoutProtection() external {
	```

- Found in src/UnusedError.sol [Line: 16](../tests/contract-playground/src/UnusedError.sol#L16)

	```solidity
	    function perform() external {
	```

- Found in src/UnusedStateVariables.sol [Line: 15](../tests/contract-playground/src/UnusedStateVariables.sol#L15)

	```solidity
	    function setValue(uint256 v) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 12](../tests/contract-playground/src/ZeroAddressCheck.sol#L12)

	```solidity
	    function goodAddress1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 17](../tests/contract-playground/src/ZeroAddressCheck.sol#L17)

	```solidity
	    function goodAddress2(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 22](../tests/contract-playground/src/ZeroAddressCheck.sol#L22)

	```solidity
	    function goodToken1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 27](../tests/contract-playground/src/ZeroAddressCheck.sol#L27)

	```solidity
	    function goodToken2(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 32](../tests/contract-playground/src/ZeroAddressCheck.sol#L32)

	```solidity
	    function goodToken3(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 37](../tests/contract-playground/src/ZeroAddressCheck.sol#L37)

	```solidity
	    function goodToken4(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 42](../tests/contract-playground/src/ZeroAddressCheck.sol#L42)

	```solidity
	    function bad1(address newAddr) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 46](../tests/contract-playground/src/ZeroAddressCheck.sol#L46)

	```solidity
	    function bad2(IERC20 newToken) external {
	```

- Found in src/ZeroAddressCheck.sol [Line: 50](../tests/contract-playground/src/ZeroAddressCheck.sol#L50)

	```solidity
	    function bad3(address newAddr) external {
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 14](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L14)

	```solidity
	    function doSomethingElse(address target) external {
	```

- Found in src/nested/1/Nested.sol [Line: 10](../tests/contract-playground/src/nested/1/Nested.sol#L10)

	```solidity
	    function updateHorseNumber(uint256 newNumberOfHorses) external {
	```

- Found in src/nested/2/Nested.sol [Line: 10](../tests/contract-playground/src/nested/2/Nested.sol#L10)

	```solidity
	    function updateHorseNumber(uint256 newNumberOfHorses) external {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)

	```solidity
	    function increment(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 32](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L32)

	```solidity
	    function someOtherImportantThing() external nonReentrant onlyOwner {
	```

- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)

	```solidity
	    function main() public {
	```

</details>



## L-33: Address State Variable Set Without Checks

Check for `address(0)` when assigning values to address state variables.

<details><summary>12 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 12](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L12)

	```solidity
	        s_token = token;
	```

- Found in src/ExternalCalls.sol [Line: 20](../tests/contract-playground/src/ExternalCalls.sol#L20)

	```solidity
	        t2 = MyTarget(x);
	```

- Found in src/ExternalCalls.sol [Line: 28](../tests/contract-playground/src/ExternalCalls.sol#L28)

	```solidity
	        t1 = t;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 54](../tests/contract-playground/src/OutOfOrderRetryable.sol#L54)

	```solidity
	        inbox = _inbox;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 55](../tests/contract-playground/src/OutOfOrderRetryable.sol#L55)

	```solidity
	        l2contract = _l2contract;
	```

- Found in src/StateVariables.sol [Line: 58](../tests/contract-playground/src/StateVariables.sol#L58)

	```solidity
	        addr = newAddr;
	```

- Found in src/StateVariablesManipulation.sol [Line: 56](../tests/contract-playground/src/StateVariablesManipulation.sol#L56)

	```solidity
	        simpleAddress = d;
	```

- Found in src/ZeroAddressCheck.sol [Line: 43](../tests/contract-playground/src/ZeroAddressCheck.sol#L43)

	```solidity
	        addr = newAddr;
	```

- Found in src/ZeroAddressCheck.sol [Line: 47](../tests/contract-playground/src/ZeroAddressCheck.sol#L47)

	```solidity
	        token = newToken;
	```

- Found in src/ZeroAddressCheck.sol [Line: 51](../tests/contract-playground/src/ZeroAddressCheck.sol#L51)

	```solidity
	        token = IERC20(newAddr);
	```

- Found in src/inheritance/ExtendedInheritance.sol [Line: 18](../tests/contract-playground/src/inheritance/ExtendedInheritance.sol#L18)

	```solidity
	        s_baseAddress = target;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 11](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L11)

	```solidity
	        s_router = router;
	```

</details>



## L-34: State Variable Could Be Constant

State variables that are not updated following deployment should be declared constant to save gas. Add the `constant` attribute to state variables that never change.

<details><summary>45 Found Instances</summary>


- Found in src/CostlyOperationsInsideLoops.sol [Line: 6](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L6)

	```solidity
	    uint loop_count = 100;
	```

- Found in src/FunctionInitializingState.sol [Line: 7](../tests/contract-playground/src/FunctionInitializingState.sol#L7)

	```solidity
	    uint public w = 5;
	```

- Found in src/FunctionInitializingState.sol [Line: 58](../tests/contract-playground/src/FunctionInitializingState.sol#L58)

	```solidity
	    uint public w = 5;
	```

- Found in src/IncorrectERC20.sol [Line: 5](../tests/contract-playground/src/IncorrectERC20.sol#L5)

	```solidity
	    string public name = "IncorrectToken";
	```

- Found in src/IncorrectERC20.sol [Line: 6](../tests/contract-playground/src/IncorrectERC20.sol#L6)

	```solidity
	    string public symbol = "ICT";
	```

- Found in src/IncorrectERC20.sol [Line: 7](../tests/contract-playground/src/IncorrectERC20.sol#L7)

	```solidity
	    uint8 public decimals = 18;
	```

- Found in src/IncorrectERC20.sol [Line: 8](../tests/contract-playground/src/IncorrectERC20.sol#L8)

	```solidity
	    uint256 public totalSupply = 1000000;
	```

- Found in src/IncorrectERC20.sol [Line: 48](../tests/contract-playground/src/IncorrectERC20.sol#L48)

	```solidity
	    string public name = "CorrectToken";
	```

- Found in src/IncorrectERC20.sol [Line: 49](../tests/contract-playground/src/IncorrectERC20.sol#L49)

	```solidity
	    string public symbol = "CRT";
	```

- Found in src/IncorrectERC20.sol [Line: 50](../tests/contract-playground/src/IncorrectERC20.sol#L50)

	```solidity
	    uint8 public decimals = 18;
	```

- Found in src/IncorrectERC20.sol [Line: 51](../tests/contract-playground/src/IncorrectERC20.sol#L51)

	```solidity
	    uint256 private _totalSupply = 1000000 * 10 ** uint(decimals);
	```

- Found in src/IncorrectERC721.sol [Line: 5](../tests/contract-playground/src/IncorrectERC721.sol#L5)

	```solidity
	    string public name = "IncorrectNFT";
	```

- Found in src/IncorrectERC721.sol [Line: 6](../tests/contract-playground/src/IncorrectERC721.sol#L6)

	```solidity
	    string public symbol = "INFT";
	```

- Found in src/IncorrectERC721.sol [Line: 145](../tests/contract-playground/src/IncorrectERC721.sol#L145)

	```solidity
	    string public name = "CorrectNFT";
	```

- Found in src/IncorrectERC721.sol [Line: 146](../tests/contract-playground/src/IncorrectERC721.sol#L146)

	```solidity
	    string public symbol = "CNFT";
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 8](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L8)

	```solidity
	    uint256 public constantValue = 100;
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 13](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L13)

	```solidity
	    SVIERC20 public h = SVIERC20(address(3)); // This could be declared constant
	```

- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)

	```solidity
	    uint256 private staticNonEmptyPrivateNumber = 1;
	```

- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)

	```solidity
	    uint256 internal staticNonEmptyInternalNumber = 2;
	```

- Found in src/StateVariables.sol [Line: 15](../tests/contract-playground/src/StateVariables.sol#L15)

	```solidity
	    uint256 public staticNonEmptyPublicNumber = 3;
	```

- Found in src/StateVariablesManipulation.sol [Line: 40](../tests/contract-playground/src/StateVariablesManipulation.sol#L40)

	```solidity
	    int256 public simpleInt = 100;
	```

- Found in src/StateVariablesManipulation.sol [Line: 41](../tests/contract-playground/src/StateVariablesManipulation.sol#L41)

	```solidity
	    bool public simpleBool = true;
	```

- Found in src/StateVariablesManipulation.sol [Line: 72](../tests/contract-playground/src/StateVariablesManipulation.sol#L72)

	```solidity
	    uint256[5] public assignToMeNow = [1, 4, 5, 8, 9]; // 1 state var assigned here
	```

- Found in src/Trump.sol [Line: 130](../tests/contract-playground/src/Trump.sol#L130)

	```solidity
	    uint256 private _taxWalletPercentage = 50;
	```

- Found in src/Trump.sol [Line: 131](../tests/contract-playground/src/Trump.sol#L131)

	```solidity
	    uint256 private _teamWalletPercentage = 50;
	```

- Found in src/Trump.sol [Line: 135](../tests/contract-playground/src/Trump.sol#L135)

	```solidity
	    uint256 private _initialBuyTax=20;
	```

- Found in src/Trump.sol [Line: 136](../tests/contract-playground/src/Trump.sol#L136)

	```solidity
	    uint256 private _initialSellTax=20;
	```

- Found in src/Trump.sol [Line: 137](../tests/contract-playground/src/Trump.sol#L137)

	```solidity
	    uint256 private _finalBuyTax=1;
	```

- Found in src/Trump.sol [Line: 138](../tests/contract-playground/src/Trump.sol#L138)

	```solidity
	    uint256 private _finalSellTax=1;
	```

- Found in src/Trump.sol [Line: 139](../tests/contract-playground/src/Trump.sol#L139)

	```solidity
	    uint256 private _reduceBuyTaxAt=20;
	```

- Found in src/Trump.sol [Line: 140](../tests/contract-playground/src/Trump.sol#L140)

	```solidity
	    uint256 private _reduceSellTaxAt=20;
	```

- Found in src/Trump.sol [Line: 141](../tests/contract-playground/src/Trump.sol#L141)

	```solidity
	    uint256 private _preventSwapBefore=20;
	```

- Found in src/Trump.sol [Line: 150](../tests/contract-playground/src/Trump.sol#L150)

	```solidity
	    uint256 public _taxSwapThreshold= 47000 * 10**_decimals;
	```

- Found in src/Trump.sol [Line: 151](../tests/contract-playground/src/Trump.sol#L151)

	```solidity
	    uint256 public _maxTaxSwap= 470000 * 10**_decimals;
	```

- Found in src/UninitializedStateVariable.sol [Line: 8](../tests/contract-playground/src/UninitializedStateVariable.sol#L8)

	```solidity
	    string public s_publisher = "Blockchain Ltd."; // GOOD (because it's initialized here.)
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

</details>



## L-35: State Variable Could Be Immutable

State variables that are only changed in the constructor should be declared immutable to save gas. Add the `immutable` attribute to state variables that are only changed in the constructor

<details><summary>36 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 9](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L9)

	```solidity
	    IERC20 s_token;
	```

- Found in src/EmitAfterExternalCall.sol [Line: 15](../tests/contract-playground/src/EmitAfterExternalCall.sol#L15)

	```solidity
	    MaliciousActor s_actor;
	```

- Found in src/ExternalCalls.sol [Line: 25](../tests/contract-playground/src/ExternalCalls.sol#L25)

	```solidity
	    MyTarget t1;
	```

- Found in src/FunctionInitializingState.sol [Line: 57](../tests/contract-playground/src/FunctionInitializingState.sol#L57)

	```solidity
	    uint public v;
	```

- Found in src/FunctionInitializingState.sol [Line: 59](../tests/contract-playground/src/FunctionInitializingState.sol#L59)

	```solidity
	    uint public x;
	```

- Found in src/InconsistentUints.sol [Line: 5](../tests/contract-playground/src/InconsistentUints.sol#L5)

	```solidity
	    uint public uintVariable; // 1
	```

- Found in src/InconsistentUints.sol [Line: 6](../tests/contract-playground/src/InconsistentUints.sol#L6)

	```solidity
	    uint256 public uint256Variable; // 1
	```

- Found in src/InternalFunctions.sol [Line: 5](../tests/contract-playground/src/InternalFunctions.sol#L5)

	```solidity
	    address public owner;
	```

- Found in src/MultiplePlaceholders.sol [Line: 5](../tests/contract-playground/src/MultiplePlaceholders.sol#L5)

	```solidity
	    address internal owner;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 39](../tests/contract-playground/src/OutOfOrderRetryable.sol#L39)

	```solidity
	    address public inbox;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 40](../tests/contract-playground/src/OutOfOrderRetryable.sol#L40)

	```solidity
	    address public l2contract;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 41](../tests/contract-playground/src/OutOfOrderRetryable.sol#L41)

	```solidity
	    uint256 public maxSubmissionCost;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 42](../tests/contract-playground/src/OutOfOrderRetryable.sol#L42)

	```solidity
	    uint256 public gasLimit;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 43](../tests/contract-playground/src/OutOfOrderRetryable.sol#L43)

	```solidity
	    uint256 public maxFeePerGas;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 44](../tests/contract-playground/src/OutOfOrderRetryable.sol#L44)

	```solidity
	    uint256 public gas;
	```

- Found in src/StateChangeAfterExternalCall.sol [Line: 14](../tests/contract-playground/src/StateChangeAfterExternalCall.sol#L14)

	```solidity
	    MaliciousActor s_actor;
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 11](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L11)

	```solidity
	    uint256 public variableValue; // This one cannot be marked constant. (It can be marked immutable)
	```

- Found in src/StateVariableCouldBeDeclaredConstant.sol [Line: 29](../tests/contract-playground/src/StateVariableCouldBeDeclaredConstant.sol#L29)

	```solidity
	    uint256 public variableValue;
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 6](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L6)

	```solidity
	    uint256 potentiallyImmutableUint;
	```

- Found in src/StateVariableCouldBeDeclaredImmutable.sol [Line: 9](../tests/contract-playground/src/StateVariableCouldBeDeclaredImmutable.sol#L9)

	```solidity
	    address potentiallyImmutableAddr;
	```

- Found in src/StorageConditionals.sol [Line: 5](../tests/contract-playground/src/StorageConditionals.sol#L5)

	```solidity
	    uint256 private s_sameConditionals;
	```

- Found in src/StorageConditionals.sol [Line: 6](../tests/contract-playground/src/StorageConditionals.sol#L6)

	```solidity
	    uint256 private s_differentConditionals;
	```

- Found in src/TestERC20.sol [Line: 7](../tests/contract-playground/src/TestERC20.sol#L7)

	```solidity
	    string public name;
	```

- Found in src/TestERC20.sol [Line: 8](../tests/contract-playground/src/TestERC20.sol#L8)

	```solidity
	    string public symbol;
	```

- Found in src/Trump.sol [Line: 128](../tests/contract-playground/src/Trump.sol#L128)

	```solidity
	    address payable private _taxWallet;
	```

- Found in src/Trump.sol [Line: 129](../tests/contract-playground/src/Trump.sol#L129)

	```solidity
	    address payable private _teamWallet;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 5](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L5)

	```solidity
	    address public owner;
	```

- Found in src/UninitializedStateVariable.sol [Line: 9](../tests/contract-playground/src/UninitializedStateVariable.sol#L9)

	```solidity
	    uint256 public numPages; // GOOD (because it's initialized in constructor)
	```

- Found in src/UninitializedStateVariable.sol [Line: 37](../tests/contract-playground/src/UninitializedStateVariable.sol#L37)

	```solidity
	    uint256 public myVar; // initialized in extension, hence not captured
	```

- Found in src/UnprotectedInitialize.sol [Line: 9](../tests/contract-playground/src/UnprotectedInitialize.sol#L9)

	```solidity
	    address private owner;
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 9](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L9)

	```solidity
	    address private target;
	```

- Found in src/auditor_mode/ExternalCalls.sol [Line: 10](../tests/contract-playground/src/auditor_mode/ExternalCalls.sol#L10)

	```solidity
	    ExternalContractInterface private targetContract;
	```

- Found in src/eth2/DepositContract.sol [Line: 66](../tests/contract-playground/src/eth2/DepositContract.sol#L66)

	```solidity
	    bytes32[DEPOSIT_CONTRACT_TREE_DEPTH] zero_hashes;
	```

- Found in src/reused_contract_name/ContractA.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractA.sol#L5)

	```solidity
	    uint public x;
	```

- Found in src/reused_contract_name/ContractB.sol [Line: 5](../tests/contract-playground/src/reused_contract_name/ContractB.sol#L5)

	```solidity
	    address public x;
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 8](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L8)

	```solidity
	    address private s_router;
	```

</details>



## L-36: State Variable is Read as External

The contract reads it's own state variable using `this` which adds an unnecessary STATICCALL. Consider removing `this` to access the variable from storage.

<details><summary>4 Found Instances</summary>


- Found in src/PublicVariableReadInExternalContext.sol [Line: 12](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L12)

	```solidity
	        return this.testArray(0);
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 16](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L16)

	```solidity
	        return this.testUint256();
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 20](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L20)

	```solidity
	        return this.testMap(0);
	```

- Found in src/PublicVariableReadInExternalContext.sol [Line: 42](../tests/contract-playground/src/PublicVariableReadInExternalContext.sol#L42)

	```solidity
	        return this.testArray(0);
	```

</details>



## L-37: Storage Array Length not Cached

Calling `.length` on a storage array in a loop condition is expensive. Consider caching the length in a local variable in memory before the loop and reusing it.

<details><summary>3 Found Instances</summary>


- Found in src/CacheArrayLength.sol [Line: 12](../tests/contract-playground/src/CacheArrayLength.sol#L12)

	```solidity
	        for (uint i = 0; i < array.length; i++) {
	```

- Found in src/CacheArrayLength.sol [Line: 44](../tests/contract-playground/src/CacheArrayLength.sol#L44)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {}
	```

- Found in src/CacheArrayLength.sol [Line: 50](../tests/contract-playground/src/CacheArrayLength.sol#L50)

	```solidity
	        for (uint i = 0; i < array.length + anotherArray.length; i++) {
	```

</details>



## L-38: Contract has TODO Comments

Contract contains comments with TODOS. Consider implementing or removing them.

<details><summary>3 Found Instances</summary>


- Found in src/ContractWithTodo.sol [Line: 4](../tests/contract-playground/src/ContractWithTodo.sol#L4)

	```solidity
	contract TodoList {
	```

- Found in src/Counter.sol [Line: 4](../tests/contract-playground/src/Counter.sol#L4)

	```solidity
	contract Counter {
	```

- Found in src/TautologicalCompare.sol [Line: 4](../tests/contract-playground/src/TautologicalCompare.sol#L4)

	```solidity
	contract TautologicalCompare {
	```

</details>



## L-39: Unchecked Return

Function returns a value but it is ignored. Consider checking the return value.

<details><summary>35 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)

	```solidity
	        s_token.transferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)

	```solidity
	        s_token.transferFrom(from_msgsender, to, am);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)

	```solidity
	        s_token.transferFrom(msg.sender, to, amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)

	```solidity
	        token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

- Found in src/EnumerableSetIteration.sol [Line: 17](../tests/contract-playground/src/EnumerableSetIteration.sol#L17)

	```solidity
	            bytes32Set.add(bytes32s[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 20](../tests/contract-playground/src/EnumerableSetIteration.sol#L20)

	```solidity
	            addressSet.add(addresses[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 23](../tests/contract-playground/src/EnumerableSetIteration.sol#L23)

	```solidity
	            uintSet.add(uints[i]);
	```

- Found in src/EnumerableSetIteration.sol [Line: 31](../tests/contract-playground/src/EnumerableSetIteration.sol#L31)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 40](../tests/contract-playground/src/EnumerableSetIteration.sol#L40)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 50](../tests/contract-playground/src/EnumerableSetIteration.sol#L50)

	```solidity
	            bytes32Set.remove(thisBytes32);
	```

- Found in src/EnumerableSetIteration.sol [Line: 59](../tests/contract-playground/src/EnumerableSetIteration.sol#L59)

	```solidity
	            addressSet.remove(thisAddress);
	```

- Found in src/EnumerableSetIteration.sol [Line: 67](../tests/contract-playground/src/EnumerableSetIteration.sol#L67)

	```solidity
	            uintSet.remove(thisUint);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 65](../tests/contract-playground/src/OutOfOrderRetryable.sol#L65)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 77](../tests/contract-playground/src/OutOfOrderRetryable.sol#L77)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 92](../tests/contract-playground/src/OutOfOrderRetryable.sol#L92)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 107](../tests/contract-playground/src/OutOfOrderRetryable.sol#L107)

	```solidity
	        IInbox(inbox).createRetryableTicket({
	```

- Found in src/OutOfOrderRetryable.sol [Line: 129](../tests/contract-playground/src/OutOfOrderRetryable.sol#L129)

	```solidity
	        IInbox(inbox).outboundTransferCustomRefund(
	```

- Found in src/OutOfOrderRetryable.sol [Line: 151](../tests/contract-playground/src/OutOfOrderRetryable.sol#L151)

	```solidity
	        IInbox(inbox).unsafeCreateRetryableTicket(
	```

- Found in src/StateVariablesManipulation.sol [Line: 142](../tests/contract-playground/src/StateVariablesManipulation.sol#L142)

	```solidity
	        manipulateHelper(p1);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

- Found in src/UncheckedReturn.sol [Line: 14](../tests/contract-playground/src/UncheckedReturn.sol#L14)

	```solidity
	        one();
	```

- Found in src/UncheckedReturn.sol [Line: 27](../tests/contract-playground/src/UncheckedReturn.sol#L27)

	```solidity
	        UncheckedHelperExternal(address(0x12345)).two();
	```

- Found in src/router/ExternalCalls.sol [Line: 27](../tests/contract-playground/src/router/ExternalCalls.sol#L27)

	```solidity
	        a.abc();
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 23](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L23)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 24](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L24)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 25](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L25)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 26](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L26)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 27](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L27)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, block.timestamp);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 46](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L46)

	```solidity
	        router1.swapExactTokensForTokens(amountIn, amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 47](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L47)

	```solidity
	        router1.swapTokensForExactTokens(amountOut, amountInMax, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 48](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L48)

	```solidity
	        router1.swapExactETHForTokens(amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 49](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L49)

	```solidity
	        router1.swapTokensForExactETH(amountOut, amountInMax, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 50](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L50)

	```solidity
	        router1.swapExactTokensForETH(amountIn, amountOutMin, path, to, deadline);
	```

- Found in src/uniswap/UniswapV2Swapper.sol [Line: 51](../tests/contract-playground/src/uniswap/UniswapV2Swapper.sol#L51)

	```solidity
	        router1.swapETHForExactTokens(amountOut, path, to, deadline);
	```

</details>



## L-40: Uninitialized Local Variable

Initialize all the variables. If a variable is meant to be initialized to zero, explicitly set it to zero to improve code readability.

<details><summary>15 Found Instances</summary>


- Found in src/ConstantFuncsAssembly.sol [Line: 18](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L18)

	```solidity
	        uint256 result;
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 27](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L27)

	```solidity
	        uint256 result;
	```

- Found in src/StorageParameters.sol [Line: 8](../tests/contract-playground/src/StorageParameters.sol#L8)

	```solidity
	        uint[1] memory memoryArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 9](../tests/contract-playground/src/UninitializedLocalVariables.sol#L9)

	```solidity
	        uint uninitializedUint;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 10](../tests/contract-playground/src/UninitializedLocalVariables.sol#L10)

	```solidity
	        bool uninitializedBool;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 11](../tests/contract-playground/src/UninitializedLocalVariables.sol#L11)

	```solidity
	        address uninitializedAddress;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 12](../tests/contract-playground/src/UninitializedLocalVariables.sol#L12)

	```solidity
	        int uninitializedInt;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 13](../tests/contract-playground/src/UninitializedLocalVariables.sol#L13)

	```solidity
	        bytes32 uninitializedBytes32;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 14](../tests/contract-playground/src/UninitializedLocalVariables.sol#L14)

	```solidity
	        string memory uninitializedString;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 15](../tests/contract-playground/src/UninitializedLocalVariables.sol#L15)

	```solidity
	        uint[1] memory uninitializedUintArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 16](../tests/contract-playground/src/UninitializedLocalVariables.sol#L16)

	```solidity
	        bool[1] memory uninitializedBoolArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 17](../tests/contract-playground/src/UninitializedLocalVariables.sol#L17)

	```solidity
	        address[1] memory uninitializedAddressArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 18](../tests/contract-playground/src/UninitializedLocalVariables.sol#L18)

	```solidity
	        int[1] memory uninitializedIntArray;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 19](../tests/contract-playground/src/UninitializedLocalVariables.sol#L19)

	```solidity
	        bytes32[1] memory uninitializedBytes32Array;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 20](../tests/contract-playground/src/UninitializedLocalVariables.sol#L20)

	```solidity
	        string[1] memory uninitializedStringArray;
	```

</details>



## L-41: Unsafe ERC20 Operation

ERC20 functions may not behave as expected. For example: return values are not always meaningful. It is recommended to use OpenZeppelin's SafeERC20 library.

<details><summary>20 Found Instances</summary>


- Found in src/ArbitraryTransferFrom.sol [Line: 19](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L19)

	```solidity
	        s_token.transferFrom(from, to, amount);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 34](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L34)

	```solidity
	        s_token.transferFrom(from_msgsender, to, am);
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 54](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L54)

	```solidity
	        s_token.transferFrom(msg.sender, to, amount);
	```

- Found in src/ContractLocksEther.sol [Line: 162](../tests/contract-playground/src/ContractLocksEther.sol#L162)

	```solidity
	        recipient.transfer(amount);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 32](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L32)

	```solidity
	        token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 37](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L37)

	```solidity
	        require(token.approve(spender, value));
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 38](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L38)

	```solidity
	        success = token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 42](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L42)

	```solidity
	        return token.approve(spender, value);
	```

- Found in src/DeprecatedOZFunctions.sol [Line: 47](../tests/contract-playground/src/DeprecatedOZFunctions.sol#L47)

	```solidity
	        token.transferFrom(from, to, value);
	```

- Found in src/IncorrectModifier.sol [Line: 83](../tests/contract-playground/src/IncorrectModifier.sol#L83)

	```solidity
	            payable(owner).transfer(USEME);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 171](../tests/contract-playground/src/OutOfOrderRetryable.sol#L171)

	```solidity
	        payable(msg.sender).transfer(unclaimed_rewards);
	```

- Found in src/OutOfOrderRetryable.sol [Line: 180](../tests/contract-playground/src/OutOfOrderRetryable.sol#L180)

	```solidity
	        payable(msg.sender).transfer(user_balance);
	```

- Found in src/SendEtherNoChecks.sol [Line: 67](../tests/contract-playground/src/SendEtherNoChecks.sol#L67)

	```solidity
	        payable(x).transfer(BAL);
	```

- Found in src/StateShadowing.sol [Line: 22](../tests/contract-playground/src/StateShadowing.sol#L22)

	```solidity
	        msg.sender.transfer(address(this).balance);
	```

- Found in src/Trump.sol [Line: 309](../tests/contract-playground/src/Trump.sol#L309)

	```solidity
	        _taxWallet.transfer(taxWalletShare);
	```

- Found in src/Trump.sol [Line: 310](../tests/contract-playground/src/Trump.sol#L310)

	```solidity
	        _teamWallet.transfer(teamWalletShare);
	```

- Found in src/Trump.sol [Line: 318](../tests/contract-playground/src/Trump.sol#L318)

	```solidity
	        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
	```

- Found in src/Trump.sol [Line: 324](../tests/contract-playground/src/Trump.sol#L324)

	```solidity
	        payable(_taxWallet).transfer(balance);
	```

- Found in src/Trump.sol [Line: 344](../tests/contract-playground/src/Trump.sol#L344)

	```solidity
	        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
	```

- Found in src/UninitializedStateVariable.sol [Line: 18](../tests/contract-playground/src/UninitializedStateVariable.sol#L18)

	```solidity
	        payable(destination).transfer(msg.value); // `destination` does not have any assignments.
	```

</details>



## L-42: Unsafe `ERC721::_mint()`

Using `ERC721::_mint()` can mint ERC721 tokens to addresses which don't support ERC721 tokens. Use `_safeMint()` instead of `_mint()` for ERC721 tokens.

<details><summary>1 Found Instances</summary>


- Found in src/UnsafeERC721Mint.sol [Line: 12](../tests/contract-playground/src/UnsafeERC721Mint.sol#L12)

	```solidity
	        _mint(to, tokenId);
	```

</details>



## L-43: Unspecific Solidity Pragma

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;`

<details><summary>36 Found Instances</summary>


- Found in src/BuiltinSymbolShadow.sol [Line: 2](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/CompilerBugStorageSignedIntegerArray.sol [Line: 2](../tests/contract-playground/src/CompilerBugStorageSignedIntegerArray.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ConstFuncChangeState.sol [Line: 2](../tests/contract-playground/src/ConstFuncChangeState.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ConstantFuncsAssembly.sol [Line: 2](../tests/contract-playground/src/ConstantFuncsAssembly.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/ContractLocksEther.sol [Line: 2](../tests/contract-playground/src/ContractLocksEther.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/ContractWithTodo.sol [Line: 2](../tests/contract-playground/src/ContractWithTodo.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/CostlyOperationsInsideLoops.sol [Line: 2](../tests/contract-playground/src/CostlyOperationsInsideLoops.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/Counter.sol [Line: 2](../tests/contract-playground/src/Counter.sol#L2)

	```solidity
	pragma solidity ^0.8.13;
	```

- Found in src/CrazyPragma.sol [Line: 2](../tests/contract-playground/src/CrazyPragma.sol#L2)

	```solidity
	pragma solidity >=0.8.19 <0.9.1;
	```

- Found in src/DangerousStrictEquality1.sol [Line: 2](../tests/contract-playground/src/DangerousStrictEquality1.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/DangerousUnaryOperator.sol [Line: 2](../tests/contract-playground/src/DangerousUnaryOperator.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/DelegateCallWithoutAddressCheck.sol [Line: 2](../tests/contract-playground/src/DelegateCallWithoutAddressCheck.sol#L2)

	```solidity
	pragma solidity ^0.8;
	```

- Found in src/DeletionNestedMappingStructureContract.sol [Line: 2](../tests/contract-playground/src/DeletionNestedMappingStructureContract.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionInitializingState.sol [Line: 2](../tests/contract-playground/src/FunctionInitializingState.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/FunctionSignatureCollision.sol [Line: 2](../tests/contract-playground/src/FunctionSignatureCollision.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/InconsistentUints.sol [Line: 1](../tests/contract-playground/src/InconsistentUints.sol#L1)

	```solidity
	pragma solidity ^0.8.24;
	```

- Found in src/IncorrectERC20.sol [Line: 2](../tests/contract-playground/src/IncorrectERC20.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/IncorrectERC721.sol [Line: 2](../tests/contract-playground/src/IncorrectERC721.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/MsgValueInLoop.sol [Line: 2](../tests/contract-playground/src/MsgValueInLoop.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/OutOfOrderRetryable.sol [Line: 2](../tests/contract-playground/src/OutOfOrderRetryable.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/PragmaRange.sol [Line: 2](../tests/contract-playground/src/PragmaRange.sol#L2)

	```solidity
	pragma solidity >=0.5.0 <0.8.0;
	```

- Found in src/PreDeclaredVarUsage.sol [Line: 2](../tests/contract-playground/src/PreDeclaredVarUsage.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/RedundantStatements.sol [Line: 2](../tests/contract-playground/src/RedundantStatements.sol#L2)

	```solidity
	pragma solidity ^0.4.0;
	```

- Found in src/TautologyOrContradiction.sol [Line: 2](../tests/contract-playground/src/TautologyOrContradiction.sol#L2)

	```solidity
	pragma solidity ^0.5.0;
	```

- Found in src/TxOriginUsedForAuth.sol [Line: 2](../tests/contract-playground/src/TxOriginUsedForAuth.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UncheckedCalls.sol [Line: 2](../tests/contract-playground/src/UncheckedCalls.sol#L2)

	```solidity
	pragma solidity ^0.6.0;
	```

- Found in src/UncheckedSend.sol [Line: 2](../tests/contract-playground/src/UncheckedSend.sol#L2)

	```solidity
	pragma solidity ^0.7.0;
	```

- Found in src/UnusedStateVariables.sol [Line: 2](../tests/contract-playground/src/UnusedStateVariables.sol#L2)

	```solidity
	pragma solidity ^0.8.20;
	```

- Found in src/UsingSelfdestruct.sol [Line: 2](../tests/contract-playground/src/UsingSelfdestruct.sol#L2)

	```solidity
	pragma solidity ^0.6.0;
	```

- Found in src/VoidConstructor.sol [Line: 2](../tests/contract-playground/src/VoidConstructor.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity ^0.8.18;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 6](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L6)

	```solidity
	pragma solidity >=0.8.0 <0.8.25; 
	```

- Found in src/inheritance/IContractInheritance.sol [Line: 2](../tests/contract-playground/src/inheritance/IContractInheritance.sol#L2)

	```solidity
	pragma solidity >=0.8.0;
	```

- Found in src/inheritance/InheritanceBase.sol [Line: 2](../tests/contract-playground/src/inheritance/InheritanceBase.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested_mappings/LaterVersion.sol [Line: 2](../tests/contract-playground/src/nested_mappings/LaterVersion.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/nested_mappings/NestedMappings.sol [Line: 2](../tests/contract-playground/src/nested_mappings/NestedMappings.sol#L2)

	```solidity
	pragma solidity ^0.4.25;
	```

</details>



## L-44: Unused Error

Consider using or removing the unused error.

<details><summary>3 Found Instances</summary>


- Found in src/UnusedError.sol [Line: 5](../tests/contract-playground/src/UnusedError.sol#L5)

	```solidity
	    error UnusedLibraryError();
	```

- Found in src/UnusedError.sol [Line: 14](../tests/contract-playground/src/UnusedError.sol#L14)

	```solidity
	    error UnusedError1(address account);
	```

- Found in src/WrongOrderOfLayout.sol [Line: 13](../tests/contract-playground/src/WrongOrderOfLayout.sol#L13)

	```solidity
	    error DivideByZero();
	```

</details>



## L-45: Unused Import

Redundant import statement. Consider removing it.

<details><summary>3 Found Instances</summary>


- Found in src/StateVariables.sol [Line: 4](../tests/contract-playground/src/StateVariables.sol#L4)

	```solidity
	import {Counter} from "./Counter.sol";
	```

- Found in src/UnusedImport.sol [Line: 6](../tests/contract-playground/src/UnusedImport.sol#L6)

	```solidity
	import "./U2.sol";
	```

- Found in src/UnusedImport.sol [Line: 9](../tests/contract-playground/src/UnusedImport.sol#L9)

	```solidity
	import {U3} from "./U3.sol";
	```

</details>



## L-46: Public Function Not Used Internally

If a function is marked public but is not used internally, consider marking it as `external`.

<details><summary>72 Found Instances</summary>


- Found in src/AderynIgnoreCustomDetectors.sol [Line: 7](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L7)

	```solidity
	    function f1() public {
	```

- Found in src/AderynIgnoreCustomDetectors.sol [Line: 26](../tests/contract-playground/src/AderynIgnoreCustomDetectors.sol#L26)

	```solidity
	    function f4() public {
	```

- Found in src/ArbitraryTransferFrom.sol [Line: 32](../tests/contract-playground/src/ArbitraryTransferFrom.sol#L32)

	```solidity
	    function good1(address to, uint256 am) public {
	```

- Found in src/AssemblyExample.sol [Line: 6](../tests/contract-playground/src/AssemblyExample.sol#L6)

	```solidity
	    function f(uint x) public view returns (uint r) {
	```

- Found in src/AssertStateChange.sol [Line: 8](../tests/contract-playground/src/AssertStateChange.sol#L8)

	```solidity
	    function bad() public {
	```

- Found in src/AssertStateChange.sol [Line: 12](../tests/contract-playground/src/AssertStateChange.sol#L12)

	```solidity
	    function good() public {
	```

- Found in src/BuiltinSymbolShadow.sol [Line: 8](../tests/contract-playground/src/BuiltinSymbolShadow.sol#L8)

	```solidity
	    function assert(bool condition) public {}
	```

- Found in src/ConstFuncChangeState.sol [Line: 8](../tests/contract-playground/src/ConstFuncChangeState.sol#L8)

	```solidity
	    function changeState() public view returns (uint) {
	```

- Found in src/ConstFuncChangeState.sol [Line: 14](../tests/contract-playground/src/ConstFuncChangeState.sol#L14)

	```solidity
	    function changeState2() public returns (uint) {
	```

- Found in src/ConstFuncChangeState.sol [Line: 20](../tests/contract-playground/src/ConstFuncChangeState.sol#L20)

	```solidity
	    function dontChangeState() public view returns (uint) {
	```

- Found in src/ContractLocksEther.sol [Line: 20](../tests/contract-playground/src/ContractLocksEther.sol#L20)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 49](../tests/contract-playground/src/ContractLocksEther.sol#L49)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 81](../tests/contract-playground/src/ContractLocksEther.sol#L81)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 118](../tests/contract-playground/src/ContractLocksEther.sol#L118)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 155](../tests/contract-playground/src/ContractLocksEther.sol#L155)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractLocksEther.sol [Line: 181](../tests/contract-playground/src/ContractLocksEther.sol#L181)

	```solidity
	    function getBalance() public view returns (uint256) {
	```

- Found in src/ContractWithTodo.sol [Line: 13](../tests/contract-playground/src/ContractWithTodo.sol#L13)

	```solidity
	    function toggleCompleted(uint _taskId) public {
	```

- Found in src/Counter.sol [Line: 7](../tests/contract-playground/src/Counter.sol#L7)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/ExternalCalls.sol [Line: 11](../tests/contract-playground/src/ExternalCalls.sol#L11)

	```solidity
	    function extCall(uint256 m_a) public payable {
	```

- Found in src/ExternalCalls.sol [Line: 19](../tests/contract-playground/src/ExternalCalls.sol#L19)

	```solidity
	    function baseThing(address x) public {
	```

- Found in src/IncorrectERC20.sol [Line: 17](../tests/contract-playground/src/IncorrectERC20.sol#L17)

	```solidity
	    function transfer(address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 23](../tests/contract-playground/src/IncorrectERC20.sol#L23)

	```solidity
	    function approve(address spender, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 27](../tests/contract-playground/src/IncorrectERC20.sol#L27)

	```solidity
	    function transferFrom(address from, address to, uint256 value) public {
	```

- Found in src/IncorrectERC20.sol [Line: 35](../tests/contract-playground/src/IncorrectERC20.sol#L35)

	```solidity
	    function balanceOf(address account) public pure returns (address) {
	```

- Found in src/IncorrectERC20.sol [Line: 39](../tests/contract-playground/src/IncorrectERC20.sol#L39)

	```solidity
	    function allowance(
	```

- Found in src/LocalVariableShadow.sol [Line: 10](../tests/contract-playground/src/LocalVariableShadow.sol#L10)

	```solidity
	    function sensitiveFunction(address owner) public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 16](../tests/contract-playground/src/LocalVariableShadow.sol#L16)

	```solidity
	    function alternateSensitiveFunction() public view {
	```

- Found in src/LocalVariableShadow.sol [Line: 31](../tests/contract-playground/src/LocalVariableShadow.sol#L31)

	```solidity
	    function sensitiveFfunction(address roll) public view {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 167](../tests/contract-playground/src/OutOfOrderRetryable.sol#L167)

	```solidity
	    function claim_rewards() public {
	```

- Found in src/OutOfOrderRetryable.sol [Line: 175](../tests/contract-playground/src/OutOfOrderRetryable.sol#L175)

	```solidity
	    function unstake() public {
	```

- Found in src/ReturnBomb.sol [Line: 16](../tests/contract-playground/src/ReturnBomb.sol#L16)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 32](../tests/contract-playground/src/ReturnBomb.sol#L32)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 47](../tests/contract-playground/src/ReturnBomb.sol#L47)

	```solidity
	    function oops(address badGuy) public {
	```

- Found in src/ReturnBomb.sol [Line: 63](../tests/contract-playground/src/ReturnBomb.sol#L63)

	```solidity
	    function oops() public {
	```

- Found in src/StateVariables.sol [Line: 47](../tests/contract-playground/src/StateVariables.sol#L47)

	```solidity
	    function setAddrNoZeroError(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 52](../tests/contract-playground/src/StateVariables.sol#L52)

	```solidity
	    function setAddrNoZeroRequire(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 57](../tests/contract-playground/src/StateVariables.sol#L57)

	```solidity
	    function setAddrNoCheck(address newAddr) public {
	```

- Found in src/StateVariables.sol [Line: 61](../tests/contract-playground/src/StateVariables.sol#L61)

	```solidity
	    function setEmptyAlteredNumbers(
	```

- Found in src/StateVariables.sol [Line: 71](../tests/contract-playground/src/StateVariables.sol#L71)

	```solidity
	    function setNonEmptyAlteredNumbers(
	```

- Found in src/Trump.sol [Line: 180](../tests/contract-playground/src/Trump.sol#L180)

	```solidity
	    function name() public pure returns (string memory) {
	```

- Found in src/Trump.sol [Line: 184](../tests/contract-playground/src/Trump.sol#L184)

	```solidity
	    function symbol() public pure returns (string memory) {
	```

- Found in src/Trump.sol [Line: 188](../tests/contract-playground/src/Trump.sol#L188)

	```solidity
	    function decimals() public pure returns (uint8) {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 7](../tests/contract-playground/src/UninitializedLocalVariables.sol#L7)

	```solidity
	    function testAllDataTypesBAD() public pure {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 23](../tests/contract-playground/src/UninitializedLocalVariables.sol#L23)

	```solidity
	    function testAllDataTypesGOOD() public pure {
	```

- Found in src/UninitializedLocalVariables.sol [Line: 41](../tests/contract-playground/src/UninitializedLocalVariables.sol#L41)

	```solidity
	    function testAllDataTypes2() public pure {
	```

- Found in src/UninitializedStateVariable.sol [Line: 17](../tests/contract-playground/src/UninitializedStateVariable.sol#L17)

	```solidity
	    function transfer() payable public {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 16](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L16)

	```solidity
	    function onlyOwnerManualRequireCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 22](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L22)

	```solidity
	    function onlyOwnerManualIfRevertCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 45](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L45)

	```solidity
	    function onlyRoleManualRequireCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 53](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L53)

	```solidity
	    function onlyRoleManualIfRevertCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 71](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L71)

	```solidity
	    function onlyOwnerManualCheck() public view {
	```

- Found in src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol [Line: 77](../tests/contract-playground/src/auditor_mode/PublicFunctionsWithoutSenderCheck.sol#L77)

	```solidity
	    function onlyOwnerManualIfRevertCheck() public view {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L31)

	```solidity
	    function foo(address bar) public pure {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L38)

	```solidity
	    function emoji() public pure {
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 42](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L42)

	```solidity
	    function foo2(address bar) public pure {
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 31](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L31)

	```solidity
	    function foo(address bar) public pure {
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 38](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L38)

	```solidity
	    function foo2(address bar) public pure {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 11](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L11)

	```solidity
	    function setNumber(uint256 newNumber) public {
	```

- Found in src/parent_chain/ParentChainContract.sol [Line: 15](../tests/contract-playground/src/parent_chain/ParentChainContract.sol#L15)

	```solidity
	    function increment(uint256 newNumber) public {
	```

- Found in src/router/ExternalCalls.sol [Line: 23](../tests/contract-playground/src/router/ExternalCalls.sol#L23)

	```solidity
	    function test(A a) public {
	```

- Found in src/router/ExternalCalls.sol [Line: 40](../tests/contract-playground/src/router/ExternalCalls.sol#L40)

	```solidity
	    function test(D d) public view {
	```

- Found in src/router/FallbackAndReceiveOverrides.sol [Line: 22](../tests/contract-playground/src/router/FallbackAndReceiveOverrides.sol#L22)

	```solidity
	    function test(FakeIt f) public {
	```

- Found in src/router/InternalCalls.sol [Line: 31](../tests/contract-playground/src/router/InternalCalls.sol#L31)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 46](../tests/contract-playground/src/router/InternalCalls.sol#L46)

	```solidity
	    function gcall() public {
	```

- Found in src/router/InternalCalls.sol [Line: 96](../tests/contract-playground/src/router/InternalCalls.sol#L96)

	```solidity
	    function aux1(uint256 a) public {}
	```

- Found in src/router/InternalCalls.sol [Line: 120](../tests/contract-playground/src/router/InternalCalls.sol#L120)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 161](../tests/contract-playground/src/router/InternalCalls.sol#L161)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 169](../tests/contract-playground/src/router/InternalCalls.sol#L169)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 177](../tests/contract-playground/src/router/InternalCalls.sol#L177)

	```solidity
	    function main() public {
	```

- Found in src/router/InternalCalls.sol [Line: 183](../tests/contract-playground/src/router/InternalCalls.sol#L183)

	```solidity
	    function help() public {
	```

- Found in src/router/ModifierCalls.sol [Line: 22](../tests/contract-playground/src/router/ModifierCalls.sol#L22)

	```solidity
	    function tree() public modify {
	```

- Found in src/router/ModifierCalls.sol [Line: 35](../tests/contract-playground/src/router/ModifierCalls.sol#L35)

	```solidity
	    function main() public B.modify modify {
	```

</details>



## L-47: Unused State Variable

State variable appears to be unused. No analysis has been performed to see if any inline assembly references it. Consider removing this unused variable.

<details><summary>27 Found Instances</summary>


- Found in src/AssemblyExample.sol [Line: 5](../tests/contract-playground/src/AssemblyExample.sol#L5)

	```solidity
	    uint b;
	```

- Found in src/InconsistentUints.sol [Line: 16](../tests/contract-playground/src/InconsistentUints.sol#L16)

	```solidity
	    mapping(uint256 => uint other) u2uMapping; // 5 3
	```

- Found in src/LocalVariableShadow.sol [Line: 7](../tests/contract-playground/src/LocalVariableShadow.sol#L7)

	```solidity
	    uint owner;
	```

- Found in src/StateVariables.sol [Line: 8](../tests/contract-playground/src/StateVariables.sol#L8)

	```solidity
	    uint256 private staticPrivateNumber;
	```

- Found in src/StateVariables.sol [Line: 9](../tests/contract-playground/src/StateVariables.sol#L9)

	```solidity
	    uint256 internal staticInternalNumber;
	```

- Found in src/StateVariables.sol [Line: 13](../tests/contract-playground/src/StateVariables.sol#L13)

	```solidity
	    uint256 private staticNonEmptyPrivateNumber = 1;
	```

- Found in src/StateVariables.sol [Line: 14](../tests/contract-playground/src/StateVariables.sol#L14)

	```solidity
	    uint256 internal staticNonEmptyInternalNumber = 2;
	```

- Found in src/StateVariables.sol [Line: 28](../tests/contract-playground/src/StateVariables.sol#L28)

	```solidity
	    uint256 private constant PRIVATE_CONSTANT = 1;
	```

- Found in src/StateVariables.sol [Line: 29](../tests/contract-playground/src/StateVariables.sol#L29)

	```solidity
	    uint256 internal constant INTERNAL_CONSTANT = 2;
	```

- Found in src/TautologyOrContradiction.sol [Line: 6](../tests/contract-playground/src/TautologyOrContradiction.sol#L6)

	```solidity
	    uint x;
	```

- Found in src/TautologyOrContradiction.sol [Line: 7](../tests/contract-playground/src/TautologyOrContradiction.sol#L7)

	```solidity
	    uint256 y;
	```

- Found in src/UninitializedLocalVariables.sol [Line: 5](../tests/contract-playground/src/UninitializedLocalVariables.sol#L5)

	```solidity
	    uint256 stateVarUint;
	```

- Found in src/UninitializedStateVariable.sol [Line: 13](../tests/contract-playground/src/UninitializedStateVariable.sol#L13)

	```solidity
	    mapping(uint256 => uint256[]) private map; // GOOD
	```

- Found in src/UnusedStateVariables.sol [Line: 6](../tests/contract-playground/src/UnusedStateVariables.sol#L6)

	```solidity
	    uint256 internal unusedUint256;
	```

- Found in src/UnusedStateVariables.sol [Line: 7](../tests/contract-playground/src/UnusedStateVariables.sol#L7)

	```solidity
	    address internal unusedAddress;
	```

- Found in src/UnusedStateVariables.sol [Line: 8](../tests/contract-playground/src/UnusedStateVariables.sol#L8)

	```solidity
	    bool private unusedBool;
	```

- Found in src/UnusedStateVariables.sol [Line: 9](../tests/contract-playground/src/UnusedStateVariables.sol#L9)

	```solidity
	    string private unusedString;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/AnotherHeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/AnotherHeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 14](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L14)

	```solidity
	    uint256 s_1 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 16](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L16)

	```solidity
	    uint256 s_2 = 0;
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 19](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L19)

	```solidity
	    uint256 s_3 = 0; // this is a side comment
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 22](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L22)

	```solidity
	    uint256 s_4 = 0; // scc-dblah
	```

- Found in src/cloc/HeavilyCommentedContract.sol [Line: 29](../tests/contract-playground/src/cloc/HeavilyCommentedContract.sol#L29)

	```solidity
	     this is longer comment */ uint256 s_5 = 0;
	```

</details>



## L-48: Void constructor

Call to a constructor that is not implemented.

<details><summary>1 Found Instances</summary>


- Found in src/VoidConstructor.sol [Line: 16](../tests/contract-playground/src/VoidConstructor.sol#L16)

	```solidity
	    VoidConstructor() 
	```

</details>




```
Page 92/94FirstPrevNextLast