#
tokens: 59279/50000 1/1140 files (page 99/103)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 99 of 103. Use http://codebase.md/cyfrin/aderyn?lines=true&page={x} to view the full context.

# Directory Structure

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

# Files

--------------------------------------------------------------------------------
/reports/ccip-functions-report.md:
--------------------------------------------------------------------------------

```markdown
   1 | # Aderyn Analysis Report
   2 | 
   3 | This report was generated by [Aderyn](https://github.com/Cyfrin/aderyn), a static analysis tool built by [Cyfrin](https://cyfrin.io), a blockchain security company. This report is not a substitute for manual audit or security review. It should not be relied upon for any purpose other than to assist in the identification of potential security vulnerabilities.
   4 | # Table of Contents
   5 | 
   6 | - [Summary](#summary)
   7 |   - [Files Summary](#files-summary)
   8 |   - [Files Details](#files-details)
   9 |   - [Issue Summary](#issue-summary)
  10 | - [High Issues](#high-issues)
  11 |   - [H-1: Contract Name Reused in Different Files](#h-1-contract-name-reused-in-different-files)
  12 |   - [H-2: ETH transferred without address checks](#h-2-eth-transferred-without-address-checks)
  13 |   - [H-3: Reentrancy: State change after external call](#h-3-reentrancy-state-change-after-external-call)
  14 | - [Low Issues](#low-issues)
  15 |   - [L-1: Centralization Risk](#l-1-centralization-risk)
  16 |   - [L-2: `ecrecover` Signature Malleability](#l-2-ecrecover-signature-malleability)
  17 |   - [L-3: Unspecific Solidity Pragma](#l-3-unspecific-solidity-pragma)
  18 |   - [L-4: Address State Variable Set Without Checks](#l-4-address-state-variable-set-without-checks)
  19 |   - [L-5: Literal Instead of Constant](#l-5-literal-instead-of-constant)
  20 |   - [L-6: PUSH0 Opcode](#l-6-push0-opcode)
  21 |   - [L-7: Modifier Invoked Only Once](#l-7-modifier-invoked-only-once)
  22 |   - [L-8: Large Numeric Literal](#l-8-large-numeric-literal)
  23 |   - [L-9: Internal Function Used Only Once](#l-9-internal-function-used-only-once)
  24 |   - [L-10: Contract has TODO Comments](#l-10-contract-has-todo-comments)
  25 |   - [L-11: Unused Error](#l-11-unused-error)
  26 |   - [L-12: Loop Contains `require`/`revert`](#l-12-loop-contains-requirerevert)
  27 |   - [L-13: Dead Code](#l-13-dead-code)
  28 |   - [L-14: Costly operations inside loop](#l-14-costly-operations-inside-loop)
  29 |   - [L-15: Unused Import](#l-15-unused-import)
  30 |   - [L-16: State Change Without Event](#l-16-state-change-without-event)
  31 |   - [L-17: Unchecked Return](#l-17-unchecked-return)
  32 | 
  33 | 
  34 | # Summary
  35 | 
  36 | ## Files Summary
  37 | 
  38 | | Key | Value |
  39 | | --- | --- |
  40 | | .sol Files | 52 |
  41 | | Total nSLOC | 5576 |
  42 | 
  43 | 
  44 | ## Files Details
  45 | 
  46 | | Filepath | nSLOC |
  47 | | --- | --- |
  48 | | src/v0.8/functions/dev/v1_X/FunctionsBilling.sol | 280 |
  49 | | src/v0.8/functions/dev/v1_X/FunctionsClient.sol | 38 |
  50 | | src/v0.8/functions/dev/v1_X/FunctionsCoordinator.sol | 173 |
  51 | | src/v0.8/functions/dev/v1_X/FunctionsRouter.sol | 405 |
  52 | | src/v0.8/functions/dev/v1_X/FunctionsSubscriptions.sol | 344 |
  53 | | src/v0.8/functions/dev/v1_X/Routable.sol | 30 |
  54 | | src/v0.8/functions/dev/v1_X/accessControl/TermsOfServiceAllowList.sol | 126 |
  55 | | src/v0.8/functions/dev/v1_X/accessControl/interfaces/ITermsOfServiceAllowList.sol | 23 |
  56 | | src/v0.8/functions/dev/v1_X/example/FunctionsClientExample.sol | 47 |
  57 | | src/v0.8/functions/dev/v1_X/interfaces/IFunctionsBilling.sol | 31 |
  58 | | src/v0.8/functions/dev/v1_X/interfaces/IFunctionsClient.sol | 4 |
  59 | | src/v0.8/functions/dev/v1_X/interfaces/IFunctionsCoordinator.sol | 11 |
  60 | | src/v0.8/functions/dev/v1_X/interfaces/IFunctionsRouter.sol | 37 |
  61 | | src/v0.8/functions/dev/v1_X/interfaces/IFunctionsSubscriptions.sol | 39 |
  62 | | src/v0.8/functions/dev/v1_X/interfaces/IOwnableFunctionsRouter.sol | 4 |
  63 | | src/v0.8/functions/dev/v1_X/libraries/ChainSpecificUtil.sol | 44 |
  64 | | src/v0.8/functions/dev/v1_X/libraries/FunctionsRequest.sol | 99 |
  65 | | src/v0.8/functions/dev/v1_X/libraries/FunctionsResponse.sol | 38 |
  66 | | src/v0.8/functions/dev/v1_X/ocr/OCR2Abstract.sol | 42 |
  67 | | src/v0.8/functions/dev/v1_X/ocr/OCR2Base.sol | 238 |
  68 | | src/v0.8/functions/v1_0_0/FunctionsBilling.sol | 223 |
  69 | | src/v0.8/functions/v1_0_0/FunctionsClient.sol | 38 |
  70 | | src/v0.8/functions/v1_0_0/FunctionsCoordinator.sol | 134 |
  71 | | src/v0.8/functions/v1_0_0/FunctionsRouter.sol | 405 |
  72 | | src/v0.8/functions/v1_0_0/FunctionsSubscriptions.sol | 344 |
  73 | | src/v0.8/functions/v1_0_0/Routable.sol | 30 |
  74 | | src/v0.8/functions/v1_0_0/accessControl/TermsOfServiceAllowList.sol | 79 |
  75 | | src/v0.8/functions/v1_0_0/accessControl/interfaces/ITermsOfServiceAllowList.sol | 9 |
  76 | | src/v0.8/functions/v1_0_0/example/FunctionsClientExample.sol | 47 |
  77 | | src/v0.8/functions/v1_0_0/interfaces/IFunctionsBilling.sol | 15 |
  78 | | src/v0.8/functions/v1_0_0/interfaces/IFunctionsClient.sol | 4 |
  79 | | src/v0.8/functions/v1_0_0/interfaces/IFunctionsCoordinator.sol | 11 |
  80 | | src/v0.8/functions/v1_0_0/interfaces/IFunctionsRouter.sol | 37 |
  81 | | src/v0.8/functions/v1_0_0/interfaces/IFunctionsSubscriptions.sol | 39 |
  82 | | src/v0.8/functions/v1_0_0/interfaces/IOwnableFunctionsRouter.sol | 4 |
  83 | | src/v0.8/functions/v1_0_0/libraries/FunctionsRequest.sol | 99 |
  84 | | src/v0.8/functions/v1_0_0/libraries/FunctionsResponse.sol | 38 |
  85 | | src/v0.8/functions/v1_0_0/ocr/OCR2Abstract.sol | 72 |
  86 | | src/v0.8/functions/v1_0_0/ocr/OCR2Base.sol | 244 |
  87 | | src/v0.8/functions/v1_1_0/FunctionsBilling.sol | 240 |
  88 | | src/v0.8/functions/v1_1_0/FunctionsCoordinator.sol | 140 |
  89 | | src/v0.8/functions/v1_1_0/libraries/ChainSpecificUtil.sol | 44 |
  90 | | src/v0.8/functions/v1_1_0/ocr/OCR2Abstract.sol | 42 |
  91 | | src/v0.8/functions/v1_1_0/ocr/OCR2Base.sol | 233 |
  92 | | src/v0.8/functions/v1_3_0/FunctionsBilling.sol | 277 |
  93 | | src/v0.8/functions/v1_3_0/FunctionsClient.sol | 38 |
  94 | | src/v0.8/functions/v1_3_0/FunctionsCoordinator.sol | 173 |
  95 | | src/v0.8/functions/v1_3_0/accessControl/TermsOfServiceAllowList.sol | 130 |
  96 | | src/v0.8/functions/v1_3_0/accessControl/interfaces/ITermsOfServiceAllowList.sol | 23 |
  97 | | src/v0.8/functions/v1_3_0/interfaces/IFunctionsBilling.sol | 31 |
  98 | | src/v0.8/functions/v1_3_0/ocr/OCR2Abstract.sol | 42 |
  99 | | src/v0.8/functions/v1_3_0/ocr/OCR2Base.sol | 238 |
 100 | | **Total** | **5576** |
 101 | 
 102 | 
 103 | ## Issue Summary
 104 | 
 105 | | Category | No. of Issues |
 106 | | --- | --- |
 107 | | High | 3 |
 108 | | Low | 17 |
 109 | 
 110 | 
 111 | # High Issues
 112 | 
 113 | ## H-1: Contract Name Reused in Different Files
 114 | 
 115 | 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.
 116 | 
 117 | <details><summary>52 Found Instances</summary>
 118 | 
 119 | 
 120 | - 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)
 121 | 
 122 | 	```solidity
 123 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
 124 | 	```
 125 | 
 126 | - 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)
 127 | 
 128 | 	```solidity
 129 | 	abstract contract FunctionsClient is IFunctionsClient {
 130 | 	```
 131 | 
 132 | - 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)
 133 | 
 134 | 	```solidity
 135 | 	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
 136 | 	```
 137 | 
 138 | - 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)
 139 | 
 140 | 	```solidity
 141 | 	contract FunctionsRouter is IFunctionsRouter, FunctionsSubscriptions, Pausable, ITypeAndVersion, ConfirmedOwner {
 142 | 	```
 143 | 
 144 | - 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)
 145 | 
 146 | 	```solidity
 147 | 	abstract contract FunctionsSubscriptions is IFunctionsSubscriptions, IERC677Receiver {
 148 | 	```
 149 | 
 150 | - 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)
 151 | 
 152 | 	```solidity
 153 | 	abstract contract Routable is ITypeAndVersion {
 154 | 	```
 155 | 
 156 | - 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)
 157 | 
 158 | 	```solidity
 159 | 	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
 160 | 	```
 161 | 
 162 | - 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)
 163 | 
 164 | 	```solidity
 165 | 	interface ITermsOfServiceAllowList {
 166 | 	```
 167 | 
 168 | - 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)
 169 | 
 170 | 	```solidity
 171 | 	contract FunctionsClientExample is FunctionsClient, ConfirmedOwner {
 172 | 	```
 173 | 
 174 | - 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)
 175 | 
 176 | 	```solidity
 177 | 	interface IFunctionsBilling {
 178 | 	```
 179 | 
 180 | - 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)
 181 | 
 182 | 	```solidity
 183 | 	interface IFunctionsClient {
 184 | 	```
 185 | 
 186 | - 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)
 187 | 
 188 | 	```solidity
 189 | 	interface IFunctionsCoordinator {
 190 | 	```
 191 | 
 192 | - 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)
 193 | 
 194 | 	```solidity
 195 | 	interface IFunctionsRouter {
 196 | 	```
 197 | 
 198 | - 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)
 199 | 
 200 | 	```solidity
 201 | 	interface IFunctionsSubscriptions {
 202 | 	```
 203 | 
 204 | - 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)
 205 | 
 206 | 	```solidity
 207 | 	interface IOwnableFunctionsRouter is IOwnable, IFunctionsRouter {}
 208 | 	```
 209 | 
 210 | - 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)
 211 | 
 212 | 	```solidity
 213 | 	library ChainSpecificUtil {
 214 | 	```
 215 | 
 216 | - 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)
 217 | 
 218 | 	```solidity
 219 | 	library FunctionsRequest {
 220 | 	```
 221 | 
 222 | - 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)
 223 | 
 224 | 	```solidity
 225 | 	library FunctionsResponse {
 226 | 	```
 227 | 
 228 | - 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)
 229 | 
 230 | 	```solidity
 231 | 	abstract contract OCR2Abstract is ITypeAndVersion {
 232 | 	```
 233 | 
 234 | - 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)
 235 | 
 236 | 	```solidity
 237 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
 238 | 	```
 239 | 
 240 | - 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)
 241 | 
 242 | 	```solidity
 243 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
 244 | 	```
 245 | 
 246 | - 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)
 247 | 
 248 | 	```solidity
 249 | 	abstract contract FunctionsClient is IFunctionsClient {
 250 | 	```
 251 | 
 252 | - 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)
 253 | 
 254 | 	```solidity
 255 | 	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
 256 | 	```
 257 | 
 258 | - 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)
 259 | 
 260 | 	```solidity
 261 | 	contract FunctionsRouter is IFunctionsRouter, FunctionsSubscriptions, Pausable, ITypeAndVersion, ConfirmedOwner {
 262 | 	```
 263 | 
 264 | - 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)
 265 | 
 266 | 	```solidity
 267 | 	abstract contract FunctionsSubscriptions is IFunctionsSubscriptions, IERC677Receiver {
 268 | 	```
 269 | 
 270 | - 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)
 271 | 
 272 | 	```solidity
 273 | 	abstract contract Routable is ITypeAndVersion {
 274 | 	```
 275 | 
 276 | - 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)
 277 | 
 278 | 	```solidity
 279 | 	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
 280 | 	```
 281 | 
 282 | - 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)
 283 | 
 284 | 	```solidity
 285 | 	interface ITermsOfServiceAllowList {
 286 | 	```
 287 | 
 288 | - 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)
 289 | 
 290 | 	```solidity
 291 | 	contract FunctionsClientExample is FunctionsClient, ConfirmedOwner {
 292 | 	```
 293 | 
 294 | - 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)
 295 | 
 296 | 	```solidity
 297 | 	interface IFunctionsBilling {
 298 | 	```
 299 | 
 300 | - 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)
 301 | 
 302 | 	```solidity
 303 | 	interface IFunctionsClient {
 304 | 	```
 305 | 
 306 | - 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)
 307 | 
 308 | 	```solidity
 309 | 	interface IFunctionsCoordinator {
 310 | 	```
 311 | 
 312 | - 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)
 313 | 
 314 | 	```solidity
 315 | 	interface IFunctionsRouter {
 316 | 	```
 317 | 
 318 | - 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)
 319 | 
 320 | 	```solidity
 321 | 	interface IFunctionsSubscriptions {
 322 | 	```
 323 | 
 324 | - 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)
 325 | 
 326 | 	```solidity
 327 | 	interface IOwnableFunctionsRouter is IOwnable, IFunctionsRouter {}
 328 | 	```
 329 | 
 330 | - 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)
 331 | 
 332 | 	```solidity
 333 | 	library FunctionsRequest {
 334 | 	```
 335 | 
 336 | - 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)
 337 | 
 338 | 	```solidity
 339 | 	library FunctionsResponse {
 340 | 	```
 341 | 
 342 | - 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)
 343 | 
 344 | 	```solidity
 345 | 	abstract contract OCR2Abstract is ITypeAndVersion {
 346 | 	```
 347 | 
 348 | - 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)
 349 | 
 350 | 	```solidity
 351 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
 352 | 	```
 353 | 
 354 | - 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)
 355 | 
 356 | 	```solidity
 357 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
 358 | 	```
 359 | 
 360 | - 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)
 361 | 
 362 | 	```solidity
 363 | 	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
 364 | 	```
 365 | 
 366 | - 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)
 367 | 
 368 | 	```solidity
 369 | 	library ChainSpecificUtil {
 370 | 	```
 371 | 
 372 | - 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)
 373 | 
 374 | 	```solidity
 375 | 	abstract contract OCR2Abstract is ITypeAndVersion {
 376 | 	```
 377 | 
 378 | - 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)
 379 | 
 380 | 	```solidity
 381 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
 382 | 	```
 383 | 
 384 | - 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)
 385 | 
 386 | 	```solidity
 387 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
 388 | 	```
 389 | 
 390 | - 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)
 391 | 
 392 | 	```solidity
 393 | 	abstract contract FunctionsClient is IFunctionsClient {
 394 | 	```
 395 | 
 396 | - 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)
 397 | 
 398 | 	```solidity
 399 | 	contract FunctionsCoordinator is OCR2Base, IFunctionsCoordinator, FunctionsBilling {
 400 | 	```
 401 | 
 402 | - 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)
 403 | 
 404 | 	```solidity
 405 | 	contract TermsOfServiceAllowList is ITermsOfServiceAllowList, IAccessController, ITypeAndVersion, ConfirmedOwner {
 406 | 	```
 407 | 
 408 | - 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)
 409 | 
 410 | 	```solidity
 411 | 	interface ITermsOfServiceAllowList {
 412 | 	```
 413 | 
 414 | - 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)
 415 | 
 416 | 	```solidity
 417 | 	interface IFunctionsBilling {
 418 | 	```
 419 | 
 420 | - 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)
 421 | 
 422 | 	```solidity
 423 | 	abstract contract OCR2Abstract is ITypeAndVersion {
 424 | 	```
 425 | 
 426 | - 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)
 427 | 
 428 | 	```solidity
 429 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
 430 | 	```
 431 | 
 432 | </details>
 433 | 
 434 | 
 435 | 
 436 | ## H-2: ETH transferred without address checks
 437 | 
 438 | Consider introducing checks for `msg.sender` to ensure the recipient of the money is as intended.
 439 | 
 440 | <details><summary>2 Found Instances</summary>
 441 | 
 442 | 
 443 | - 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)
 444 | 
 445 | 	```solidity
 446 | 	  function oracleWithdraw(address recipient, uint96 amount) external override {
 447 | 	```
 448 | 
 449 | - 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)
 450 | 
 451 | 	```solidity
 452 | 	  function oracleWithdraw(address recipient, uint96 amount) external override {
 453 | 	```
 454 | 
 455 | </details>
 456 | 
 457 | 
 458 | 
 459 | ## H-3: Reentrancy: State change after external call
 460 | 
 461 | Changing state after an external call can lead to re-entrancy attacks.Use the checks-effects-interactions pattern to avoid this issue.
 462 | 
 463 | <details><summary>6 Found Instances</summary>
 464 | 
 465 | 
 466 | - 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)
 467 | 
 468 | 	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
 469 | 	```solidity
 470 | 	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
 471 | 	```
 472 | 
 473 | - 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)
 474 | 
 475 | 	State is changed at: `s_subscriptions[subscriptionId].blockedBalance -= request.estimatedTotalCostJuels`, `s_consumers[request.client][subscriptionId].completedRequests += 1`, `delete s_requestCommitments[requestId]`
 476 | 	```solidity
 477 | 	      IFunctionsBilling(request.coordinator).deleteCommitment(requestId);
 478 | 	```
 479 | 
 480 | - 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)
 481 | 
 482 | 	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
 483 | 	```solidity
 484 | 	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
 485 | 	```
 486 | 
 487 | - 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)
 488 | 
 489 | 	State is changed at: `s_subscriptions[subscriptionId].blockedBalance -= request.estimatedTotalCostJuels`, `s_consumers[request.client][subscriptionId].completedRequests += 1`, `delete s_requestCommitments[requestId]`
 490 | 	```solidity
 491 | 	      IFunctionsBilling(request.coordinator).deleteCommitment(requestId);
 492 | 	```
 493 | 
 494 | - 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)
 495 | 
 496 | 	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
 497 | 	```solidity
 498 | 	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
 499 | 	```
 500 | 
 501 | - 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)
 502 | 
 503 | 	State is changed at: `s_withdrawableTokens[transmitters[i]] = 0`
 504 | 	```solidity
 505 | 	        IFunctionsSubscriptions(address(_getRouter())).oracleWithdraw(transmitters[i], balance);
 506 | 	```
 507 | 
 508 | </details>
 509 | 
 510 | 
 511 | 
 512 | # Low Issues
 513 | 
 514 | ## L-1: Centralization Risk
 515 | 
 516 | Contracts have owners with privileged rights to perform admin tasks and need to be trusted to not perform malicious updates or drain funds.
 517 | 
 518 | <details><summary>35 Found Instances</summary>
 519 | 
 520 | 
 521 | - 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)
 522 | 
 523 | 	```solidity
 524 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
 525 | 	```
 526 | 
 527 | - 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)
 528 | 
 529 | 	```solidity
 530 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
 531 | 	```
 532 | 
 533 | - 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)
 534 | 
 535 | 	```solidity
 536 | 	  function updateConfig(Config memory config) public onlyOwner {
 537 | 	```
 538 | 
 539 | - 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)
 540 | 
 541 | 	```solidity
 542 | 	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
 543 | 	```
 544 | 
 545 | - 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)
 546 | 
 547 | 	```solidity
 548 | 	  ) external override onlyOwner {
 549 | 	```
 550 | 
 551 | - 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)
 552 | 
 553 | 	```solidity
 554 | 	  function updateContracts() external override onlyOwner {
 555 | 	```
 556 | 
 557 | - 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)
 558 | 
 559 | 	```solidity
 560 | 	  function pause() external override onlyOwner {
 561 | 	```
 562 | 
 563 | - 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)
 564 | 
 565 | 	```solidity
 566 | 	  function unpause() external override onlyOwner {
 567 | 	```
 568 | 
 569 | - 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)
 570 | 
 571 | 	```solidity
 572 | 	  function updateConfig(TermsOfServiceAllowListConfig memory config) public onlyOwner {
 573 | 	```
 574 | 
 575 | - 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)
 576 | 
 577 | 	```solidity
 578 | 	  function blockSender(address sender) external override onlyOwner {
 579 | 	```
 580 | 
 581 | - 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)
 582 | 
 583 | 	```solidity
 584 | 	  function unblockSender(address sender) external override onlyOwner {
 585 | 	```
 586 | 
 587 | - 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)
 588 | 
 589 | 	```solidity
 590 | 	  ) external onlyOwner {
 591 | 	```
 592 | 
 593 | - 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)
 594 | 
 595 | 	```solidity
 596 | 	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
 597 | 	```
 598 | 
 599 | - 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)
 600 | 
 601 | 	```solidity
 602 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
 603 | 	```
 604 | 
 605 | - 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)
 606 | 
 607 | 	```solidity
 608 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
 609 | 	```
 610 | 
 611 | - 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)
 612 | 
 613 | 	```solidity
 614 | 	  function updateConfig(Config memory config) public onlyOwner {
 615 | 	```
 616 | 
 617 | - 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)
 618 | 
 619 | 	```solidity
 620 | 	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
 621 | 	```
 622 | 
 623 | - 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)
 624 | 
 625 | 	```solidity
 626 | 	  ) external override onlyOwner {
 627 | 	```
 628 | 
 629 | - 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)
 630 | 
 631 | 	```solidity
 632 | 	  function updateContracts() external override onlyOwner {
 633 | 	```
 634 | 
 635 | - 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)
 636 | 
 637 | 	```solidity
 638 | 	  function pause() external override onlyOwner {
 639 | 	```
 640 | 
 641 | - 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)
 642 | 
 643 | 	```solidity
 644 | 	  function unpause() external override onlyOwner {
 645 | 	```
 646 | 
 647 | - 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)
 648 | 
 649 | 	```solidity
 650 | 	  function updateConfig(Config memory config) public onlyOwner {
 651 | 	```
 652 | 
 653 | - 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)
 654 | 
 655 | 	```solidity
 656 | 	  function blockSender(address sender) external override onlyOwner {
 657 | 	```
 658 | 
 659 | - 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)
 660 | 
 661 | 	```solidity
 662 | 	  function unblockSender(address sender) external override onlyOwner {
 663 | 	```
 664 | 
 665 | - 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)
 666 | 
 667 | 	```solidity
 668 | 	  ) external onlyOwner {
 669 | 	```
 670 | 
 671 | - 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)
 672 | 
 673 | 	```solidity
 674 | 	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
 675 | 	```
 676 | 
 677 | - 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)
 678 | 
 679 | 	```solidity
 680 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
 681 | 	```
 682 | 
 683 | - 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)
 684 | 
 685 | 	```solidity
 686 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
 687 | 	```
 688 | 
 689 | - 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)
 690 | 
 691 | 	```solidity
 692 | 	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
 693 | 	```
 694 | 
 695 | - 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)
 696 | 
 697 | 	```solidity
 698 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
 699 | 	```
 700 | 
 701 | - 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)
 702 | 
 703 | 	```solidity
 704 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
 705 | 	```
 706 | 
 707 | - 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)
 708 | 
 709 | 	```solidity
 710 | 	  function updateConfig(TermsOfServiceAllowListConfig memory config) public onlyOwner {
 711 | 	```
 712 | 
 713 | - 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)
 714 | 
 715 | 	```solidity
 716 | 	  function blockSender(address sender) external override onlyOwner {
 717 | 	```
 718 | 
 719 | - 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)
 720 | 
 721 | 	```solidity
 722 | 	  function unblockSender(address sender) external override onlyOwner {
 723 | 	```
 724 | 
 725 | - 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)
 726 | 
 727 | 	```solidity
 728 | 	  ) external override checkConfigValid(_signers.length, _transmitters.length, _f) onlyOwner {
 729 | 	```
 730 | 
 731 | </details>
 732 | 
 733 | 
 734 | 
 735 | ## L-2: `ecrecover` Signature Malleability
 736 | 
 737 | 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.
 738 | 
 739 | <details><summary>7 Found Instances</summary>
 740 | 
 741 | 
 742 | - 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)
 743 | 
 744 | 	```solidity
 745 | 	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
 746 | 	```
 747 | 
 748 | - 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)
 749 | 
 750 | 	```solidity
 751 | 	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
 752 | 	```
 753 | 
 754 | - 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)
 755 | 
 756 | 	```solidity
 757 | 	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
 758 | 	```
 759 | 
 760 | - 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)
 761 | 
 762 | 	```solidity
 763 | 	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
 764 | 	```
 765 | 
 766 | - 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)
 767 | 
 768 | 	```solidity
 769 | 	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
 770 | 	```
 771 | 
 772 | - 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)
 773 | 
 774 | 	```solidity
 775 | 	    if (ecrecover(prefixedMessage, v, r, s) != s_config.signerPublicKey) {
 776 | 	```
 777 | 
 778 | - 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)
 779 | 
 780 | 	```solidity
 781 | 	        address signer = ecrecover(h, uint8(rawVs[i]) + 27, rs[i], ss[i]);
 782 | 	```
 783 | 
 784 | </details>
 785 | 
 786 | 
 787 | 
 788 | ## L-3: Unspecific Solidity Pragma
 789 | 
 790 | 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;`
 791 | 
 792 | <details><summary>46 Found Instances</summary>
 793 | 
 794 | 
 795 | - 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)
 796 | 
 797 | 	```solidity
 798 | 	pragma solidity ^0.8.19;
 799 | 	```
 800 | 
 801 | - 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)
 802 | 
 803 | 	```solidity
 804 | 	pragma solidity ^0.8.19;
 805 | 	```
 806 | 
 807 | - 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)
 808 | 
 809 | 	```solidity
 810 | 	pragma solidity ^0.8.19;
 811 | 	```
 812 | 
 813 | - 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)
 814 | 
 815 | 	```solidity
 816 | 	pragma solidity ^0.8.19;
 817 | 	```
 818 | 
 819 | - 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)
 820 | 
 821 | 	```solidity
 822 | 	pragma solidity ^0.8.19;
 823 | 	```
 824 | 
 825 | - 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)
 826 | 
 827 | 	```solidity
 828 | 	pragma solidity ^0.8.19;
 829 | 	```
 830 | 
 831 | - 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)
 832 | 
 833 | 	```solidity
 834 | 	pragma solidity ^0.8.19;
 835 | 	```
 836 | 
 837 | - 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)
 838 | 
 839 | 	```solidity
 840 | 	pragma solidity ^0.8.19;
 841 | 	```
 842 | 
 843 | - 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)
 844 | 
 845 | 	```solidity
 846 | 	pragma solidity ^0.8.19;
 847 | 	```
 848 | 
 849 | - 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)
 850 | 
 851 | 	```solidity
 852 | 	pragma solidity ^0.8.19;
 853 | 	```
 854 | 
 855 | - 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)
 856 | 
 857 | 	```solidity
 858 | 	pragma solidity ^0.8.19;
 859 | 	```
 860 | 
 861 | - 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)
 862 | 
 863 | 	```solidity
 864 | 	pragma solidity ^0.8.19;
 865 | 	```
 866 | 
 867 | - 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)
 868 | 
 869 | 	```solidity
 870 | 	pragma solidity ^0.8.19;
 871 | 	```
 872 | 
 873 | - 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)
 874 | 
 875 | 	```solidity
 876 | 	pragma solidity ^0.8.19;
 877 | 	```
 878 | 
 879 | - 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)
 880 | 
 881 | 	```solidity
 882 | 	pragma solidity ^0.8.19;
 883 | 	```
 884 | 
 885 | - 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)
 886 | 
 887 | 	```solidity
 888 | 	pragma solidity ^0.8.19;
 889 | 	```
 890 | 
 891 | - 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)
 892 | 
 893 | 	```solidity
 894 | 	pragma solidity ^0.8.0;
 895 | 	```
 896 | 
 897 | - 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)
 898 | 
 899 | 	```solidity
 900 | 	pragma solidity ^0.8.19;
 901 | 	```
 902 | 
 903 | - 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)
 904 | 
 905 | 	```solidity
 906 | 	pragma solidity ^0.8.19;
 907 | 	```
 908 | 
 909 | - 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)
 910 | 
 911 | 	```solidity
 912 | 	pragma solidity ^0.8.19;
 913 | 	```
 914 | 
 915 | - 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)
 916 | 
 917 | 	```solidity
 918 | 	pragma solidity ^0.8.19;
 919 | 	```
 920 | 
 921 | - 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)
 922 | 
 923 | 	```solidity
 924 | 	pragma solidity ^0.8.19;
 925 | 	```
 926 | 
 927 | - 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)
 928 | 
 929 | 	```solidity
 930 | 	pragma solidity ^0.8.19;
 931 | 	```
 932 | 
 933 | - 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)
 934 | 
 935 | 	```solidity
 936 | 	pragma solidity ^0.8.19;
 937 | 	```
 938 | 
 939 | - 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)
 940 | 
 941 | 	```solidity
 942 | 	pragma solidity ^0.8.19;
 943 | 	```
 944 | 
 945 | - 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)
 946 | 
 947 | 	```solidity
 948 | 	pragma solidity ^0.8.19;
 949 | 	```
 950 | 
 951 | - 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)
 952 | 
 953 | 	```solidity
 954 | 	pragma solidity ^0.8.19;
 955 | 	```
 956 | 
 957 | - 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)
 958 | 
 959 | 	```solidity
 960 | 	pragma solidity ^0.8.19;
 961 | 	```
 962 | 
 963 | - 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)
 964 | 
 965 | 	```solidity
 966 | 	pragma solidity ^0.8.19;
 967 | 	```
 968 | 
 969 | - 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)
 970 | 
 971 | 	```solidity
 972 | 	pragma solidity ^0.8.19;
 973 | 	```
 974 | 
 975 | - 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)
 976 | 
 977 | 	```solidity
 978 | 	pragma solidity ^0.8.19;
 979 | 	```
 980 | 
 981 | - 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)
 982 | 
 983 | 	```solidity
 984 | 	pragma solidity ^0.8.19;
 985 | 	```
 986 | 
 987 | - 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)
 988 | 
 989 | 	```solidity
 990 | 	pragma solidity ^0.8.19;
 991 | 	```
 992 | 
 993 | - 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)
 994 | 
 995 | 	```solidity
 996 | 	pragma solidity ^0.8.0;
 997 | 	```
 998 | 
 999 | - 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)
1000 | 
1001 | 	```solidity
1002 | 	pragma solidity ^0.8.19;
1003 | 	```
1004 | 
1005 | - 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)
1006 | 
1007 | 	```solidity
1008 | 	pragma solidity ^0.8.19;
1009 | 	```
1010 | 
1011 | - 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)
1012 | 
1013 | 	```solidity
1014 | 	pragma solidity ^0.8.19;
1015 | 	```
1016 | 
1017 | - 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)
1018 | 
1019 | 	```solidity
1020 | 	pragma solidity ^0.8.0;
1021 | 	```
1022 | 
1023 | - 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)
1024 | 
1025 | 	```solidity
1026 | 	pragma solidity ^0.8.19;
1027 | 	```
1028 | 
1029 | - 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)
1030 | 
1031 | 	```solidity
1032 | 	pragma solidity ^0.8.19;
1033 | 	```
1034 | 
1035 | - 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)
1036 | 
1037 | 	```solidity
1038 | 	pragma solidity ^0.8.19;
1039 | 	```
1040 | 
1041 | - 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)
1042 | 
1043 | 	```solidity
1044 | 	pragma solidity ^0.8.19;
1045 | 	```
1046 | 
1047 | - 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)
1048 | 
1049 | 	```solidity
1050 | 	pragma solidity ^0.8.19;
1051 | 	```
1052 | 
1053 | - 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)
1054 | 
1055 | 	```solidity
1056 | 	pragma solidity ^0.8.19;
1057 | 	```
1058 | 
1059 | - 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)
1060 | 
1061 | 	```solidity
1062 | 	pragma solidity ^0.8.19;
1063 | 	```
1064 | 
1065 | - 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)
1066 | 
1067 | 	```solidity
1068 | 	pragma solidity ^0.8.0;
1069 | 	```
1070 | 
1071 | </details>
1072 | 
1073 | 
1074 | 
1075 | ## L-4: Address State Variable Set Without Checks
1076 | 
1077 | Check for `address(0)` when assigning values to address state variables.
1078 | 
1079 | <details><summary>6 Found Instances</summary>
1080 | 
1081 | 
1082 | - 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)
1083 | 
1084 | 	```solidity
1085 | 	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
1086 | 	```
1087 | 
1088 | - 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)
1089 | 
1090 | 	```solidity
1091 | 	    s_linkToUsdFeed = AggregatorV3Interface(linkToUsdFeed);
1092 | 	```
1093 | 
1094 | - 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)
1095 | 
1096 | 	```solidity
1097 | 	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
1098 | 	```
1099 | 
1100 | - 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)
1101 | 
1102 | 	```solidity
1103 | 	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
1104 | 	```
1105 | 
1106 | - 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)
1107 | 
1108 | 	```solidity
1109 | 	    s_linkToNativeFeed = AggregatorV3Interface(linkToNativeFeed);
1110 | 	```
1111 | 
1112 | - 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)
1113 | 
1114 | 	```solidity
1115 | 	    s_linkToUsdFeed = AggregatorV3Interface(linkToUsdFeed);
1116 | 	```
1117 | 
1118 | </details>
1119 | 
1120 | 
1121 | 
1122 | ## L-5: Literal Instead of Constant
1123 | 
1124 | 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.
1125 | 
1126 | <details><summary>44 Found Instances</summary>
1127 | 
1128 | 
1129 | - 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)
1130 | 
1131 | 	```solidity
1132 | 	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.donFeeCentsUsd) / 100);
1133 | 	```
1134 | 
1135 | - 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)
1136 | 
1137 | 	```solidity
1138 | 	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.operationFeeCentsUsd) / 100);
1139 | 	```
1140 | 
1141 | - 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)
1142 | 
1143 | 	```solidity
1144 | 	    uint256 maxLen = 32;
1145 | 	```
1146 | 
1147 | - 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)
1148 | 
1149 | 	```solidity
1150 | 	    if (b.length < 32) {
1151 | 	```
1152 | 
1153 | - 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)
1154 | 
1155 | 	```solidity
1156 | 	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
1157 | 	```
1158 | 
1159 | - 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)
1160 | 
1161 | 	```solidity
1162 | 	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
1163 | 	```
1164 | 
1165 | - 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)
1166 | 
1167 | 	```solidity
1168 | 	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
1169 | 	```
1170 | 
1171 | - 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)
1172 | 
1173 | 	```solidity
1174 | 	      32 + // 32 bytes per entry in _rs
1175 | 	```
1176 | 
1177 | - 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)
1178 | 
1179 | 	```solidity
1180 | 	      32 + // 32 bytes per entry in _ss
1181 | 	```
1182 | 
1183 | - 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)
1184 | 
1185 | 	```solidity
1186 | 	    bytes32[3] calldata reportContext,
1187 | 	```
1188 | 
1189 | - 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)
1190 | 
1191 | 	```solidity
1192 | 	    uint256 maxLen = 32;
1193 | 	```
1194 | 
1195 | - 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)
1196 | 
1197 | 	```solidity
1198 | 	    if (b.length < 32) {
1199 | 	```
1200 | 
1201 | - 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)
1202 | 
1203 | 	```solidity
1204 | 	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
1205 | 	```
1206 | 
1207 | - 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)
1208 | 
1209 | 	```solidity
1210 | 	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
1211 | 	```
1212 | 
1213 | - 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)
1214 | 
1215 | 	```solidity
1216 | 	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
1217 | 	```
1218 | 
1219 | - 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)
1220 | 
1221 | 	```solidity
1222 | 	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
1223 | 	```
1224 | 
1225 | - 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)
1226 | 
1227 | 	```solidity
1228 | 	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
1229 | 	```
1230 | 
1231 | - 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)
1232 | 
1233 | 	```solidity
1234 | 	      32 + // 32 bytes per entry in _rs
1235 | 	```
1236 | 
1237 | - 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)
1238 | 
1239 | 	```solidity
1240 | 	      32 + // 32 bytes per entry in _ss
1241 | 	```
1242 | 
1243 | - 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)
1244 | 
1245 | 	```solidity
1246 | 	    bytes32[3] calldata reportContext,
1247 | 	```
1248 | 
1249 | - 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)
1250 | 
1251 | 	```solidity
1252 | 	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
1253 | 	```
1254 | 
1255 | - 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)
1256 | 
1257 | 	```solidity
1258 | 	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
1259 | 	```
1260 | 
1261 | - 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)
1262 | 
1263 | 	```solidity
1264 | 	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
1265 | 	```
1266 | 
1267 | - 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)
1268 | 
1269 | 	```solidity
1270 | 	      32 + // 32 bytes per entry in _rs
1271 | 	```
1272 | 
1273 | - 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)
1274 | 
1275 | 	```solidity
1276 | 	      32 + // 32 bytes per entry in _ss
1277 | 	```
1278 | 
1279 | - 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)
1280 | 
1281 | 	```solidity
1282 | 	    bytes32[3] calldata reportContext,
1283 | 	```
1284 | 
1285 | - 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)
1286 | 
1287 | 	```solidity
1288 | 	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.donFeeCentsUsd) / 100);
1289 | 	```
1290 | 
1291 | - 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)
1292 | 
1293 | 	```solidity
1294 | 	    return SafeCast.toUint72(_getJuelsFromUsd(s_config.operationFeeCentsUsd) / 100);
1295 | 	```
1296 | 
1297 | - 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)
1298 | 
1299 | 	```solidity
1300 | 	    if (numSigners <= 3 * f) revert InvalidConfig("faulty-oracle f too high");
1301 | 	```
1302 | 
1303 | - 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)
1304 | 
1305 | 	```solidity
1306 | 	    uint256 prefixMask = type(uint256).max << (256 - 16); // 0xFFFF00..00
1307 | 	```
1308 | 
1309 | - 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)
1310 | 
1311 | 	```solidity
1312 | 	    uint256 prefix = 0x0001 << (256 - 16); // 0x000100..00
1313 | 	```
1314 | 
1315 | - 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)
1316 | 
1317 | 	```solidity
1318 | 	      32 + // 32 bytes per entry in _rs
1319 | 	```
1320 | 
1321 | - 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)
1322 | 
1323 | 	```solidity
1324 | 	      32 + // 32 bytes per entry in _ss
1325 | 	```
1326 | 
1327 | - 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)
1328 | 
1329 | 	```solidity
1330 | 	    bytes32[3] calldata reportContext,
1331 | 	```
1332 | 
1333 | </details>
1334 | 
1335 | 
1336 | 
1337 | ## L-6: PUSH0 Opcode
1338 | 
1339 | 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.
1340 | 
1341 | <details><summary>52 Found Instances</summary>
1342 | 
1343 | 
1344 | - 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)
1345 | 
1346 | 	```solidity
1347 | 	pragma solidity ^0.8.19;
1348 | 	```
1349 | 
1350 | - 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)
1351 | 
1352 | 	```solidity
1353 | 	pragma solidity ^0.8.19;
1354 | 	```
1355 | 
1356 | - 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)
1357 | 
1358 | 	```solidity
1359 | 	pragma solidity ^0.8.19;
1360 | 	```
1361 | 
1362 | - 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)
1363 | 
1364 | 	```solidity
1365 | 	pragma solidity ^0.8.19;
1366 | 	```
1367 | 
1368 | - 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)
1369 | 
1370 | 	```solidity
1371 | 	pragma solidity ^0.8.19;
1372 | 	```
1373 | 
1374 | - 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)
1375 | 
1376 | 	```solidity
1377 | 	pragma solidity ^0.8.19;
1378 | 	```
1379 | 
1380 | - 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)
1381 | 
1382 | 	```solidity
1383 | 	pragma solidity ^0.8.19;
1384 | 	```
1385 | 
1386 | - 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)
1387 | 
1388 | 	```solidity
1389 | 	pragma solidity ^0.8.19;
1390 | 	```
1391 | 
1392 | - 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)
1393 | 
1394 | 	```solidity
1395 | 	pragma solidity ^0.8.19;
1396 | 	```
1397 | 
1398 | - 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)
1399 | 
1400 | 	```solidity
1401 | 	pragma solidity ^0.8.19;
1402 | 	```
1403 | 
1404 | - 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)
1405 | 
1406 | 	```solidity
1407 | 	pragma solidity ^0.8.19;
1408 | 	```
1409 | 
1410 | - 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)
1411 | 
1412 | 	```solidity
1413 | 	pragma solidity ^0.8.19;
1414 | 	```
1415 | 
1416 | - 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)
1417 | 
1418 | 	```solidity
1419 | 	pragma solidity ^0.8.19;
1420 | 	```
1421 | 
1422 | - 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)
1423 | 
1424 | 	```solidity
1425 | 	pragma solidity ^0.8.19;
1426 | 	```
1427 | 
1428 | - 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)
1429 | 
1430 | 	```solidity
1431 | 	pragma solidity ^0.8.19;
1432 | 	```
1433 | 
1434 | - 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)
1435 | 
1436 | 	```solidity
1437 | 	pragma solidity ^0.8.19;
1438 | 	```
1439 | 
1440 | - 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)
1441 | 
1442 | 	```solidity
1443 | 	pragma solidity ^0.8.19;
1444 | 	```
1445 | 
1446 | - 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)
1447 | 
1448 | 	```solidity
1449 | 	pragma solidity ^0.8.19;
1450 | 	```
1451 | 
1452 | - 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)
1453 | 
1454 | 	```solidity
1455 | 	pragma solidity ^0.8.19;
1456 | 	```
1457 | 
1458 | - 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)
1459 | 
1460 | 	```solidity
1461 | 	pragma solidity ^0.8.0;
1462 | 	```
1463 | 
1464 | - 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)
1465 | 
1466 | 	```solidity
1467 | 	pragma solidity ^0.8.19;
1468 | 	```
1469 | 
1470 | - 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)
1471 | 
1472 | 	```solidity
1473 | 	pragma solidity ^0.8.19;
1474 | 	```
1475 | 
1476 | - 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)
1477 | 
1478 | 	```solidity
1479 | 	pragma solidity ^0.8.19;
1480 | 	```
1481 | 
1482 | - 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)
1483 | 
1484 | 	```solidity
1485 | 	pragma solidity ^0.8.19;
1486 | 	```
1487 | 
1488 | - 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)
1489 | 
1490 | 	```solidity
1491 | 	pragma solidity ^0.8.19;
1492 | 	```
1493 | 
1494 | - 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)
1495 | 
1496 | 	```solidity
1497 | 	pragma solidity ^0.8.19;
1498 | 	```
1499 | 
1500 | - 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)
1501 | 
1502 | 	```solidity
1503 | 	pragma solidity ^0.8.19;
1504 | 	```
1505 | 
1506 | - 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)
1507 | 
1508 | 	```solidity
1509 | 	pragma solidity ^0.8.19;
1510 | 	```
1511 | 
1512 | - 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)
1513 | 
1514 | 	```solidity
1515 | 	pragma solidity ^0.8.19;
1516 | 	```
1517 | 
1518 | - 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)
1519 | 
1520 | 	```solidity
1521 | 	pragma solidity ^0.8.19;
1522 | 	```
1523 | 
1524 | - 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)
1525 | 
1526 | 	```solidity
1527 | 	pragma solidity ^0.8.19;
1528 | 	```
1529 | 
1530 | - 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)
1531 | 
1532 | 	```solidity
1533 | 	pragma solidity ^0.8.19;
1534 | 	```
1535 | 
1536 | - 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)
1537 | 
1538 | 	```solidity
1539 | 	pragma solidity ^0.8.19;
1540 | 	```
1541 | 
1542 | - 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)
1543 | 
1544 | 	```solidity
1545 | 	pragma solidity ^0.8.19;
1546 | 	```
1547 | 
1548 | - 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)
1549 | 
1550 | 	```solidity
1551 | 	pragma solidity ^0.8.19;
1552 | 	```
1553 | 
1554 | - 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)
1555 | 
1556 | 	```solidity
1557 | 	pragma solidity ^0.8.19;
1558 | 	```
1559 | 
1560 | - 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)
1561 | 
1562 | 	```solidity
1563 | 	pragma solidity ^0.8.19;
1564 | 	```
1565 | 
1566 | - 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)
1567 | 
1568 | 	```solidity
1569 | 	pragma solidity ^0.8.19;
1570 | 	```
1571 | 
1572 | - 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)
1573 | 
1574 | 	```solidity
1575 | 	pragma solidity ^0.8.0;
1576 | 	```
1577 | 
1578 | - 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)
1579 | 
1580 | 	```solidity
1581 | 	pragma solidity ^0.8.19;
1582 | 	```
1583 | 
1584 | - 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)
1585 | 
1586 | 	```solidity
1587 | 	pragma solidity ^0.8.19;
1588 | 	```
1589 | 
1590 | - 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)
1591 | 
1592 | 	```solidity
1593 | 	pragma solidity ^0.8.19;
1594 | 	```
1595 | 
1596 | - 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)
1597 | 
1598 | 	```solidity
1599 | 	pragma solidity ^0.8.19;
1600 | 	```
1601 | 
1602 | - 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)
1603 | 
1604 | 	```solidity
1605 | 	pragma solidity ^0.8.0;
1606 | 	```
1607 | 
1608 | - 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)
1609 | 
1610 | 	```solidity
1611 | 	pragma solidity ^0.8.19;
1612 | 	```
1613 | 
1614 | - 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)
1615 | 
1616 | 	```solidity
1617 | 	pragma solidity ^0.8.19;
1618 | 	```
1619 | 
1620 | - 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)
1621 | 
1622 | 	```solidity
1623 | 	pragma solidity ^0.8.19;
1624 | 	```
1625 | 
1626 | - 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)
1627 | 
1628 | 	```solidity
1629 | 	pragma solidity ^0.8.19;
1630 | 	```
1631 | 
1632 | - 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)
1633 | 
1634 | 	```solidity
1635 | 	pragma solidity ^0.8.19;
1636 | 	```
1637 | 
1638 | - 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)
1639 | 
1640 | 	```solidity
1641 | 	pragma solidity ^0.8.19;
1642 | 	```
1643 | 
1644 | - 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)
1645 | 
1646 | 	```solidity
1647 | 	pragma solidity ^0.8.19;
1648 | 	```
1649 | 
1650 | - 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)
1651 | 
1652 | 	```solidity
1653 | 	pragma solidity ^0.8.0;
1654 | 	```
1655 | 
1656 | </details>
1657 | 
1658 | 
1659 | 
1660 | ## L-7: Modifier Invoked Only Once
1661 | 
1662 | Consider removing the modifier or inlining the logic into the calling function.
1663 | 
1664 | <details><summary>4 Found Instances</summary>
1665 | 
1666 | 
1667 | - 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)
1668 | 
1669 | 	```solidity
1670 | 	  modifier checkConfigValid(
1671 | 	```
1672 | 
1673 | - 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)
1674 | 
1675 | 	```solidity
1676 | 	  modifier checkConfigValid(
1677 | 	```
1678 | 
1679 | - 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)
1680 | 
1681 | 	```solidity
1682 | 	  modifier checkConfigValid(
1683 | 	```
1684 | 
1685 | - 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)
1686 | 
1687 | 	```solidity
1688 | 	  modifier checkConfigValid(
1689 | 	```
1690 | 
1691 | </details>
1692 | 
1693 | 
1694 | 
1695 | ## L-8: Large Numeric Literal
1696 | 
1697 | Large literal values multiples of 10000 can be replaced with scientific notation.Use `e` notation, for example: `1e18`, instead of its full numeric value.
1698 | 
1699 | <details><summary>10 Found Instances</summary>
1700 | 
1701 | 
1702 | - 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)
1703 | 
1704 | 	```solidity
1705 | 	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
1706 | 	```
1707 | 
1708 | - 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)
1709 | 
1710 | 	```solidity
1711 | 	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
1712 | 	```
1713 | 
1714 | - 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)
1715 | 
1716 | 	```solidity
1717 | 	  uint32 public constant MAX_CALLBACK_GAS = 70_000;
1718 | 	```
1719 | 
1720 | - 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)
1721 | 
1722 | 	```solidity
1723 | 	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
1724 | 	```
1725 | 
1726 | - 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)
1727 | 
1728 | 	```solidity
1729 | 	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
1730 | 	```
1731 | 
1732 | - 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)
1733 | 
1734 | 	```solidity
1735 | 	  uint32 public constant MAX_CALLBACK_GAS = 70_000;
1736 | 	```
1737 | 
1738 | - 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)
1739 | 
1740 | 	```solidity
1741 | 	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
1742 | 	```
1743 | 
1744 | - 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)
1745 | 
1746 | 	```solidity
1747 | 	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
1748 | 	```
1749 | 
1750 | - 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)
1751 | 
1752 | 	```solidity
1753 | 	  uint256 private constant REASONABLE_GAS_PRICE_CEILING = 1_000_000_000_000_000; // 1 million gwei
1754 | 	```
1755 | 
1756 | - 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)
1757 | 
1758 | 	```solidity
1759 | 	      ((gasPriceWei * s_config.fulfillmentGasPriceOverEstimationBP) / 10_000);
1760 | 	```
1761 | 
1762 | </details>
1763 | 
1764 | 
1765 | 
1766 | ## L-9: Internal Function Used Only Once
1767 | 
1768 | 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.
1769 | 
1770 | <details><summary>3 Found Instances</summary>
1771 | 
1772 | 
1773 | - 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)
1774 | 
1775 | 	```solidity
1776 | 	  function fulfillRequest(bytes32 requestId, bytes memory response, bytes memory err) internal virtual;
1777 | 	```
1778 | 
1779 | - 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)
1780 | 
1781 | 	```solidity
1782 | 	  function initializeRequest(
1783 | 	```
1784 | 
1785 | - 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)
1786 | 
1787 | 	```solidity
1788 | 	  function configDigestFromConfigData(
1789 | 	```
1790 | 
1791 | </details>
1792 | 
1793 | 
1794 | 
1795 | ## L-10: Contract has TODO Comments
1796 | 
1797 | Contract contains comments with TODOS. Consider implementing or removing them.
1798 | 
1799 | <details><summary>7 Found Instances</summary>
1800 | 
1801 | 
1802 | - 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)
1803 | 
1804 | 	```solidity
1805 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
1806 | 	```
1807 | 
1808 | - 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)
1809 | 
1810 | 	```solidity
1811 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
1812 | 	```
1813 | 
1814 | - 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)
1815 | 
1816 | 	```solidity
1817 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
1818 | 	```
1819 | 
1820 | - 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)
1821 | 
1822 | 	```solidity
1823 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
1824 | 	```
1825 | 
1826 | - 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)
1827 | 
1828 | 	```solidity
1829 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
1830 | 	```
1831 | 
1832 | - 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)
1833 | 
1834 | 	```solidity
1835 | 	abstract contract FunctionsBilling is Routable, IFunctionsBilling {
1836 | 	```
1837 | 
1838 | - 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)
1839 | 
1840 | 	```solidity
1841 | 	abstract contract OCR2Base is ConfirmedOwner, OCR2Abstract {
1842 | 	```
1843 | 
1844 | </details>
1845 | 
1846 | 
1847 | 
1848 | ## L-11: Unused Error
1849 | 
1850 | Consider using or removing the unused error.
1851 | 
1852 | <details><summary>26 Found Instances</summary>
1853 | 
1854 | 
1855 | - 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)
1856 | 
1857 | 	```solidity
1858 | 	  error InvalidSubscription();
1859 | 	```
1860 | 
1861 | - 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)
1862 | 
1863 | 	```solidity
1864 | 	  error UnauthorizedSender();
1865 | 	```
1866 | 
1867 | - 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)
1868 | 
1869 | 	```solidity
1870 | 	  error MustBeSubOwner(address owner);
1871 | 	```
1872 | 
1873 | - 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)
1874 | 
1875 | 	```solidity
1876 | 	  error PaymentTooLarge();
1877 | 	```
1878 | 
1879 | - 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)
1880 | 
1881 | 	```solidity
1882 | 	  error InconsistentReportData();
1883 | 	```
1884 | 
1885 | - 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)
1886 | 
1887 | 	```solidity
1888 | 	  error UnauthorizedPublicKeyChange();
1889 | 	```
1890 | 
1891 | - 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)
1892 | 
1893 | 	```solidity
1894 | 	  error IdentifierIsReserved(bytes32 id);
1895 | 	```
1896 | 
1897 | - 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)
1898 | 
1899 | 	```solidity
1900 | 	  error InvalidSubscription();
1901 | 	```
1902 | 
1903 | - 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)
1904 | 
1905 | 	```solidity
1906 | 	  error UnauthorizedSender();
1907 | 	```
1908 | 
1909 | - 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)
1910 | 
1911 | 	```solidity
1912 | 	  error MustBeSubOwner(address owner);
1913 | 	```
1914 | 
1915 | - 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)
1916 | 
1917 | 	```solidity
1918 | 	  error PaymentTooLarge();
1919 | 	```
1920 | 
1921 | - 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)
1922 | 
1923 | 	```solidity
1924 | 	  error InconsistentReportData();
1925 | 	```
1926 | 
1927 | - 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)
1928 | 
1929 | 	```solidity
1930 | 	  error UnauthorizedPublicKeyChange();
1931 | 	```
1932 | 
1933 | - 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)
1934 | 
1935 | 	```solidity
1936 | 	  error IdentifierIsReserved(bytes32 id);
1937 | 	```
1938 | 
1939 | - 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)
1940 | 
1941 | 	```solidity
1942 | 	  error InvalidSubscription();
1943 | 	```
1944 | 
1945 | - 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)
1946 | 
1947 | 	```solidity
1948 | 	  error UnauthorizedSender();
1949 | 	```
1950 | 
1951 | - 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)
1952 | 
1953 | 	```solidity
1954 | 	  error MustBeSubOwner(address owner);
1955 | 	```
1956 | 
1957 | - 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)
1958 | 
1959 | 	```solidity
1960 | 	  error PaymentTooLarge();
1961 | 	```
1962 | 
1963 | - 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)
1964 | 
1965 | 	```solidity
1966 | 	  error InconsistentReportData();
1967 | 	```
1968 | 
1969 | - 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)
1970 | 
1971 | 	```solidity
1972 | 	  error UnauthorizedPublicKeyChange();
1973 | 	```
1974 | 
1975 | - 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)
1976 | 
1977 | 	```solidity
1978 | 	  error InvalidSubscription();
1979 | 	```
1980 | 
1981 | - 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)
1982 | 
1983 | 	```solidity
1984 | 	  error UnauthorizedSender();
1985 | 	```
1986 | 
1987 | - 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)
1988 | 
1989 | 	```solidity
1990 | 	  error MustBeSubOwner(address owner);
1991 | 	```
1992 | 
1993 | - 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)
1994 | 
1995 | 	```solidity
1996 | 	  error PaymentTooLarge();
1997 | 	```
1998 | 
1999 | - 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)
2000 | 
2001 | 	```solidity
2002 | 	  error InconsistentReportData();
2003 | 	```
2004 | 
2005 | - 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)
2006 | 
2007 | 	```solidity
2008 | 	  error UnauthorizedPublicKeyChange();
2009 | 	```
2010 | 
2011 | </details>
2012 | 
2013 | 
2014 | 
2015 | ## L-12: Loop Contains `require`/`revert`
2016 | 
2017 | 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
2018 | 
2019 | <details><summary>20 Found Instances</summary>
2020 | 
2021 | 
2022 | - 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)
2023 | 
2024 | 	```solidity
2025 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2026 | 	```
2027 | 
2028 | - 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)
2029 | 
2030 | 	```solidity
2031 | 	    for (uint256 i = 0; i < idsArrayLength; ++i) {
2032 | 	```
2033 | 
2034 | - 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)
2035 | 
2036 | 	```solidity
2037 | 	    for (uint256 i = 0; i < requestsToTimeoutByCommitment.length; ++i) {
2038 | 	```
2039 | 
2040 | - 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)
2041 | 
2042 | 	```solidity
2043 | 	      for (uint256 i = 0; i < self.args.length; ++i) {
2044 | 	```
2045 | 
2046 | - 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)
2047 | 
2048 | 	```solidity
2049 | 	      for (uint256 i = 0; i < self.bytesArgs.length; ++i) {
2050 | 	```
2051 | 
2052 | - 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)
2053 | 
2054 | 	```solidity
2055 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2056 | 	```
2057 | 
2058 | - 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)
2059 | 
2060 | 	```solidity
2061 | 	      for (uint256 i = 0; i < rs.length; ++i) {
2062 | 	```
2063 | 
2064 | - 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)
2065 | 
2066 | 	```solidity
2067 | 	    for (uint256 i = 0; i < requestIds.length; ++i) {
2068 | 	```
2069 | 
2070 | - 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)
2071 | 
2072 | 	```solidity
2073 | 	    for (uint256 i = 0; i < idsArrayLength; ++i) {
2074 | 	```
2075 | 
2076 | - 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)
2077 | 
2078 | 	```solidity
2079 | 	    for (uint256 i = 0; i < requestsToTimeoutByCommitment.length; ++i) {
2080 | 	```
2081 | 
2082 | - 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)
2083 | 
2084 | 	```solidity
2085 | 	      for (uint256 i = 0; i < self.args.length; ++i) {
2086 | 	```
2087 | 
2088 | - 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)
2089 | 
2090 | 	```solidity
2091 | 	      for (uint256 i = 0; i < self.bytesArgs.length; ++i) {
2092 | 	```
2093 | 
2094 | - 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)
2095 | 
2096 | 	```solidity
2097 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2098 | 	```
2099 | 
2100 | - 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)
2101 | 
2102 | 	```solidity
2103 | 	      for (uint256 i = 0; i < rs.length; ++i) {
2104 | 	```
2105 | 
2106 | - 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)
2107 | 
2108 | 	```solidity
2109 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2110 | 	```
2111 | 
2112 | - 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)
2113 | 
2114 | 	```solidity
2115 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2116 | 	```
2117 | 
2118 | - 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)
2119 | 
2120 | 	```solidity
2121 | 	      for (uint256 i = 0; i < rs.length; ++i) {
2122 | 	```
2123 | 
2124 | - 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)
2125 | 
2126 | 	```solidity
2127 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2128 | 	```
2129 | 
2130 | - 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)
2131 | 
2132 | 	```solidity
2133 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2134 | 	```
2135 | 
2136 | - 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)
2137 | 
2138 | 	```solidity
2139 | 	      for (uint256 i = 0; i < rs.length; ++i) {
2140 | 	```
2141 | 
2142 | </details>
2143 | 
2144 | 
2145 | 
2146 | ## L-13: Dead Code
2147 | 
2148 | Functions that are not used. Consider removing them.
2149 | 
2150 | <details><summary>4 Found Instances</summary>
2151 | 
2152 | 
2153 | - 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)
2154 | 
2155 | 	```solidity
2156 | 	  function _isTransmitter(address node) internal view returns (bool) {
2157 | 	```
2158 | 
2159 | - 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)
2160 | 
2161 | 	```solidity
2162 | 	  function _isTransmitter(address node) internal view returns (bool) {
2163 | 	```
2164 | 
2165 | - 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)
2166 | 
2167 | 	```solidity
2168 | 	  function _isTransmitter(address node) internal view returns (bool) {
2169 | 	```
2170 | 
2171 | - 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)
2172 | 
2173 | 	```solidity
2174 | 	  function _isTransmitter(address node) internal view returns (bool) {
2175 | 	```
2176 | 
2177 | </details>
2178 | 
2179 | 
2180 | 
2181 | ## L-14: Costly operations inside loop
2182 | 
2183 | Invoking `SSTORE` operations in loops may waste gas. Use a local variable to hold the loop computation result.
2184 | 
2185 | <details><summary>28 Found Instances</summary>
2186 | 
2187 | 
2188 | - 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)
2189 | 
2190 | 	```solidity
2191 | 	    for (uint256 i = 0; i < transmitters.length; ++i) {
2192 | 	```
2193 | 
2194 | - 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)
2195 | 
2196 | 	```solidity
2197 | 	    for (uint256 i = 0; i < numberOfTransmitters; ++i) {
2198 | 	```
2199 | 
2200 | - 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)
2201 | 
2202 | 	```solidity
2203 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2204 | 	```
2205 | 
2206 | - 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)
2207 | 
2208 | 	```solidity
2209 | 	    for (uint256 i = 0; i < s_proposedContractSet.ids.length; ++i) {
2210 | 	```
2211 | 
2212 | - 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)
2213 | 
2214 | 	```solidity
2215 | 	    for (uint256 i = 0; i < consumers.length; ++i) {
2216 | 	```
2217 | 
2218 | - 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)
2219 | 
2220 | 	```solidity
2221 | 	    for (uint256 i = 0; i < subscription.consumers.length; ++i) {
2222 | 	```
2223 | 
2224 | - 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)
2225 | 
2226 | 	```solidity
2227 | 	    for (uint256 i = 0; i < requestsToTimeoutByCommitment.length; ++i) {
2228 | 	```
2229 | 
2230 | - 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)
2231 | 
2232 | 	```solidity
2233 | 	    while (s_signers.length != 0) {
2234 | 	```
2235 | 
2236 | - 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)
2237 | 
2238 | 	```solidity
2239 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2240 | 	```
2241 | 
2242 | - 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)
2243 | 
2244 | 	```solidity
2245 | 	    for (uint256 i = 0; i < transmitters.length; ++i) {
2246 | 	```
2247 | 
2248 | - 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)
2249 | 
2250 | 	```solidity
2251 | 	    for (uint256 i = 0; i < transmitters.length; ++i) {
2252 | 	```
2253 | 
2254 | - 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)
2255 | 
2256 | 	```solidity
2257 | 	    for (uint256 i = 0; i < requestIds.length; ++i) {
2258 | 	```
2259 | 
2260 | - 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)
2261 | 
2262 | 	```solidity
2263 | 	    for (uint256 i = 0; i < s_proposedContractSet.ids.length; ++i) {
2264 | 	```
2265 | 
2266 | - 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)
2267 | 
2268 | 	```solidity
2269 | 	    for (uint256 i = 0; i < consumers.length; ++i) {
2270 | 	```
2271 | 
2272 | - 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)
2273 | 
2274 | 	```solidity
2275 | 	    for (uint256 i = 0; i < subscription.consumers.length; ++i) {
2276 | 	```
2277 | 
2278 | - 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)
2279 | 
2280 | 	```solidity
2281 | 	    for (uint256 i = 0; i < requestsToTimeoutByCommitment.length; ++i) {
2282 | 	```
2283 | 
2284 | - 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)
2285 | 
2286 | 	```solidity
2287 | 	    while (s_signers.length != 0) {
2288 | 	```
2289 | 
2290 | - 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)
2291 | 
2292 | 	```solidity
2293 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2294 | 	```
2295 | 
2296 | - 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)
2297 | 
2298 | 	```solidity
2299 | 	    for (uint256 i = 0; i < transmitters.length; ++i) {
2300 | 	```
2301 | 
2302 | - 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)
2303 | 
2304 | 	```solidity
2305 | 	    for (uint256 i = 0; i < numberOfTransmitters; ++i) {
2306 | 	```
2307 | 
2308 | - 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)
2309 | 
2310 | 	```solidity
2311 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2312 | 	```
2313 | 
2314 | - 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)
2315 | 
2316 | 	```solidity
2317 | 	    while (s_signers.length != 0) {
2318 | 	```
2319 | 
2320 | - 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)
2321 | 
2322 | 	```solidity
2323 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2324 | 	```
2325 | 
2326 | - 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)
2327 | 
2328 | 	```solidity
2329 | 	    for (uint256 i = 0; i < transmitters.length; ++i) {
2330 | 	```
2331 | 
2332 | - 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)
2333 | 
2334 | 	```solidity
2335 | 	    for (uint256 i = 0; i < numberOfTransmitters; ++i) {
2336 | 	```
2337 | 
2338 | - 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)
2339 | 
2340 | 	```solidity
2341 | 	    for (uint256 i = 0; i < numberOfFulfillments; ++i) {
2342 | 	```
2343 | 
2344 | - 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)
2345 | 
2346 | 	```solidity
2347 | 	    while (s_signers.length != 0) {
2348 | 	```
2349 | 
2350 | - 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)
2351 | 
2352 | 	```solidity
2353 | 	    for (uint256 i = 0; i < args.signers.length; i++) {
2354 | 	```
2355 | 
2356 | </details>
2357 | 
2358 | 
2359 | 
2360 | ## L-15: Unused Import
2361 | 
2362 | Redundant import statement. Consider removing it.
2363 | 
2364 | <details><summary>4 Found Instances</summary>
2365 | 
2366 | 
2367 | - 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)
2368 | 
2369 | 	```solidity
2370 | 	import {ITypeAndVersion} from "../../../shared/interfaces/ITypeAndVersion.sol";
2371 | 	```
2372 | 
2373 | - 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)
2374 | 
2375 | 	```solidity
2376 | 	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
2377 | 	```
2378 | 
2379 | - 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)
2380 | 
2381 | 	```solidity
2382 | 	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
2383 | 	```
2384 | 
2385 | - 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)
2386 | 
2387 | 	```solidity
2388 | 	import {ITypeAndVersion} from "../../shared/interfaces/ITypeAndVersion.sol";
2389 | 	```
2390 | 
2391 | </details>
2392 | 
2393 | 
2394 | 
2395 | ## L-16: State Change Without Event
2396 | 
2397 | 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.
2398 | 
2399 | <details><summary>24 Found Instances</summary>
2400 | 
2401 | 
2402 | - 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)
2403 | 
2404 | 	```solidity
2405 | 	  function oracleWithdraw(address recipient, uint96 amount) external {
2406 | 	```
2407 | 
2408 | - 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)
2409 | 
2410 | 	```solidity
2411 | 	  function oracleWithdrawAll() external {
2412 | 	```
2413 | 
2414 | - 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)
2415 | 
2416 | 	```solidity
2417 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
2418 | 	```
2419 | 
2420 | - 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)
2421 | 
2422 | 	```solidity
2423 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
2424 | 	```
2425 | 
2426 | - 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)
2427 | 
2428 | 	```solidity
2429 | 	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
2430 | 	```
2431 | 
2432 | - 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)
2433 | 
2434 | 	```solidity
2435 | 	  function oracleWithdraw(address recipient, uint96 amount) external override {
2436 | 	```
2437 | 
2438 | - 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)
2439 | 
2440 | 	```solidity
2441 | 	  function ownerWithdraw(address recipient, uint96 amount) external {
2442 | 	```
2443 | 
2444 | - 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)
2445 | 
2446 | 	```solidity
2447 | 	  function setFlags(uint64 subscriptionId, bytes32 flags) external override {
2448 | 	```
2449 | 
2450 | - 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)
2451 | 
2452 | 	```solidity
2453 | 	  function oracleWithdraw(address recipient, uint96 amount) external {
2454 | 	```
2455 | 
2456 | - 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)
2457 | 
2458 | 	```solidity
2459 | 	  function oracleWithdrawAll() external {
2460 | 	```
2461 | 
2462 | - 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)
2463 | 
2464 | 	```solidity
2465 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
2466 | 	```
2467 | 
2468 | - 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)
2469 | 
2470 | 	```solidity
2471 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
2472 | 	```
2473 | 
2474 | - 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)
2475 | 
2476 | 	```solidity
2477 | 	  function setAllowListId(bytes32 allowListId) external override onlyOwner {
2478 | 	```
2479 | 
2480 | - 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)
2481 | 
2482 | 	```solidity
2483 | 	  function oracleWithdraw(address recipient, uint96 amount) external override {
2484 | 	```
2485 | 
2486 | - 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)
2487 | 
2488 | 	```solidity
2489 | 	  function ownerWithdraw(address recipient, uint96 amount) external {
2490 | 	```
2491 | 
2492 | - 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)
2493 | 
2494 | 	```solidity
2495 | 	  function setFlags(uint64 subscriptionId, bytes32 flags) external override {
2496 | 	```
2497 | 
2498 | - 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)
2499 | 
2500 | 	```solidity
2501 | 	  function oracleWithdraw(address recipient, uint96 amount) external {
2502 | 	```
2503 | 
2504 | - 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)
2505 | 
2506 | 	```solidity
2507 | 	  function oracleWithdrawAll() external {
2508 | 	```
2509 | 
2510 | - 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)
2511 | 
2512 | 	```solidity
2513 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
2514 | 	```
2515 | 
2516 | - 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)
2517 | 
2518 | 	```solidity
2519 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
2520 | 	```
2521 | 
2522 | - 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)
2523 | 
2524 | 	```solidity
2525 | 	  function oracleWithdraw(address recipient, uint96 amount) external {
2526 | 	```
2527 | 
2528 | - 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)
2529 | 
2530 | 	```solidity
2531 | 	  function oracleWithdrawAll() external {
2532 | 	```
2533 | 
2534 | - 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)
2535 | 
2536 | 	```solidity
2537 | 	  function setThresholdPublicKey(bytes calldata thresholdPublicKey) external override onlyOwner {
2538 | 	```
2539 | 
2540 | - 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)
2541 | 
2542 | 	```solidity
2543 | 	  function setDONPublicKey(bytes calldata donPublicKey) external override onlyOwner {
2544 | 	```
2545 | 
2546 | </details>
2547 | 
2548 | 
2549 | 
2550 | ## L-17: Unchecked Return
2551 | 
2552 | Function returns a value but it is ignored. Consider checking the return value.
2553 | 
2554 | <details><summary>12 Found Instances</summary>
2555 | 
2556 | 
2557 | - 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)
2558 | 
2559 | 	```solidity
2560 | 	      s_allowedSenders.add(initialAllowedSenders[i]);
2561 | 	```
2562 | 
2563 | - 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)
2564 | 
2565 | 	```solidity
2566 | 	      s_blockedSenders.add(initialBlockedSenders[j]);
2567 | 	```
2568 | 
2569 | - 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)
2570 | 
2571 | 	```solidity
2572 | 	    s_allowedSenders.remove(sender);
2573 | 	```
2574 | 
2575 | - 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)
2576 | 
2577 | 	```solidity
2578 | 	    s_blockedSenders.add(sender);
2579 | 	```
2580 | 
2581 | - 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)
2582 | 
2583 | 	```solidity
2584 | 	    s_blockedSenders.remove(sender);
2585 | 	```
2586 | 
2587 | - 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)
2588 | 
2589 | 	```solidity
2590 | 	    s_allowedSenders.add(recipient);
2591 | 	```
2592 | 
2593 | - 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)
2594 | 
2595 | 	```solidity
2596 | 	    s_allowedSenders.remove(sender);
2597 | 	```
2598 | 
2599 | - 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)
2600 | 
2601 | 	```solidity
2602 | 	      s_allowedSenders.add(initialAllowedSenders[i]);
2603 | 	```
2604 | 
2605 | - 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)
2606 | 
2607 | 	```solidity
2608 | 	      s_blockedSenders.add(initialBlockedSenders[j]);
2609 | 	```
2610 | 
2611 | - 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)
2612 | 
2613 | 	```solidity
2614 | 	    s_allowedSenders.remove(sender);
2615 | 	```
2616 | 
2617 | - 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)
2618 | 
2619 | 	```solidity
2620 | 	    s_blockedSenders.add(sender);
2621 | 	```
2622 | 
2623 | - 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)
2624 | 
2625 | 	```solidity
2626 | 	    s_blockedSenders.remove(sender);
2627 | 	```
2628 | 
2629 | </details>
2630 | 
2631 | 
2632 | 
2633 | 
```
Page 99/103FirstPrevNextLast