#
tokens: 49395/50000 1/1140 files (page 90/94)
lines: off (toggle) GitHub
raw markdown copy
This is page 90 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.rs
│   │   │   ├── impls
│   │   │   │   ├── ctx
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── workspace.rs
│   │   │   │   ├── ctx.rs
│   │   │   │   ├── disp
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── disp.rs
│   │   │   │   ├── node
│   │   │   │   │   ├── blocks.rs
│   │   │   │   │   ├── contracts.rs
│   │   │   │   │   ├── documentation.rs
│   │   │   │   │   ├── enumerations.rs
│   │   │   │   │   ├── errors.rs
│   │   │   │   │   ├── events.rs
│   │   │   │   │   ├── expressions.rs
│   │   │   │   │   ├── functions.rs
│   │   │   │   │   ├── identifiers.rs
│   │   │   │   │   ├── import_directives.rs
│   │   │   │   │   ├── literals.rs
│   │   │   │   │   ├── modifiers.rs
│   │   │   │   │   ├── pragma_directives.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   ├── statements.rs
│   │   │   │   │   ├── structures.rs
│   │   │   │   │   ├── types.rs
│   │   │   │   │   ├── user_defined_value_types.rs
│   │   │   │   │   ├── using_for_directives.rs
│   │   │   │   │   └── variables.rs
│   │   │   │   ├── node.rs
│   │   │   │   ├── own
│   │   │   │   │   ├── hashing.rs
│   │   │   │   │   ├── node_id.rs
│   │   │   │   │   ├── source_units.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   └── own.rs
│   │   │   ├── impls.rs
│   │   │   ├── macros.rs
│   │   │   ├── magic.rs
│   │   │   ├── node_type.rs
│   │   │   └── yul.rs
│   │   ├── ast.rs
│   │   ├── audit
│   │   │   ├── attack_surface.rs
│   │   │   ├── auditor.rs
│   │   │   ├── entrypoint.rs
│   │   │   └── public_functions_no_sender.rs
│   │   ├── audit.rs
│   │   ├── context
│   │   │   ├── browser
│   │   │   │   ├── ancestral_line.rs
│   │   │   │   ├── closest_ancestor.rs
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── extractor.rs
│   │   │   │   ├── immediate_children.rs
│   │   │   │   ├── location.rs
│   │   │   │   ├── macros.rs
│   │   │   │   ├── parent.rs
│   │   │   │   ├── peek_over.rs
│   │   │   │   ├── peek_under.rs
│   │   │   │   ├── peek.rs
│   │   │   │   ├── siblings.rs
│   │   │   │   ├── sort_nodes.rs
│   │   │   │   └── storage_vars.rs
│   │   │   ├── browser.rs
│   │   │   ├── capturable.rs
│   │   │   ├── flow
│   │   │   │   ├── display.rs
│   │   │   │   ├── error.rs
│   │   │   │   ├── kind.rs
│   │   │   │   ├── primitives.rs
│   │   │   │   ├── reducibles.rs
│   │   │   │   ├── tests.rs
│   │   │   │   ├── utils.rs
│   │   │   │   ├── visualizer.rs
│   │   │   │   └── voids.rs
│   │   │   ├── flow.rs
│   │   │   ├── graph
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   ├── new.rs
│   │   │   │   │   ├── tests.rs
│   │   │   │   │   ├── utils.rs
│   │   │   │   │   └── visit.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── preprocess
│   │   │   │   │   ├── legacy.rs
│   │   │   │   │   └── new.rs
│   │   │   │   ├── preprocess.rs
│   │   │   │   ├── traits.rs
│   │   │   │   └── utils.rs
│   │   │   ├── graph.rs
│   │   │   ├── macros.rs
│   │   │   ├── mcp
│   │   │   │   ├── callgraph
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── callgraph.rs
│   │   │   │   ├── contract_surface
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── util.rs
│   │   │   │   ├── contract_surface.rs
│   │   │   │   ├── list_contracts
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── list_contracts.rs
│   │   │   │   ├── node_finder
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_finder.rs
│   │   │   │   ├── node_summarizer
│   │   │   │   │   ├── render.rs
│   │   │   │   │   ├── tool.rs
│   │   │   │   │   └── utils.rs
│   │   │   │   ├── node_summarizer.rs
│   │   │   │   ├── project_overview
│   │   │   │   │   ├── render.rs
│   │   │   │   │   └── tool.rs
│   │   │   │   ├── project_overview.rs
│   │   │   │   ├── tool_guide
│   │   │   │   │   └── tool.rs
│   │   │   │   └── tool_guide.rs
│   │   │   ├── mcp.rs
│   │   │   ├── router
│   │   │   │   ├── external_calls.rs
│   │   │   │   ├── internal_calls.rs
│   │   │   │   ├── modifier_calls.rs
│   │   │   │   └── tests.rs
│   │   │   ├── router.rs
│   │   │   └── workspace.rs
│   │   ├── context.rs
│   │   ├── detect
│   │   │   ├── detector.rs
│   │   │   ├── entrypoint.rs
│   │   │   ├── helpers.rs
│   │   │   ├── high
│   │   │   │   ├── _template.rs
│   │   │   │   ├── abi_encode_packed_hash_collision.rs
│   │   │   │   ├── arbitrary_transfer_from.rs
│   │   │   │   ├── const_func_changes_state.rs
│   │   │   │   ├── contract_locks_ether.rs
│   │   │   │   ├── dangerous_unary_operator.rs
│   │   │   │   ├── delegate_call_unchecked_address.rs
│   │   │   │   ├── delete_nested_mapping.rs
│   │   │   │   ├── dynamic_array_length_assignment.rs
│   │   │   │   ├── enumerable_loop_removal.rs
│   │   │   │   ├── eth_send_unchecked_address.rs
│   │   │   │   ├── experimental_encoder.rs
│   │   │   │   ├── function_selector_collision.rs
│   │   │   │   ├── incorrect_caret_operator.rs
│   │   │   │   ├── incorrect_erc20_interface.rs
│   │   │   │   ├── incorrect_erc721_interface.rs
│   │   │   │   ├── incorrect_shift_order.rs
│   │   │   │   ├── misused_boolean.rs
│   │   │   │   ├── msg_value_in_loops.rs
│   │   │   │   ├── multiple_constructors.rs
│   │   │   │   ├── nested_struct_in_mapping.rs
│   │   │   │   ├── out_of_order_retryable.rs
│   │   │   │   ├── pre_declared_variable_usage.rs
│   │   │   │   ├── reentrancy_state_change.rs
│   │   │   │   ├── reused_contract_name.rs
│   │   │   │   ├── rtlo.rs
│   │   │   │   ├── selfdestruct.rs
│   │   │   │   ├── signed_integer_storage_array.rs
│   │   │   │   ├── state_variable_shadowing.rs
│   │   │   │   ├── storage_array_memory_edit.rs
│   │   │   │   ├── strict_equality_contract_balance.rs
│   │   │   │   ├── tautological_compare.rs
│   │   │   │   ├── tautology_or_contradiction.rs
│   │   │   │   ├── tx_origin_used_for_auth.rs
│   │   │   │   ├── unchecked_low_level_call.rs
│   │   │   │   ├── unchecked_send.rs
│   │   │   │   ├── unprotected_initializer.rs
│   │   │   │   ├── unsafe_casting.rs
│   │   │   │   ├── weak_randomness.rs
│   │   │   │   └── yul_return.rs
│   │   │   ├── high.rs
│   │   │   ├── low
│   │   │   │   ├── _template.rs
│   │   │   │   ├── assert_state_change.rs
│   │   │   │   ├── block_timestamp_deadline.rs
│   │   │   │   ├── boolean_equality.rs
│   │   │   │   ├── builtin_symbol_shadowing.rs
│   │   │   │   ├── centralization_risk.rs
│   │   │   │   ├── constant_function_contains_assembly.rs
│   │   │   │   ├── costly_loop.rs
│   │   │   │   ├── dead_code.rs
│   │   │   │   ├── delegatecall_in_loop.rs
│   │   │   │   ├── deprecated_oz_function.rs
│   │   │   │   ├── division_before_multiplication.rs
│   │   │   │   ├── ecrecover.rs
│   │   │   │   ├── empty_block.rs
│   │   │   │   ├── empty_require_revert.rs
│   │   │   │   ├── function_initializing_state.rs
│   │   │   │   ├── function_pointer_in_constructor.rs
│   │   │   │   ├── inconsistent_type_names.rs
│   │   │   │   ├── incorrect_modifier.rs
│   │   │   │   ├── internal_function_used_once.rs
│   │   │   │   ├── large_numeric_literal.rs
│   │   │   │   ├── literal_instead_of_constant.rs
│   │   │   │   ├── local_variable_shadowing.rs
│   │   │   │   ├── missing_inheritance.rs
│   │   │   │   ├── modifier_used_only_once.rs
│   │   │   │   ├── multiple_placeholders.rs
│   │   │   │   ├── non_reentrant_not_first.rs
│   │   │   │   ├── push_0_opcode.rs
│   │   │   │   ├── redundant_statement.rs
│   │   │   │   ├── require_revert_in_loop.rs
│   │   │   │   ├── return_bomb.rs
│   │   │   │   ├── solmate_safe_transfer_lib.rs
│   │   │   │   ├── state_change_without_event.rs
│   │   │   │   ├── state_no_address_check.rs
│   │   │   │   ├── state_variable_could_be_constant.rs
│   │   │   │   ├── state_variable_could_be_immutable.rs
│   │   │   │   ├── state_variable_read_external.rs
│   │   │   │   ├── storage_array_length_not_cached.rs
│   │   │   │   ├── todo.rs
│   │   │   │   ├── unchecked_return.rs
│   │   │   │   ├── uninitialized_local_variable.rs
│   │   │   │   ├── unsafe_erc20_operation.rs
│   │   │   │   ├── unsafe_oz_erc721_mint.rs
│   │   │   │   ├── unspecific_solidity_pragma.rs
│   │   │   │   ├── unused_error.rs
│   │   │   │   ├── unused_import.rs
│   │   │   │   ├── unused_public_function.rs
│   │   │   │   ├── unused_state_variable.rs
│   │   │   │   └── void_constructor.rs
│   │   │   ├── low.rs
│   │   │   └── test_utils.rs
│   │   ├── detect.rs
│   │   ├── lib.rs
│   │   ├── stats
│   │   │   ├── cloc.rs
│   │   │   ├── dbg_tips.txt
│   │   │   ├── ignore.rs
│   │   │   ├── token.rs
│   │   │   └── util.rs
│   │   ├── stats.rs
│   │   ├── test_utils
│   │   │   └── load_source_unit.rs
│   │   ├── test_utils.rs
│   │   ├── visitor
│   │   │   ├── ast_visitor.rs
│   │   │   ├── macros.rs
│   │   │   └── workspace_visitor.rs
│   │   └── visitor.rs
│   ├── templates
│   │   └── mcp-tool-response
│   │       ├── callgraph.md
│   │       ├── contract_surface.md
│   │       ├── list_contracts.md
│   │       ├── node_finder_get_all.md
│   │       ├── node_finder_grep.md
│   │       ├── node_finder_search.md
│   │       ├── node_summarizer.md
│   │       ├── project_overview.md
│   │       └── tool_guide.md
│   └── tests
│       ├── common
│       │   ├── ancestral_line.rs
│       │   ├── closest_ancestor.rs
│       │   ├── immediate_children.rs
│       │   ├── immediate_parent.rs
│       │   ├── mod.rs
│       │   ├── new_ast_nodes.rs
│       │   ├── peek_over.rs
│       │   └── sibling.rs
│       └── traversal.rs
├── aderyn_driver
│   ├── .gitignore
│   ├── benches
│   │   └── detectors.rs
│   ├── Cargo.toml
│   ├── README.md
│   ├── src
│   │   ├── compile.rs
│   │   ├── config.rs
│   │   ├── display.rs
│   │   ├── driver.rs
│   │   ├── interface
│   │   │   ├── json.rs
│   │   │   ├── lsp.rs
│   │   │   ├── markdown.rs
│   │   │   ├── mod.rs
│   │   │   ├── sarif.rs
│   │   │   ├── tables.rs
│   │   │   └── util.rs
│   │   ├── lib.rs
│   │   ├── mcp.rs
│   │   ├── process.rs
│   │   └── runner.rs
│   └── tests
│       └── astgen.rs
├── bacon.toml
├── benchmarks
│   ├── aderyn
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── iteration_times.svg
│   │       │   └── pdf.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── iteration_times_small.svg
│   │       ├── iteration_times.svg
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── relative_iteration_times_small.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── SD.svg
│   │       └── typical.svg
│   ├── arbitrary-transfer-from
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── avoid-abi-encode-packed
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── block-timestamp-deadline
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── centralization-risk
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── constants-instead-of-literals
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── delegate-call-in-loop
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── deprecated-oz-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── ecrecover
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── empty-block
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── hello_world
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── inconsistent-type-names
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── large-numeric-literal
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── non-reentrant-before-others
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── push-zero-opcode
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── report
│   │   └── index.html
│   ├── require-with-string
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── solmate-safe-transfer-lib
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unindexed-events
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unprotected-initializer
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-erc20-functions
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unsafe-oz-erc721-mint
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── unspecific-solidity-pragma
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-internal-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-modifier
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   ├── useless-public-function
│   │   ├── base
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   ├── change
│   │   │   └── estimates.json
│   │   ├── new
│   │   │   ├── benchmark.json
│   │   │   ├── estimates.json
│   │   │   ├── sample.json
│   │   │   └── tukey.json
│   │   └── report
│   │       ├── both
│   │       │   ├── pdf.svg
│   │       │   └── regression.svg
│   │       ├── change
│   │       │   ├── mean.svg
│   │       │   ├── median.svg
│   │       │   └── t-test.svg
│   │       ├── index.html
│   │       ├── MAD.svg
│   │       ├── mean.svg
│   │       ├── median.svg
│   │       ├── pdf_small.svg
│   │       ├── pdf.svg
│   │       ├── regression_small.svg
│   │       ├── regression.svg
│   │       ├── relative_pdf_small.svg
│   │       ├── relative_regression_small.svg
│   │       ├── SD.svg
│   │       ├── slope.svg
│   │       └── typical.svg
│   └── zero-address-check
│       ├── base
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       ├── change
│       │   └── estimates.json
│       ├── new
│       │   ├── benchmark.json
│       │   ├── estimates.json
│       │   ├── sample.json
│       │   └── tukey.json
│       └── report
│           ├── both
│           │   ├── pdf.svg
│           │   └── regression.svg
│           ├── change
│           │   ├── mean.svg
│           │   ├── median.svg
│           │   └── t-test.svg
│           ├── index.html
│           ├── MAD.svg
│           ├── mean.svg
│           ├── median.svg
│           ├── pdf_small.svg
│           ├── pdf.svg
│           ├── regression_small.svg
│           ├── regression.svg
│           ├── relative_pdf_small.svg
│           ├── relative_regression_small.svg
│           ├── SD.svg
│           ├── slope.svg
│           └── typical.svg
├── Cargo.lock
├── Cargo.toml
├── cli
│   ├── benchmarks.sh
│   └── reportgen.sh
├── CODEOWNERS
├── CONTRIBUTING.md
├── cyfrinup
│   ├── dynamic_script
│   └── why.md
├── deny.toml
├── dist-workspace.toml
├── funding.json
├── LICENSE
├── Makefile
├── package-lock.json
├── package.json
├── README.md
├── RELEASE_CHECKLIST.md
├── reports
│   ├── adhoc-sol-files-highs-only-report.json
│   ├── adhoc-sol-files-report.md
│   ├── ccip-functions-report.md
│   ├── empty_report.md
│   ├── hardhat-playground-report.md
│   ├── nft-report-icm.md
│   ├── nft-report.md
│   ├── prb-math-report.md
│   ├── report.json
│   ├── report.md
│   ├── report.sarif
│   ├── sablier-aderyn-toml-nested-root.md
│   ├── templegold-report.md
│   └── uniswap_profile.md
├── rust-toolchain.toml
├── rustfmt.toml
├── tests
│   ├── adhoc-sol-files
│   │   ├── aderyn.toml
│   │   ├── Counter.sol
│   │   ├── DemoASTNodes.sol
│   │   ├── Helper.sol
│   │   ├── InconsistentUints.sol
│   │   ├── inheritance
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   └── InheritanceBase.sol
│   │   ├── InternalFunctions.sol
│   │   ├── lib
│   │   │   └── ThisShouldBeExcluded.sol
│   │   ├── multiple-versions
│   │   │   ├── 0.4
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.5
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.6
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   ├── 0.7
│   │   │   │   ├── A.sol
│   │   │   │   └── B.sol
│   │   │   └── 0.8
│   │   │       ├── A.sol
│   │   │       └── B.sol
│   │   ├── OnceModifierExample.sol
│   │   └── StateVariables.sol
│   ├── ast
│   │   ├── abstract_contract.json
│   │   ├── address_payable.json
│   │   ├── array_type_name.json
│   │   ├── ast-erc4626.json
│   │   ├── base_constructor_call.json
│   │   ├── bit_not.json
│   │   ├── call.json
│   │   ├── constructor.json
│   │   ├── contract_dep_order.json
│   │   ├── do_while.json
│   │   ├── documentation_1.json
│   │   ├── documentation_2.json
│   │   ├── documentation_3.json
│   │   ├── documentation_local_variable.json
│   │   ├── documentation_on_statements.json
│   │   ├── documentation_triple.json
│   │   ├── empty_block.json
│   │   ├── enum_value_declaration.json
│   │   ├── enum_value.json
│   │   ├── event_definition.json
│   │   ├── experimental_encoder_pragma.json
│   │   ├── fallback_and_reveice_ether.json
│   │   ├── fallback_payable.json
│   │   ├── fallback.json
│   │   ├── function_type.json
│   │   ├── function.json
│   │   ├── global_enum.json
│   │   ├── global_struct.json
│   │   ├── inheritance_specifier.json
│   │   ├── leave.json
│   │   ├── license.json
│   │   ├── long_type_name_binary_operation.json
│   │   ├── long_type_name_identifier.json
│   │   ├── loop.json
│   │   ├── mappings.json
│   │   ├── modifier_definition.json
│   │   ├── modifier_invocation.json
│   │   ├── mutability.json
│   │   ├── nested_functions.json
│   │   ├── non_utf8.json
│   │   ├── override.json
│   │   ├── placeholder_statement.json
│   │   ├── receive_ether.json
│   │   ├── short_type_name_ref.json
│   │   ├── short_type_name.json
│   │   ├── slot_offset.json
│   │   ├── smoke.json
│   │   ├── source_location.json
│   │   ├── string.json
│   │   ├── stringlit.json
│   │   ├── switch_default.json
│   │   ├── switch.json
│   │   ├── try_catch.json
│   │   ├── two_base_functions.json
│   │   ├── unicode.json
│   │   ├── used_errors.json
│   │   ├── userDefinedValueType.json
│   │   ├── using_for_directive.json
│   │   ├── var_access.json
│   │   └── yul_hex_literal.json
│   ├── contract-playground
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── dot
│   │   │   └── .gitkeep
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── script
│   │   │   └── Counter.s.sol
│   │   ├── src
│   │   │   ├── AbstractContract.sol
│   │   │   ├── AderynIgnoreCustomDetectors.sol
│   │   │   ├── AdminContract.sol
│   │   │   ├── ArbitraryTransferFrom.sol
│   │   │   ├── AssemblyExample.sol
│   │   │   ├── AssertStateChange.sol
│   │   │   ├── auditor_mode
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   └── PublicFunctionsWithoutSenderCheck.sol
│   │   │   ├── BooleanEquality.sol
│   │   │   ├── BuiltinSymbolShadow.sol
│   │   │   ├── CacheArrayLength.sol
│   │   │   ├── CallGraphTests.sol
│   │   │   ├── Casting.sol
│   │   │   ├── cloc
│   │   │   │   ├── AnotherHeavilyCommentedContract.sol
│   │   │   │   ├── EmptyContractFile.sol
│   │   │   │   └── HeavilyCommentedContract.sol
│   │   │   ├── CompilerBugStorageSignedIntegerArray.sol
│   │   │   ├── ConstantFuncsAssembly.sol
│   │   │   ├── ConstantsLiterals.sol
│   │   │   ├── ConstFuncChangeState.sol
│   │   │   ├── ContractLocksEther.sol
│   │   │   ├── ContractWithTodo.sol
│   │   │   ├── control_flow
│   │   │   │   └── SimpleProgram.sol
│   │   │   ├── CostlyOperationsInsideLoops.sol
│   │   │   ├── Counter.sol
│   │   │   ├── CrazyPragma.sol
│   │   │   ├── DangerousStrictEquality1.sol
│   │   │   ├── DangerousStrictEquality2.sol
│   │   │   ├── DangerousUnaryOperator.sol
│   │   │   ├── DeadCode.sol
│   │   │   ├── DelegateCallWithoutAddressCheck.sol
│   │   │   ├── DeletionNestedMappingStructureContract.sol
│   │   │   ├── DeprecatedOZFunctions.sol
│   │   │   ├── DivisionBeforeMultiplication.sol
│   │   │   ├── DynamicArrayLengthAssignment.sol
│   │   │   ├── EmitAfterExternalCall.sol
│   │   │   ├── EmptyBlocks.sol
│   │   │   ├── EnumerableSetIteration.sol
│   │   │   ├── eth2
│   │   │   │   └── DepositContract.sol
│   │   │   ├── ExperimentalEncoder.sol
│   │   │   ├── ExternalCalls.sol
│   │   │   ├── FunctionInitializingState.sol
│   │   │   ├── FunctionPointers.sol
│   │   │   ├── FunctionSignatureCollision.sol
│   │   │   ├── HugeConstants.sol
│   │   │   ├── IgnoreEverything.sol
│   │   │   ├── InconsistentUints.sol
│   │   │   ├── IncorrectCaretOperator.sol
│   │   │   ├── IncorrectERC20.sol
│   │   │   ├── IncorrectERC721.sol
│   │   │   ├── IncorrectModifier.sol
│   │   │   ├── IncorrectShift.sol
│   │   │   ├── inheritance
│   │   │   │   ├── ExtendedInheritance.sol
│   │   │   │   ├── IContractInheritance.sol
│   │   │   │   └── InheritanceBase.sol
│   │   │   ├── InternalFunctions.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── LocalVariableShadow.sol
│   │   │   ├── MissingInheritance.sol
│   │   │   ├── MisusedBoolean.sol
│   │   │   ├── MsgValueInLoop.sol
│   │   │   ├── MultipleConstructorSchemes.sol
│   │   │   ├── MultiplePlaceholders.sol
│   │   │   ├── nested
│   │   │   │   ├── 1
│   │   │   │   │   └── Nested.sol
│   │   │   │   └── 2
│   │   │   │       └── Nested.sol
│   │   │   ├── nested_mappings
│   │   │   │   ├── LaterVersion.sol
│   │   │   │   └── NestedMappings.sol
│   │   │   ├── OnceModifierExample.sol
│   │   │   ├── OnlyLibrary.sol
│   │   │   ├── OutOfOrderRetryable.sol
│   │   │   ├── parent_chain
│   │   │   │   └── ParentChainContract.sol
│   │   │   ├── PragmaRange.sol
│   │   │   ├── PreDeclaredVarUsage.sol
│   │   │   ├── PublicFunction.sol
│   │   │   ├── PublicVariableReadInExternalContext.sol
│   │   │   ├── RedundantStatements.sol
│   │   │   ├── ReturnBomb.sol
│   │   │   ├── reused_contract_name
│   │   │   │   ├── ContractA.sol
│   │   │   │   └── ContractB.sol
│   │   │   ├── RevertsAndRequriesInLoops.sol
│   │   │   ├── router
│   │   │   │   ├── ExternalCalls.sol
│   │   │   │   ├── FallbackAndReceiveOverrides.sol
│   │   │   │   ├── InternalCalls.sol
│   │   │   │   ├── ModifierCalls.sol
│   │   │   │   └── VarOverridesFunction.sol
│   │   │   ├── RTLO.sol
│   │   │   ├── SendEtherNoChecks.sol
│   │   │   ├── SendEtherNoChecksLibImport.sol
│   │   │   ├── StateChangeAfterExternalCall.sol
│   │   │   ├── StateShadowing.sol
│   │   │   ├── StateVariableCouldBeDeclaredConstant.sol
│   │   │   ├── StateVariableCouldBeDeclaredImmutable.sol
│   │   │   ├── StateVariables.sol
│   │   │   ├── StateVariablesChangesWithoutEvents.sol
│   │   │   ├── StateVariablesManipulation.sol
│   │   │   ├── StorageConditionals.sol
│   │   │   ├── StorageParameters.sol
│   │   │   ├── T11sTranferer.sol
│   │   │   ├── TautologicalCompare.sol
│   │   │   ├── TautologyOrContradiction.sol
│   │   │   ├── TestERC20.sol
│   │   │   ├── TransientKeyword.sol
│   │   │   ├── Trump.sol
│   │   │   ├── TxOriginUsedForAuth.sol
│   │   │   ├── U2.sol
│   │   │   ├── U3.sol
│   │   │   ├── U4.sol
│   │   │   ├── U5.sol
│   │   │   ├── UncheckedCalls.sol
│   │   │   ├── UncheckedReturn.sol
│   │   │   ├── UncheckedSend.sol
│   │   │   ├── UninitializedLocalVariables.sol
│   │   │   ├── UninitializedStateVariable.sol
│   │   │   ├── uniswap
│   │   │   │   ├── UniswapV2Swapper.sol
│   │   │   │   └── UniswapV3Swapper.sol
│   │   │   ├── UnprotectedInitialize.sol
│   │   │   ├── UnsafeERC721Mint.sol
│   │   │   ├── UnusedError.sol
│   │   │   ├── UnusedImport.sol
│   │   │   ├── UnusedStateVariables.sol
│   │   │   ├── UsingSelfdestruct.sol
│   │   │   ├── VoidConstructor.sol
│   │   │   ├── WeakRandomness.sol
│   │   │   ├── WrongOrderOfLayout.sol
│   │   │   ├── YulReturn.sol
│   │   │   └── ZeroAddressCheck.sol
│   │   └── test
│   │       └── Counter.t.sol
│   ├── foundry-nft-f23
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── foundry.lock
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── foundry-nft-f23-icm
│   │   ├── .github
│   │   │   └── workflows
│   │   │       └── test.yml
│   │   ├── .gitignore
│   │   ├── aderyn.toml
│   │   ├── foundry.toml
│   │   ├── README.md
│   │   ├── remappings.txt
│   │   └── src
│   │       ├── BasicNft.sol
│   │       ├── F1.sol
│   │       ├── F2.sol
│   │       ├── Initializer.sol
│   │       └── inner-core-modules
│   │           └── ICM.sol
│   ├── hardhat-js-playground
│   │   ├── .gitignore
│   │   ├── artifacts
│   │   │   ├── build-info
│   │   │   │   └── cee6fe9a9a2f03f7ff10a27ab2746af6.json
│   │   │   └── contracts
│   │   │       ├── Counter.sol
│   │   │       │   ├── Counter.dbg.json
│   │   │       │   └── Counter.json
│   │   │       ├── ExtendedInheritance.sol
│   │   │       │   ├── ExtendedInheritance.dbg.json
│   │   │       │   └── ExtendedInheritance.json
│   │   │       ├── IContractInheritance.sol
│   │   │       │   ├── IContractInheritance.dbg.json
│   │   │       │   └── IContractInheritance.json
│   │   │       ├── InheritanceBase.sol
│   │   │       │   ├── InheritanceBase.dbg.json
│   │   │       │   └── InheritanceBase.json
│   │   │       ├── KeccakContract.sol
│   │   │       │   ├── KeccakContract.dbg.json
│   │   │       │   └── KeccakContract.json
│   │   │       ├── Lock.sol
│   │   │       │   ├── Lock.dbg.json
│   │   │       │   └── Lock.json
│   │   │       └── StateVariables.sol
│   │   │           ├── StateVariables.dbg.json
│   │   │           └── StateVariables.json
│   │   ├── contracts
│   │   │   ├── Counter.sol
│   │   │   ├── ExtendedInheritance.sol
│   │   │   ├── IContractInheritance.sol
│   │   │   ├── InheritanceBase.sol
│   │   │   ├── KeccakContract.sol
│   │   │   ├── Lock.sol
│   │   │   └── StateVariables.sol
│   │   ├── hardhat.config.js
│   │   ├── package.json
│   │   ├── README.md
│   │   ├── scripts
│   │   │   └── deploy.js
│   │   ├── test
│   │   │   └── Lock.js
│   │   └── yarn.lock
│   ├── no-sol-files
│   │   ├── extra
│   │   │   └── HelloAgain.md
│   │   ├── Hello.txt
│   │   └── Hello.yul
│   └── toml
│       ├── nested_project1
│       │   ├── aderyn.toml
│       │   ├── folder1
│       │   │   └── hardhat.config.ts
│       │   ├── folder2
│       │   │   └── hardhat.config.ts
│       │   └── folder3
│       │       └── file.txt
│       └── nested_project2
│           ├── aderyn.toml
│           ├── folder1
│           │   └── foundry.toml
│           └── folder2
│               └── file1.txt
├── tools
│   └── xtask
│       ├── Cargo.toml
│       └── src
│           ├── blesspr.rs
│           ├── cut_release.rs
│           ├── flags.rs
│           ├── main.rs
│           ├── reportgen.rs
│           └── tomlgen.rs
└── typos.toml
```

# Files

--------------------------------------------------------------------------------
/reports/ccip-functions-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: Contract Name Reused in Different Files](#h-1-contract-name-reused-in-different-files)
  - [H-2: ETH transferred without address checks](#h-2-eth-transferred-without-address-checks)
  - [H-3: Reentrancy: State change after external call](#h-3-reentrancy-state-change-after-external-call)
- [Low Issues](#low-issues)
  - [L-1: Centralization Risk](#l-1-centralization-risk)
  - [L-2: `ecrecover` Signature Malleability](#l-2-ecrecover-signature-malleability)
  - [L-3: Unspecific Solidity Pragma](#l-3-unspecific-solidity-pragma)
  - [L-4: Address State Variable Set Without Checks](#l-4-address-state-variable-set-without-checks)
  - [L-5: Literal Instead of Constant](#l-5-literal-instead-of-constant)
  - [L-6: PUSH0 Opcode](#l-6-push0-opcode)
  - [L-7: Modifier Invoked Only Once](#l-7-modifier-invoked-only-once)
  - [L-8: Large Numeric Literal](#l-8-large-numeric-literal)
  - [L-9: Internal Function Used Only Once](#l-9-internal-function-used-only-once)
  - [L-10: Contract has TODO Comments](#l-10-contract-has-todo-comments)
  - [L-11: Unused Error](#l-11-unused-error)
  - [L-12: Loop Contains `require`/`revert`](#l-12-loop-contains-requirerevert)
  - [L-13: Dead Code](#l-13-dead-code)
  - [L-14: Costly operations inside loop](#l-14-costly-operations-inside-loop)
  - [L-15: Unused Import](#l-15-unused-import)
  - [L-16: State Change Without Event](#l-16-state-change-without-event)
  - [L-17: Unchecked Return](#l-17-unchecked-return)


# Summary

## Files Summary

| Key | Value |
| --- | --- |
| .sol Files | 52 |
| Total nSLOC | 5576 |


## Files Details

| Filepath | nSLOC |
| --- | --- |
| src/v0.8/functions/dev/v1_X/FunctionsBilling.sol | 280 |
| src/v0.8/functions/dev/v1_X/FunctionsClient.sol | 38 |
| src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol | 173 |
| src/v0.8/functions/dev/v1_X/FunctionsRouter.sol | 405 |
| src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol | 344 |
| src/v0.8/functions/dev/v1_X/Routable.sol | 30 |
| src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol | 126 |
| src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol | 23 |
| src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol | 47 |
| src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol | 31 |
| src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol | 4 |
| src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol | 11 |
| src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol | 37 |
| src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol | 39 |
| src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol | 4 |
| src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol | 44 |
| src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol | 99 |
| src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol | 38 |
| src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol | 42 |
| src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol | 238 |
| src/v0.8/functions/v1_0_0/FunctionsBilling.sol | 223 |
| src/v0.8/functions/v1_0_0/FunctionsClient.sol | 38 |
| src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol | 134 |
| src/v0.8/functions/v1_0_0/FunctionsRouter.sol | 405 |
| src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol | 344 |
| src/v0.8/functions/v1_0_0/Routable.sol | 30 |
| src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol | 79 |
| src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol | 9 |
| src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol | 47 |
| src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol | 15 |
| src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol | 4 |
| src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol | 11 |
| src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol | 37 |
| src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol | 39 |
| src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol | 4 |
| src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol | 99 |
| src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol | 38 |
| src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol | 72 |
| src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol | 244 |
| src/v0.8/functions/v1_1_0/FunctionsBilling.sol | 240 |
| src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol | 140 |
| src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol | 44 |
| src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol | 42 |
| src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol | 233 |
| src/v0.8/functions/v1_3_0/FunctionsBilling.sol | 277 |
| src/v0.8/functions/v1_3_0/FunctionsClient.sol | 38 |
| src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol | 173 |
| src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol | 130 |
| src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol | 23 |
| src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol | 31 |
| src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol | 42 |
| src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol | 238 |
| **Total** | **5576** |


## Issue Summary

| Category | No. of Issues |
| --- | --- |
| High | 3 |
| Low | 17 |


# High Issues

## H-1: 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>52 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsClient.sol [Line: 11](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsClient.sol#L11)

	```solidity
	abstract contract FunctionsClient is IFunctionsClient {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 13](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L13)

	```solidity
	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 16](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L16)

	```solidity
	contract FunctionsRouter is IFunctionsRouter, FunctionsSubscriptions, Pausable, ITypeAndVersion, ConfirmedOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 15](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L15)

	```solidity
	abstract contract FunctionsSubscriptions is IFunctionsSubscriptions, IERC677Receiver {
	```

- Found in src/v0.8/functions/dev/v1_X/Routable.sol [Line: 10](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/Routable.sol#L10)

	```solidity
	abstract contract Routable is ITypeAndVersion {
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 14](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L14)

	```solidity
	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol#L5)

	```solidity
	interface ITermsOfServiceAllowList {
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 9](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L9)

	```solidity
	contract FunctionsClientExample is FunctionsClient, ConfirmedOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol#L5)

	```solidity
	interface IFunctionsBilling {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol#L5)

	```solidity
	interface IFunctionsClient {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol#L7)

	```solidity
	interface IFunctionsCoordinator {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol#L7)

	```solidity
	interface IFunctionsRouter {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol#L7)

	```solidity
	interface IFunctionsSubscriptions {
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol [Line: 8](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol#L8)

	```solidity
	interface IOwnableFunctionsRouter is IOwnable, IFunctionsRouter {}
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol [Line: 9](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol#L9)

	```solidity
	library ChainSpecificUtil {
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol#L7)

	```solidity
	library FunctionsRequest {
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol#L5)

	```solidity
	library FunctionsResponse {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol [Line: 6](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol#L6)

	```solidity
	abstract contract OCR2Abstract is ITypeAndVersion {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 15](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L15)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsClient.sol [Line: 11](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol#L11)

	```solidity
	abstract contract FunctionsClient is IFunctionsClient {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 13](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L13)

	```solidity
	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 16](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L16)

	```solidity
	contract FunctionsRouter is IFunctionsRouter, FunctionsSubscriptions, Pausable, ITypeAndVersion, ConfirmedOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 15](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L15)

	```solidity
	abstract contract FunctionsSubscriptions is IFunctionsSubscriptions, IERC677Receiver {
	```

- Found in src/v0.8/functions/v1_0_0/Routable.sol [Line: 10](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/Routable.sol#L10)

	```solidity
	abstract contract Routable is ITypeAndVersion {
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 14](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L14)

	```solidity
	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L5)

	```solidity
	interface ITermsOfServiceAllowList {
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 9](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L9)

	```solidity
	contract FunctionsClientExample is FunctionsClient, ConfirmedOwner {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol#L5)

	```solidity
	interface IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol#L5)

	```solidity
	interface IFunctionsClient {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol#L7)

	```solidity
	interface IFunctionsCoordinator {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol#L7)

	```solidity
	interface IFunctionsRouter {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol#L7)

	```solidity
	interface IFunctionsSubscriptions {
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol [Line: 8](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol#L8)

	```solidity
	interface IOwnableFunctionsRouter is IOwnable, IFunctionsRouter {}
	```

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol [Line: 7](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol#L7)

	```solidity
	library FunctionsRequest {
	```

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol#L5)

	```solidity
	library FunctionsResponse {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol [Line: 6](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol#L6)

	```solidity
	abstract contract OCR2Abstract is ITypeAndVersion {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 13](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L13)

	```solidity
	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
	```

- Found in src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol [Line: 9](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol#L9)

	```solidity
	library ChainSpecificUtil {
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol [Line: 6](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol#L6)

	```solidity
	abstract contract OCR2Abstract is ITypeAndVersion {
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsClient.sol [Line: 11](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsClient.sol#L11)

	```solidity
	abstract contract FunctionsClient is IFunctionsClient {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 13](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L13)

	```solidity
	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 14](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L14)

	```solidity
	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L5)

	```solidity
	interface ITermsOfServiceAllowList {
	```

- Found in src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol#L5)

	```solidity
	interface IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol [Line: 6](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol#L6)

	```solidity
	abstract contract OCR2Abstract is ITypeAndVersion {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

</details>



## H-2: ETH transferred without address checks

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

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


- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 173](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L173)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external override {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 173](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L173)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external override {
	```

</details>



## H-3: 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>6 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 403](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L403)

	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
	```solidity
	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 519](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L519)

	State is changed at: `s_subscriptions[subscriptionId].blockedBalance -= request.estimatedTotalCostJuels`, `s_consumers[request.client][subscriptionId].completedRequests += 1`, `delete s_requestCommitments[requestId]`
	```solidity
	      IFunctionsBilling(request.coordinator).deleteCommitment(requestId);
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 342](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L342)

	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
	```solidity
	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 519](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L519)

	State is changed at: `s_subscriptions[subscriptionId].blockedBalance -= request.estimatedTotalCostJuels`, `s_consumers[request.client][subscriptionId].completedRequests += 1`, `delete s_requestCommitments[requestId]`
	```solidity
	      IFunctionsBilling(request.coordinator).deleteCommitment(requestId);
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 360](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L360)

	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
	```solidity
	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 401](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L401)

	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
	```solidity
	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
	```

</details>



# Low Issues

## L-1: 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>35 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 58](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L58)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 74](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L74)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 149](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L149)

	```solidity
	  function updateConfig(Config memory config) public onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 177](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L177)

	```solidity
	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 510](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L510)

	```solidity
	  ) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 539](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L539)

	```solidity
	  function updateContracts() external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 579](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L579)

	```solidity
	  function pause() external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 584](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L584)

	```solidity
	  function unpause() external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L73)

	```solidity
	  function updateConfig(TermsOfServiceAllowListConfig memory config) public onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 163](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L163)

	```solidity
	  function blockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 170](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L170)

	```solidity
	  function unblockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 35](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L35)

	```solidity
	  ) external onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 123](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L123)

	```solidity
	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L57)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L73)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 148](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L148)

	```solidity
	  function updateConfig(Config memory config) public onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 176](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L176)

	```solidity
	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 508](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L508)

	```solidity
	  ) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 537](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L537)

	```solidity
	  function updateContracts() external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 577](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L577)

	```solidity
	  function pause() external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 582](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L582)

	```solidity
	  function unpause() external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 64](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L64)

	```solidity
	  function updateConfig(Config memory config) public onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 131](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L131)

	```solidity
	  function blockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 138](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L138)

	```solidity
	  function unblockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 35](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L35)

	```solidity
	  ) external onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 121](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L121)

	```solidity
	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L57)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L73)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 115](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L115)

	```solidity
	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 59](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L59)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 75](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L75)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 74](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L74)

	```solidity
	  function updateConfig(TermsOfServiceAllowListConfig memory config) public onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 168](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L168)

	```solidity
	  function blockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 175](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L175)

	```solidity
	  function unblockSender(address sender) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 123](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L123)

	```solidity
	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
	```

</details>



## L-2: `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>7 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 97](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L97)

	```solidity
	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 346](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L346)

	```solidity
	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 88](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L88)

	```solidity
	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 350](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L350)

	```solidity
	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 340](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L340)

	```solidity
	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 98](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L98)

	```solidity
	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 346](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L346)

	```solidity
	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
	```

</details>



## L-3: 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>46 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/Routable.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/Routable.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/Routable.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/Routable.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

</details>



## L-4: Address State Variable Set Without Checks

Check for `address(0)` when assigning values to address state variables.

<details><summary>6 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 78](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L78)

	```solidity
	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 79](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L79)

	```solidity
	    s_linkToUsdFeed = AggregatorV3Interface(linkToUsdFeed);
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L73)

	```solidity
	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 85](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L85)

	```solidity
	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 78](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L78)

	```solidity
	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 79](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L79)

	```solidity
	    s_linkToUsdFeed = AggregatorV3Interface(linkToUsdFeed);
	```

</details>



## L-5: 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>44 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 110](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L110)

	```solidity
	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.donFeeCentsUsd) / 100);
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 116](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L116)

	```solidity
	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.operationFeeCentsUsd) / 100);
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 60](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L60)

	```solidity
	    uint256 maxLen = 32;
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 61](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L61)

	```solidity
	    if (b.length < 32) {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 83](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L83)

	```solidity
	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 216](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L216)

	```solidity
	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 217](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L217)

	```solidity
	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 278](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L278)

	```solidity
	      32 + // 32 bytes per entry in _rs
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 280](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L280)

	```solidity
	      32 + // 32 bytes per entry in _ss
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 299](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L299)

	```solidity
	    bytes32[3] calldata reportContext,
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 60](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L60)

	```solidity
	    uint256 maxLen = 32;
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 61](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L61)

	```solidity
	    if (b.length < 32) {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol [Line: 90](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol#L90)

	```solidity
	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol [Line: 91](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol#L91)

	```solidity
	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 81](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L81)

	```solidity
	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 212](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L212)

	```solidity
	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 213](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L213)

	```solidity
	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 283](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L283)

	```solidity
	      32 + // 32 bytes per entry in _rs
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 285](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L285)

	```solidity
	      32 + // 32 bytes per entry in _ss
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 300](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L300)

	```solidity
	    bytes32[3] calldata reportContext,
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 75](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L75)

	```solidity
	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 208](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L208)

	```solidity
	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 209](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L209)

	```solidity
	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 279](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L279)

	```solidity
	      32 + // 32 bytes per entry in _rs
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 281](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L281)

	```solidity
	      32 + // 32 bytes per entry in _ss
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 296](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L296)

	```solidity
	    bytes32[3] calldata reportContext,
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 110](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L110)

	```solidity
	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.donFeeCentsUsd) / 100);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 116](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L116)

	```solidity
	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.operationFeeCentsUsd) / 100);
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 83](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L83)

	```solidity
	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 216](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L216)

	```solidity
	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 217](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L217)

	```solidity
	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 278](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L278)

	```solidity
	      32 + // 32 bytes per entry in _rs
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 280](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L280)

	```solidity
	      32 + // 32 bytes per entry in _ss
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 299](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L299)

	```solidity
	    bytes32[3] calldata reportContext,
	```

</details>



## L-6: 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>52 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/Routable.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/Routable.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/Routable.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/Routable.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsClient.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsClient.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol#L2)

	```solidity
	pragma solidity ^0.8.19;
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 2](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L2)

	```solidity
	pragma solidity ^0.8.0;
	```

</details>



## L-7: Modifier Invoked Only Once

Consider removing the modifier or inlining the logic into the calling function.

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


- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 75](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L75)

	```solidity
	  modifier checkConfigValid(
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L73)

	```solidity
	  modifier checkConfigValid(
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 67](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L67)

	```solidity
	  modifier checkConfigValid(
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 75](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L75)

	```solidity
	  modifier checkConfigValid(
	```

</details>



## L-8: 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>10 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 22](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L22)

	```solidity
	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 203](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L203)

	```solidity
	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
	```

- Found in src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol#L12)

	```solidity
	  uint32 public constant MAX_CALLBACK_GAS = 70_000;
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 20](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L20)

	```solidity
	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 164](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L164)

	```solidity
	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
	```

- Found in src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol#L12)

	```solidity
	  uint32 public constant MAX_CALLBACK_GAS = 70_000;
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 22](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L22)

	```solidity
	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 179](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L179)

	```solidity
	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 22](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L22)

	```solidity
	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 201](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L201)

	```solidity
	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
	```

</details>



## L-9: 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>3 Found Instances</summary>


- Found in src/v0.8/functions/v1_0_0/FunctionsClient.sol [Line: 52](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsClient.sol#L52)

	```solidity
	  function fulfillRequest(bytes32 requestId, bytes memory response, bytes memory err) internal virtual;
	```

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol [Line: 91](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol#L91)

	```solidity
	  function initializeRequest(
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 186](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L186)

	```solidity
	  function configDigestFromConfigData(
	```

</details>



## L-10: Contract has TODO Comments

Contract contains comments with TODOS. Consider implementing or removing them.

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


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 15](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L15)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 17](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L17)

	```solidity
	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 12](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L12)

	```solidity
	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
	```

</details>



## L-11: Unused Error

Consider using or removing the unused error.

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


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 48](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L48)

	```solidity
	  error InvalidSubscription();
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 49](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L49)

	```solidity
	  error UnauthorizedSender();
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 50](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L50)

	```solidity
	  error MustBeSubOwner(address owner);
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 53](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L53)

	```solidity
	  error PaymentTooLarge();
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 35](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L35)

	```solidity
	  error InconsistentReportData();
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 37](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L37)

	```solidity
	  error UnauthorizedPublicKeyChange();
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 123](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L123)

	```solidity
	  error IdentifierIsReserved(bytes32 id);
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 50](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L50)

	```solidity
	  error InvalidSubscription();
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 51](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L51)

	```solidity
	  error UnauthorizedSender();
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 52](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L52)

	```solidity
	  error MustBeSubOwner(address owner);
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 54](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L54)

	```solidity
	  error PaymentTooLarge();
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 35](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L35)

	```solidity
	  error InconsistentReportData();
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 37](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L37)

	```solidity
	  error UnauthorizedPublicKeyChange();
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 122](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L122)

	```solidity
	  error IdentifierIsReserved(bytes32 id);
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 62](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L62)

	```solidity
	  error InvalidSubscription();
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 63](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L63)

	```solidity
	  error UnauthorizedSender();
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 64](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L64)

	```solidity
	  error MustBeSubOwner(address owner);
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 66](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L66)

	```solidity
	  error PaymentTooLarge();
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 35](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L35)

	```solidity
	  error InconsistentReportData();
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 37](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L37)

	```solidity
	  error UnauthorizedPublicKeyChange();
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 48](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L48)

	```solidity
	  error InvalidSubscription();
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 49](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L49)

	```solidity
	  error UnauthorizedSender();
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 50](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L50)

	```solidity
	  error MustBeSubOwner(address owner);
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 53](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L53)

	```solidity
	  error PaymentTooLarge();
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 36](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L36)

	```solidity
	  error InconsistentReportData();
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 38](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L38)

	```solidity
	  error UnauthorizedPublicKeyChange();
	```

</details>



## L-12: 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>20 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 194](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L194)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 518](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L518)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 503](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L503)

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

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol#L57)

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

- Found in src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol [Line: 76](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol#L76)

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

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 147](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L147)

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

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 345](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L345)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 155](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L155)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 516](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L516)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 503](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L503)

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

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol#L57)

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

- Found in src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol [Line: 76](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol#L76)

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

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 145](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L145)

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

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 349](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L349)

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

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 155](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L155)

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

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 139](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L139)

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

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 339](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L339)

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

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 195](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L195)

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

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 147](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L147)

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

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 345](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L345)

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

</details>



## L-13: Dead Code

Functions that are not used. Consider removing them.

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


- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 82](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L82)

	```solidity
	  function _isTransmitter(address node) internal view returns (bool) {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 81](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L81)

	```solidity
	  function _isTransmitter(address node) internal view returns (bool) {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 81](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L81)

	```solidity
	  function _isTransmitter(address node) internal view returns (bool) {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 83](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L83)

	```solidity
	  function _isTransmitter(address node) internal view returns (bool) {
	```

</details>



## L-14: Costly operations inside loop

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

<details><summary>28 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 399](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L399)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 430](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L430)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 194](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L194)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 541](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L541)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 383](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L383)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 432](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L432)

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

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 503](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L503)

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

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 135](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L135)

	```solidity
	    while (s_signers.length != 0) {
	```

- Found in src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol [Line: 147](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol#L147)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 338](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L338)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 364](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L364)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 155](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L155)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 539](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L539)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 383](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L383)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 432](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L432)

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

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 503](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L503)

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

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 133](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L133)

	```solidity
	    while (s_signers.length != 0) {
	```

- Found in src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol [Line: 145](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol#L145)

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

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 356](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L356)

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

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 383](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L383)

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

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 155](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L155)

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

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 127](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L127)

	```solidity
	    while (s_signers.length != 0) {
	```

- Found in src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol [Line: 139](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol#L139)

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

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 397](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L397)

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

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 424](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L424)

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

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 195](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L195)

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

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 135](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L135)

	```solidity
	    while (s_signers.length != 0) {
	```

- Found in src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol [Line: 147](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol#L147)

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

</details>



## L-15: Unused Import

Redundant import statement. Consider removing it.

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


- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L5)

	```solidity
	import {ITypeAndVersion} from "../../../shared/interfaces/ITypeAndVersion.sol";
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L5)

	```solidity
	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L5)

	```solidity
	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 5](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L5)

	```solidity
	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
	```

</details>



## L-16: 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>24 Found Instances</summary>


- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 378](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L378)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsBilling.sol [Line: 392](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsBilling.sol#L392)

	```solidity
	  function oracleWithdrawAll() external {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 58](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L58)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol [Line: 74](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol#L74)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsRouter.sol [Line: 177](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsRouter.sol#L177)

	```solidity
	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 173](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L173)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external override {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 192](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L192)

	```solidity
	  function ownerWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol [Line: 484](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol#L484)

	```solidity
	  function setFlags(uint64 subscriptionId, bytes32 flags) external override {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 317](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L317)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsBilling.sol [Line: 331](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsBilling.sol#L331)

	```solidity
	  function oracleWithdrawAll() external {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L57)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol#L73)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsRouter.sol [Line: 176](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsRouter.sol#L176)

	```solidity
	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 173](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L173)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external override {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 192](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L192)

	```solidity
	  function ownerWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol [Line: 484](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol#L484)

	```solidity
	  function setFlags(uint64 subscriptionId, bytes32 flags) external override {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 335](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L335)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsBilling.sol [Line: 349](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsBilling.sol#L349)

	```solidity
	  function oracleWithdrawAll() external {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L57)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol [Line: 73](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol#L73)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 376](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L376)

	```solidity
	  function oracleWithdraw(address recipient, uint96 amount) external {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsBilling.sol [Line: 390](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsBilling.sol#L390)

	```solidity
	  function oracleWithdrawAll() external {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 59](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L59)

	```solidity
	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
	```

- Found in src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol [Line: 75](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol#L75)

	```solidity
	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
	```

</details>



## L-17: Unchecked Return

Function returns a value but it is ignored. Consider checking the return value.

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


- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 49](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L49)

	```solidity
	      s_allowedSenders.add(initialAllowedSenders[i]);
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 57](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L57)

	```solidity
	      s_blockedSenders.add(initialBlockedSenders[j]);
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 164](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L164)

	```solidity
	    s_allowedSenders.remove(sender);
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 165](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L165)

	```solidity
	    s_blockedSenders.add(sender);
	```

- Found in src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol [Line: 171](../tests/ccip-contracts/contracts/src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol#L171)

	```solidity
	    s_blockedSenders.remove(sender);
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 101](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L101)

	```solidity
	    s_allowedSenders.add(recipient);
	```

- Found in src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol [Line: 132](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol#L132)

	```solidity
	    s_allowedSenders.remove(sender);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 50](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L50)

	```solidity
	      s_allowedSenders.add(initialAllowedSenders[i]);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 58](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L58)

	```solidity
	      s_blockedSenders.add(initialBlockedSenders[j]);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 169](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L169)

	```solidity
	    s_allowedSenders.remove(sender);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 170](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L170)

	```solidity
	    s_blockedSenders.add(sender);
	```

- Found in src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol [Line: 176](../tests/ccip-contracts/contracts/src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol#L176)

	```solidity
	    s_blockedSenders.remove(sender);
	```

</details>




```
Page 90/94FirstPrevNextLast