Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Latest commit

 

History

History
2920 lines (2615 loc) · 273 KB

File metadata and controls

2920 lines (2615 loc) · 273 KB

Chaos Labs Risk Management Renewal

Proposal text

Simple Summary

Chaos Labs proposes to renew our engagement with the Aave DAO, providing our full suite of risk management products and services, covering all of Aave, including V2, V3, and GHO, across all current and future deployments.

Our current annual engagement is set to end on November 7th, 2023.

Motivation

In November 2022, Chaos formally joined the Aave DAO as a service provider specializing in risk management and parameter optimization. This partnership began with our original engagement to cover V3 markets, followed by an extension to cover V2 markets formally, with an additional engagement amendment approved by the community in August 2023 to adjust the scope and compensation for the remainder of the original term.

During this time, we have consistently demonstrated our unwavering dedication to the DAO, covering all aspects of the protocol across all deployments and providing the community with proactive risk parameter recommendations alongside reactive analyses and risk-mitigating strategies in light of significant market events. Chaos has initiated over 60 ARFCs and supported nearly 100 additional proposals and community discussions, including parameter optimization, onboarding of new assets and new deployments, deprecation of V2 and migration to V3, GHO launch, and community support during major market events.

During our engagement, the protocol incurred minimal bad debt while facing major market events, namely the USDC depeg in early March 2023.

A full overview of Chaos Labs’ activities through the past year can be found in our monthly community updates here.

https://governance.aave.com/t/chaos-labs-monthly-community-update/11174/6

Highlighted previous work and resources

Products:

Methodologies:

Analyses and Proposals:

Proposal

Chaos Labs offers our comprehensive risk management and optimization platform for Aave, covering the entire spectrum of Aave, including V2, V3, and GHO, across all current and future deployments.

Our strategies aim to secure protocol assets against market volatility, black swan events, liquidity attacks, and market manipulation. Our methodologies are rooted in an integrative approach, offering protocol robustness and protecting funds from market risks through dynamic risk parameter recommendations. We provide a holistic approach encompassing software and services to mitigate risks in volatile markets, countering economic attacks on the protocol and ensuring the secure preservation of user funds.

Scope

Risk Parameter Optimization

Deploying our custom agent-based simulation platform, proprietary methodologies, and a distinguished team of data scientists and researchers, we provide the community with comprehensive analyses and recommendations for risk parameter settings and strategies. Our paramount goal is to optimize protocol revenue while protecting user funds and mitigating potential risk vectors. Chaos Labs will thoroughly analyze the ecosystem and build custom agent-based simulations. These simulations leverage protocol dynamics and on-chain behaviors to pressure test and optimize the protocol, identifying potential vulnerabilities and opportunities for improvement. Thorough system analysis yields a comprehensive understanding of the factors that impact protocol health and stability, enabling us to make data-driven optimization and risk management recommendations.

Coverage includes support for all Aave risk parameters, including Liquidation Thresholds, LTV, Liquidation Bonus, Supply and Borrow Caps, Debt Ceilings, and Interest Rate Curves.

Parameter Recommendation Platform

The Chaos Labs Parameter Recommendation Portal is designed to provide the Aave community with a comprehensive understanding of the simulation outputs and underlying data to optimize risk parameter settings. By providing a clear and intuitive interface that highlights the impact of different parameter settings on risk and return, we can foster a more informed and engaged community, facilitating ongoing collaboration and knowledge sharing.

In addition to presenting the data outputs from the Chaos Simulation Engine, the Parameter Recommendation Portal offers users unparalleled access to the underlying simulation mechanics and implications, providing users with a comprehensive understanding of the simulations and their results.

Risk Monitoring and Alerting

We offer real-time monitoring and alerting services through the Chaos Labs Risk Monitoring Platform. These services allow users to assess ecosystem risk and protocol health at granular levels using dashboards and data visualizations. Users can drill into specific scenarios in which the protocol could be negatively impacted and receive alerts concerning significant changes to on-chain activities that could pose a risk or detriment to the protocol's health.

As part of our commitment to delivering a world-class risk management solution for the DeFi ecosystem, we constantly iterate and improve on the platform with additional features and enhancements. The Aave community will continue to gain access to the newest feature additions and enhancements continuously, allowing users to stay ahead of the curve and make informed decisions while optimizing their overall portfolio performance.

Deprecation of V2 and Migration to V3

Chaos Labs has spearheaded several community initiatives to deprecate the V2 markets and facilitate the transition to V3, as outlined in the 'Background' section.

As we progress with the deprecation plan and migration efforts, we are committed to continue allocating resources and offering the community recommendations for proactively adjusting V2 parameters. This includes updates to Liquidation Thresholds, Reserve Factors and enhancing the capital efficiency of V3 markets to ensure a seamless migration of positions from V2.

Given the extended nature of the transition to V3, it remains imperative to uphold proactive risk management for V2 during this transitional phase.

Protocol Growth

Chaos Labs will provide integral support to the protocol growth initiatives through detailed market risk assessments and parameter recommendations for new asset listings and deployments.

As we onboard new assets and deployments, the Chaos team will seamlessly integrate them into our systems to facilitate continuous monitoring and parameter optimization. We uphold the same high standard for all assets and deployments, ensuring consistency and excellence across the board. Our goal is to provide unwavering support for the protocol's expansion and sustainability.

GHO

Following the initial launch of GHO, Chaos Labs is committed to the continued growth and safety of the stablecoin and will provide ongoing support, including:

  • Parameter Optimization - we will conduct data-driven research and simulations to recommend optimizations for GHO-specific parameters, including Borrow rate, stkAAVE discount rate, bucket capacities, GSM, and DEX liquidity goals. Additionally, Chaos Labs will extend its current V3 Ethereum Asset Listing framework to include rigorous analysis of how new asset types can affect GHO composition and stability.
  • Ongoing Risk Management, Monitoring, and Analytics - We will continue iterations on our unified risk monitoring and alerting platform for GHO across primary markets (Aave), including all facilitators and secondary markets (centralized and decentralized exchanges). Our risk management services include economic reviews of GHO and ecosystem adoption across primary and secondary markets, peg stability, GHO backing composition, and more.
  • Facilitator's Risk Framework, Recommendations, and Monitoring - we will create a risk framework to consider potential facilitators and their corresponding GHO credit lines and provide ongoing risk analysis for potential and existing facilitators based on this framework.
  • And more

Chaos Team Support

As part of our services, we assign a dedicated protocol manager supported by our world-class team of researchers and data scientists to lead all risk-related communications and inquiries with the Aave community.

Our team support typically covers two main areas: ongoing management and incident response. In the event of any incidents or issues, our team will be on hand to provide timely and effective incident response, minimizing the potential impact on the protocol and its users.

Ongoing and Proactive Risk Management

This includes detailed analyses of new asset onboarding, assessing the potential risks and benefits of launching in new markets and providing a thorough understanding of parameter recommendations, including qualitative data and position analysis.

Incident Response

This includes supporting various events, including liquidity changes, asset depegs, price volatilities, etc. Our team provides ongoing support in these events, including market monitoring and alerting, ad-hoc risk analysis, and recommendations on risk-mitigating actions.

Our team of experts brings a wealth of experience in risk management and data analysis, enabling us to provide the insights and recommendations necessary to navigate even the most challenging market conditions. By working closely with the community, we can provide the support and guidance necessary to promote Aave’s long-term success and sustainability.

Communications:

  • Our team will share our recommendations and analyses through dedicated governance forum discussions, maintaining transparency and facilitating effective communication with the community.
  • We commit to providing a monthly update post, highlighting completed work and outlining our future areas of focus.
  • We are consistently available for community calls and regularly schedule check-up calls with Aave delegates. These calls primarily focus on addressing risk-related inquiries, offering insights into existing proposals, and gathering general feedback.

Terms

  • 12-month engagement, November 13th 2023-November 13th, 2024
  • $1.6M, streamed linearly throughout the engagement.
    • $800,000 in GHO
    • $800,000 in aUSDT

Specification:

If this proposal is approved, a stream of the allocated budget will be activated, with a Chaos Labs-controlled account (0xbC540e0729B732fb14afA240aA5A047aE9ba7dF0) as the recipient.

In terms of technical implementation, the AIP will call the createStream() method of the IAaveEcosystemReserveController interface to create a stream of 800,000 aUSDT and 800,000 GHO for a 12-month duration.

Disclaimer:

Chaos Labs provides ongoing risk management services to several other borrowing/lending protocols, such as Benqi, Venus, Tapioca, and Tashi. These commitments do not interfere with our responsibilities concerning our association with Aave. We conscientiously provide explicit disclaimers and relevant context in any proposals that may influence clientele across the DeFi ecosystem.

This proposal was not commissioned or paid for by any third party.

References

Copyright

Copyright and related rights waived via CC0.

Checks

Reports all state changes from the proposal ✅ Passed

Info:

  • State changes:
# KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
@@ `s_upkeep` key `"38708010855340815800266444206792387479170521527111639306025178205742164078384"`.lastKeeper @@
- 0x3824b7a9c6d4ea93456df9b07df4ffdb37ffbcbf
+ 0xf12571de5a310008f1b7490f1aaf52de11325cc8
# TransparentUpgradeableProxy at `0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5` with implementation PayloadsController at `0x7222182cB9c5320587b5148BF03eeE107AD64578`
@@ Slot `0x8a8dc4e5242ea8b1ab1d60606dae757e6c2cca9f92a2cced9f72c19960bcb458` @@
- "0x000000000000654a5df70101da2e8bbe274fadf24dc391f81382c8232bd855b7"
+ "0x006550a06300654a5df70201da2e8bbe274fadf24dc391f81382c8232bd855b7"
# TransparentUpgradeableProxy at `0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1` with implementation CrossChainController at `0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1`
@@ _currentEnvelopeNonce @@
- 23
+ 24
@@ _currentTransactionNonce @@
- 23
+ 24
@@ `_forwardedTransactions` key `0x27f244d4de8c0020448c47c3cf2d5e1338d81db0f1dfce9f61f012352006739f` @@
- false
+ true

@@ `_registeredEnvelopes` key `0xa51ef64f0df12782066cac46ae05e839ba2f463319d7ff15a8f03973e13554f6` @@
- false
+ true

Check stack trace of the proposal ✅ Passed

Info:

  • There is no SELFDESTRUCT inside of delegated call

Reports all events emitted from the proposal ✅ Passed

Info:

  • Events Emitted:
    • TransparentUpgradeableProxy at 0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1 with implementation CrossChainController at 0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1
      • EnvelopeRegistered(envelopeId: 0xa51ef64f0df12782066cac46ae05e839ba2f463319d7ff15a8f03973e13554f6, envelope: [object Object])
      • TransactionForwardingAttempted(transactionId: 0x27f244d4de8c0020448c47c3cf2d5e1338d81db0f1dfce9f61f012352006739f, envelopeId: 0xa51ef64f0df12782066cac46ae05e839ba2f463319d7ff15a8f03973e13554f6, encodedTransaction: 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000170000000000000000000000009aee0b04504cef83a65ac3f0e838d0593bcb2bc7000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006550a063, destinationChainId: 1, bridgeAdapter: 0x118dfd5418890c0332042ab05173db4a2c1d283c, destinationBridgeAdapter: 0x118dfd5418890c0332042ab05173db4a2c1d283c, adapterSuccessful: true, returnData: 0x000000000000000000000000dabad81af85554e9ae636395611c58f7ec1aaec50000000000000000000000000000000000000000000000000000000000000000)
    • TransparentUpgradeableProxy at 0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5 with implementation PayloadsController at 0x7222182cB9c5320587b5148BF03eeE107AD64578
      • PayloadQueued(payloadId: 9)
      • PayloadExecutionMessageReceived(originSender: 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7, originChainId: 1, delivered: true, message: 0x00000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000006550a063, reason: 0x)
    • EthRobotKeeper at 0x9EEa1Ba822d204077e9f90a92D30432417184587
      • ActionSucceeded(id: 360, action: 1)
    • KeeperRegistry at 0x02777053d6764996e594c3E88AF1D58D5363a2e6
      • UpkeepPerformed(id: 38708010855340815800266444206792387479170521527111639306025178205742164078384, success: true, from: 0xf12571de5a310008f1b7490f1aaf52de11325cc8, payment: 0, performData: 0x0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001680000000000000000000000000000000000000000000000000000000000000001)

Check all targets are verified on Etherscan ✅ Passed

Info:

  • Targets:
    • 0x9AEE0B04504CeF83A65AC3f0e838D0593BCb2BC7: Contract (not verified)

Check all touched contracts are verified on Etherscan ✅ Passed

Info:

  • Touched address:
    • 0xf12571de5a310008f1b7490f1aaf52de11325cc8: EOA (verification not applicable)
    • 0x02777053d6764996e594c3e88af1d58d5363a2e6: Contract (verified) (KeeperRegistry)
    • 0x169e633a2d1e6c10dd91238ba11c4a708dfef37c: Contract (verified) (EACAggregatorProxy)
    • 0x785433d8b06d77d68df6be63944742130a4530d1: Contract (verified) (AccessControlledOffchainAggregator)
    • 0xdc530d9457755926550b59e8eccdae7624181557: Contract (verified) (EACAggregatorProxy)
    • 0xbba12740de905707251525477bad74985dec46d2: Contract (verified) (AccessControlledOffchainAggregator)
    • 0x9eea1ba822d204077e9f90a92d30432417184587: Contract (verified) (EthRobotKeeper)
    • 0xec568fffba86c094cf06b22134b23074dfe2252c: Contract (verified) (AaveGovernanceV2)
    • 0xee56e2b3d491590b5b31738cc34d5232f378a8d5: Contract (verified) (Executor)
    • 0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e: Contract (verified) (GovernanceStrategy)
    • 0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9: Contract (verified) (InitializableAdminUpgradeabilityProxy)
    • 0x96f68837877fd0414b55050c9e794aecdbcfca59: Contract (verified) (AaveTokenV2)
    • 0x9aee0b04504cef83a65ac3f0e838d0593bcb2bc7: Contract (not verified)
    • 0x323f2c8e227b3f0d88b047ed16581fc0b6b9b1d7: Contract (verified) (Governance_V2_5)
    • 0xed42a7d8559a463722ca4bed50e0cc05a386b0e1: Contract (verified) (TransparentUpgradeableProxy)
    • 0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1: Contract (verified) (CrossChainController)
    • 0x118dfd5418890c0332042ab05173db4a2c1d283c: Contract (verified) (SameChainAdapter)
    • 0xdabad81af85554e9ae636395611c58f7ec1aaec5: Contract (verified) (TransparentUpgradeableProxy)
    • 0x7222182cb9c5320587b5148bf03eee107ad64578: Contract (verified) (PayloadsController)

Runs solc against the verified contracts ✅ Passed

Info:

View Details
View warnings for KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x02777053d6764996e594c3e88af1d58d5363a2e6-KeeperRegistry' running
View warnings for CrossChainController at `0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1-CrossChainController' running
View warnings for SameChainAdapter at `0x118DFD5418890c0332042ab05173Db4A2C1d283c`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x118dfd5418890c0332042ab05173db4a2c1d283c-SameChainAdapter' running
View warnings for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
WARNING:CryticCompile:Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
    uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
    ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
      uint16 phaseId
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
  function addPhase(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
  function parseIds(
  ^ (Relevant source part starts here and spans across multiple lines).


View warnings for Governance_V2_5 at `0x323F2c8E227b3F0d88B047Ed16581fc0b6B9B1d7`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x323f2c8e227b3f0d88b047ed16581fc0b6b9b1d7-Governance_V2_5' running
View warnings for PayloadsController at `0x7222182cB9c5320587b5148BF03eeE107AD64578`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7222182cb9c5320587b5148bf03eee107ad64578-PayloadsController' running
View warnings for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x785433d8b06d77d68df6be63944742130a4530d1-AccessControlledOffchainAggregator' running
WARNING:CryticCompile:Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
      int192 latestAnswer,
      ^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
  function latestAnswer()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
      uint64 latestTimestamp
      ^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
  function latestTimestamp()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
    string memory description
    ^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
  function description()
  ^ (Relevant source part starts here and spans across multiple lines).


View warnings for InitializableAdminUpgradeabilityProxy (Aave) at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9-InitializableAdminUpgradeabilityProxy' running
WARNING:CryticCompile:Warning: contracts/open-zeppelin/Address.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/Proxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/SafeMath.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/UpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol:13:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/utils/MockTransferHook.sol:9:25: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                        ^----------^

Warning: contracts/utils/MockTransferHook.sol:9:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                                      ^--------^

Warning: contracts/utils/MockTransferHook.sol:9:51: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                                                  ^------------^


View warnings for AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x96f68837877fd0414b55050c9e794aecdbcfca59-AaveTokenV2' running
WARNING:CryticCompile:Warning: src/contracts/AaveTokenV2.sol:453:18: Warning: This declaration shadows an existing declaration.
    constructor (string memory name, string memory symbol) public {
                 ^----------------^
src/contracts/AaveTokenV2.sol:462:5: The shadowed declaration is here:
    function name() public view returns (string memory) {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:453:38: Warning: This declaration shadows an existing declaration.
    constructor (string memory name, string memory symbol) public {
                                     ^------------------^
src/contracts/AaveTokenV2.sol:470:5: The shadowed declaration is here:
    function symbol() public view returns (string memory) {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:35:3: Warning: Interface functions are implicitly "virtual"
  function delegateByType(address delegatee, DelegationType delegationType) external virtual;
  ^-----------------------------------------------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:40:3: Warning: Interface functions are implicitly "virtual"
  function delegate(address delegatee) external virtual;
  ^----------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:45:3: Warning: Interface functions are implicitly "virtual"
  function getDelegateeByType(address delegator, DelegationType delegationType)
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:56:3: Warning: Interface functions are implicitly "virtual"
  function getPowerCurrent(address user, DelegationType delegationType)
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:66:3: Warning: Interface functions are implicitly "virtual"
  function getPowerAtBlock(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:75:3: Warning: Interface functions are implicitly "virtual"
  function totalSupplyAt(uint256 blockNumber) external virtual view returns (uint256);
  ^----------------------------------------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:453:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
    constructor (string memory name, string memory symbol) public {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:1164:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
  constructor() ERC20(NAME, SYMBOL) public {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:913:26: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
  function totalSupplyAt(uint256 blockNumber) external override view returns (uint256) {
                         ^-----------------^

Warning: src/contracts/AaveTokenV2.sol:1079:5: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    uint128 oldValue,
    ^--------------^


View warnings for EthRobotKeeper at `0x9EEa1Ba822d204077e9f90a92D30432417184587`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x9eea1ba822d204077e9f90a92d30432417184587-EthRobotKeeper' running
View warnings for GovernanceStrategy at `0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
View warnings for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbba12740de905707251525477bad74985dec46d2-AccessControlledOffchainAggregator' running
WARNING:CryticCompile:Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
      int192 latestAnswer,
      ^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
  function latestAnswer()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
      uint64 latestTimestamp
      ^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
  function latestTimestamp()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
    string memory description
    ^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
  function description()
  ^ (Relevant source part starts here and spans across multiple lines).


View warnings for TransparentUpgradeableProxy at `0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5` with implementation PayloadsController at `0x7222182cB9c5320587b5148BF03eeE107AD64578`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xdabad81af85554e9ae636395611c58f7ec1aaec5-TransparentUpgradeableProxy' running
View warnings for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
WARNING:CryticCompile:Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
    uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
    ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
      uint16 phaseId
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
  function addPhase(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
  function parseIds(
  ^ (Relevant source part starts here and spans across multiple lines).


View warnings for TransparentUpgradeableProxy at `0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1` with implementation CrossChainController at `0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1`
INFO:CryticCompile:'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xed42a7d8559a463722ca4bed50e0cc05a386b0e1-TransparentUpgradeableProxy' running

Runs slither against the verified contracts ✅ Passed

Info:

View Details
Slither report for KeeperRegistry at `0x02777053d6764996e594c3E88AF1D58D5363a2e6`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x02777053d6764996e594c3e88af1d58d5363a2e6-KeeperRegistry' running
INFO:Detectors:
KeeperRegistry.addFunds(uint256,uint96) (contracts/v0.8/KeeperRegistry.sol#297-302) ignores return value by LINK.transferFrom(msg.sender,address(this),amount) (contracts/v0.8/KeeperRegistry.sol#300)
KeeperRegistry.withdrawFunds(uint256,address) (contracts/v0.8/KeeperRegistry.sol#331-355) ignores return value by LINK.transfer(to,amountToWithdraw) (contracts/v0.8/KeeperRegistry.sol#354)
KeeperRegistry.withdrawOwnerFunds() (contracts/v0.8/KeeperRegistry.sol#360-368) ignores return value by LINK.transfer(msg.sender,amount) (contracts/v0.8/KeeperRegistry.sol#367)
KeeperRegistry.recoverFunds() (contracts/v0.8/KeeperRegistry.sol#389-392) ignores return value by LINK.transfer(msg.sender,total - s_expectedLinkBalance) (contracts/v0.8/KeeperRegistry.sol#391)
KeeperRegistry.withdrawPayment(address,address) (contracts/v0.8/KeeperRegistry.sol#399-408) ignores return value by LINK.transfer(to,keeper.balance) (contracts/v0.8/KeeperRegistry.sol#407)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) ignores return value by LINK.transfer(destination,totalBalanceRemaining) (contracts/v0.8/KeeperRegistry.sol#682)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer
INFO:Detectors:
KeeperBase.preventExecution() (contracts/v0.8/KeeperBase.sol#11-15) uses tx.origin for authorization: tx.origin != address(0) (contracts/v0.8/KeeperBase.sol#12)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-usage-of-txorigin
INFO:Detectors:
KeeperRegistry.cancelUpkeep(uint256) (contracts/v0.8/KeeperRegistry.sol#273-289) ignores return value by s_upkeepIDs.remove(id) (contracts/v0.8/KeeperRegistry.sol#286)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) ignores return value by s_upkeepIDs.remove(id) (contracts/v0.8/KeeperRegistry.sol#670)
KeeperRegistry._createUpkeep(uint256,address,uint32,address,uint96,bytes) (contracts/v0.8/KeeperRegistry.sol#723-745) ignores return value by s_upkeepIDs.add(id) (contracts/v0.8/KeeperRegistry.sol#744)
KeeperRegistry._getFeedData() (contracts/v0.8/KeeperRegistry.sol#753-771) ignores return value by (None,feedValue,None,timestamp,None) = FAST_GAS_FEED.latestRoundData() (contracts/v0.8/KeeperRegistry.sol#758)
KeeperRegistry._getFeedData() (contracts/v0.8/KeeperRegistry.sol#753-771) ignores return value by (None,feedValue,None,timestamp,None) = LINK_ETH_FEED.latestRoundData() (contracts/v0.8/KeeperRegistry.sol#764)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Reentrancy in KeeperRegistry.addFunds(uint256,uint96) (contracts/v0.8/KeeperRegistry.sol#297-302):
	External calls:
	- LINK.transferFrom(msg.sender,address(this),amount) (contracts/v0.8/KeeperRegistry.sol#300)
	Event emitted after the call(s):
	- FundsAdded(id,msg.sender,amount) (contracts/v0.8/KeeperRegistry.sol#301)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
KeeperRegistry._getFeedData() (contracts/v0.8/KeeperRegistry.sol#753-771) uses timestamp for comparisons
	Dangerous comparisons:
	- (staleFallback && stalenessSeconds < block.timestamp - timestamp) || feedValue <= 0 (contracts/v0.8/KeeperRegistry.sol#759)
	- (staleFallback && stalenessSeconds < block.timestamp - timestamp) || feedValue <= 0 (contracts/v0.8/KeeperRegistry.sol#765)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) uses assembly
	- INLINE ASM (@openzeppelin/contracts/utils/Address.sol#213-216)
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#274-283) uses assembly
	- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#278-280)
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#347-356) uses assembly
	- INLINE ASM (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#351-353)
KeeperRegistry._callWithExactGas(uint256,address,bytes) (contracts/v0.8/KeeperRegistry.sol#792-817) uses assembly
	- INLINE ASM (contracts/v0.8/KeeperRegistry.sol#797-815)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) has costly operations inside a loop:
	- delete s_upkeep[id] (contracts/v0.8/KeeperRegistry.sol#668)
KeeperRegistry.migrateUpkeeps(uint256[],address) (contracts/v0.8/KeeperRegistry.sol#648-683) has costly operations inside a loop:
	- delete s_checkData[id] (contracts/v0.8/KeeperRegistry.sol#669)
KeeperRegistry._createUpkeep(uint256,address,uint32,address,uint96,bytes) (contracts/v0.8/KeeperRegistry.sol#723-745) has costly operations inside a loop:
	- s_expectedLinkBalance = s_expectedLinkBalance + balance (contracts/v0.8/KeeperRegistry.sol#742)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
Address.functionCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#85-87) is never used and should be removed
Address.functionCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#95-101) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (@openzeppelin/contracts/utils/Address.sol#114-120) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139) is never used and should be removed
Address.functionDelegateCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193) is never used and should be removed
Address.functionStaticCall(address,bytes) (@openzeppelin/contracts/utils/Address.sol#147-149) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166) is never used and should be removed
Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (@openzeppelin/contracts/utils/Address.sol#201-221) is never used and should be removed
Context._msgData() (@openzeppelin/contracts/utils/Context.sol#21-23) is never used and should be removed
EnumerableSet._values(EnumerableSet.Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#142-144) is never used and should be removed
EnumerableSet.add(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#224-226) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#158-160) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#262-264) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#196-198) is never used and should be removed
EnumerableSet.contains(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#241-243) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#175-177) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#314-316) is never used and should be removed
EnumerableSet.length(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#248-250) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#182-184) is never used and should be removed
EnumerableSet.remove(EnumerableSet.AddressSet,address) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#234-236) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#168-170) is never used and should be removed
EnumerableSet.values(EnumerableSet.AddressSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#274-283) is never used and should be removed
EnumerableSet.values(EnumerableSet.Bytes32Set) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#208-210) is never used and should be removed
EnumerableSet.values(EnumerableSet.UintSet) (@openzeppelin/contracts/utils/structs/EnumerableSet.sol#347-356) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (@openzeppelin/contracts/utils/Address.sol#60-65):
	- (success) = recipient.call{value: amount}() (@openzeppelin/contracts/utils/Address.sol#63)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (@openzeppelin/contracts/utils/Address.sol#128-139):
	- (success,returndata) = target.call{value: value}(data) (@openzeppelin/contracts/utils/Address.sol#137)
Low level call in Address.functionStaticCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#157-166):
	- (success,returndata) = target.staticcall(data) (@openzeppelin/contracts/utils/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (@openzeppelin/contracts/utils/Address.sol#184-193):
	- (success,returndata) = target.delegatecall(data) (@openzeppelin/contracts/utils/Address.sol#191)
Low level call in KeeperRegistry.checkUpkeep(uint256,address) (contracts/v0.8/KeeperRegistry.sol#226-252):
	- (success,result) = upkeep.target.call{gas: s_storage.checkGasLimit}(callData) (contracts/v0.8/KeeperRegistry.sol#241)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Variable KeeperRegistry.LINK (contracts/v0.8/KeeperRegistry.sol#63) is not in mixedCase
Variable KeeperRegistry.LINK_ETH_FEED (contracts/v0.8/KeeperRegistry.sol#64) is not in mixedCase
Variable KeeperRegistry.FAST_GAS_FEED (contracts/v0.8/KeeperRegistry.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Loop condition i < s_keeperList.length (contracts/v0.8/KeeperRegistry.sol#488) should use cached array length instead of referencing `length` member of the storage array.
 Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#cache-array-length
INFO:Slither:0x02777053d6764996e594c3e88af1d58d5363a2e6 analyzed (20 contracts with 87 detectors), 56 result(s) found
Slither report for CrossChainController at `0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1-CrossChainController' running
INFO:Detectors:
CrossChainForwarder._bridgeTransaction(bytes32,bytes32,bytes,uint256,uint256,ICrossChainForwarder.ChainIdBridgeConfig[]) (src/contracts/CrossChainForwarder.sol#274-314) uses delegatecall to a input-controlled function id
	- (success,returnData) = bridgeAdapters[i].currentChainBridgeAdapter.delegatecall(abi.encodeWithSelector(IBaseAdapter.forwardMessage.selector,bridgeAdapters[i].destinationBridgeAdapter,gasLimit,destinationChainId,encodedTransaction)) (src/contracts/CrossChainForwarder.sol#284-294)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall
INFO:Detectors:
CrossChainForwarder._bridgeAdaptersByChain (src/contracts/CrossChainForwarder.sol#41) is never initialized. It is used in:
	- CrossChainForwarder.forwardMessage(uint256,address,uint256,bytes) (src/contracts/CrossChainForwarder.sol#105-144)
	- CrossChainForwarder.retryEnvelope(Envelope,uint256) (src/contracts/CrossChainForwarder.sol#147-177)
	- CrossChainForwarder.retryTransaction(bytes,uint256,address[]) (src/contracts/CrossChainForwarder.sol#180-231)
	- CrossChainForwarder.getForwarderBridgeAdaptersByChain(uint256) (src/contracts/CrossChainForwarder.sol#234-238)
	- CrossChainForwarder._enableBridgeAdapters(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]) (src/contracts/CrossChainForwarder.sol#320-385)
	- CrossChainForwarder._disableBridgeAdapters(ICrossChainForwarder.BridgeAdapterToDisable[]) (src/contracts/CrossChainForwarder.sol#391-421)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables
INFO:Detectors:
Reentrancy in CrossChainReceiver.receiveCrossChainMessage(bytes,uint256) (src/contracts/CrossChainReceiver.sol#151-220):
	External calls:
	- IBaseReceiverPortal(envelope.destination).receiveCrossChainMessage(envelope.origin,envelope.originChainId,envelope.message) (src/contracts/CrossChainReceiver.sol#206-217)
	State variables written after the call(s):
	- _envelopesState[envelopeId] = EnvelopeState.Confirmed (src/contracts/CrossChainReceiver.sol#215)
	CrossChainReceiver._envelopesState (src/contracts/CrossChainReceiver.sol#30) can be used in cross function reentrancies:
	- CrossChainReceiver.deliverEnvelope(Envelope) (src/contracts/CrossChainReceiver.sol#223-237)
	- CrossChainReceiver.getEnvelopeState(bytes32) (src/contracts/CrossChainReceiver.sol#112-114)
	- CrossChainReceiver.receiveCrossChainMessage(bytes,uint256) (src/contracts/CrossChainReceiver.sol#151-220)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
TransactionUtils.encode(Transaction).encodedTransaction (src/contracts/libs/EncodingUtils.sol#116) is a local variable never initialized
EnvelopeUtils.encode(Envelope).encodedEnvelope (src/contracts/libs/EncodingUtils.sol#47) is a local variable never initialized
CrossChainForwarder._enableBridgeAdapters(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]).configFound (src/contracts/CrossChainForwarder.sol#334) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
CrossChainReceiver._updateReceiverBridgeAdapters(ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],bool) (src/contracts/CrossChainReceiver.sol#286-317) ignores return value by _supportedChains.add(input.chainIds[j]) (src/contracts/CrossChainReceiver.sol#297)
CrossChainReceiver._updateReceiverBridgeAdapters(ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],bool) (src/contracts/CrossChainReceiver.sol#286-317) ignores return value by _supportedChains.remove(input.chainIds[j]) (src/contracts/CrossChainReceiver.sol#309)
CrossChainForwarder._enableBridgeAdapters(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]) (src/contracts/CrossChainForwarder.sol#320-385) ignores return value by Address.functionDelegateCall(bridgeAdapterConfigInput.currentChainBridgeAdapter,abi.encodeWithSelector(IBaseAdapter.setupPayments.selector),Errors.ADAPTER_PAYMENT_SETUP_FAILED) (src/contracts/CrossChainForwarder.sol#364-368)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
BaseCrossChainController._baseInitialize(address,address,ICrossChainReceiver.ConfirmationInput[],ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],address[]).owner (src/contracts/BaseCrossChainController.sol#34) shadows:
	- Ownable.owner() (lib/solidity-utils/src/contracts/oz-common/Ownable.sol#44-46) (function)
BaseCrossChainController._baseInitialize(address,address,ICrossChainReceiver.ConfirmationInput[],ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],address[]).guardian (src/contracts/BaseCrossChainController.sol#35) shadows:
	- OwnableWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol#24-26) (function)
	- IWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol#15) (function)
CrossChainController.initialize(address,address,ICrossChainReceiver.ConfirmationInput[],ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],address[]).owner (src/contracts/CrossChainController.sol#15) shadows:
	- Ownable.owner() (lib/solidity-utils/src/contracts/oz-common/Ownable.sol#44-46) (function)
CrossChainController.initialize(address,address,ICrossChainReceiver.ConfirmationInput[],ICrossChainReceiver.ReceiverBridgeAdapterConfigInput[],ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],address[]).guardian (src/contracts/CrossChainController.sol#16) shadows:
	- OwnableWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol#24-26) (function)
	- IWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol#15) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Rescuable.emergencyEtherTransfer(address,uint256).to (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34) lacks a zero-check on :
		- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Reentrancy in CrossChainForwarder._configureForwarderBasics(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],ICrossChainForwarder.BridgeAdapterToDisable[],address[],address[]) (src/contracts/CrossChainForwarder.sol#437-447):
	External calls:
	- _enableBridgeAdapters(bridgesToEnable) (src/contracts/CrossChainForwarder.sol#443)
		- (success,returndata) = target.delegatecall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#189)
		- Address.functionDelegateCall(bridgeAdapterConfigInput.currentChainBridgeAdapter,abi.encodeWithSelector(IBaseAdapter.setupPayments.selector),Errors.ADAPTER_PAYMENT_SETUP_FAILED) (src/contracts/CrossChainForwarder.sol#364-368)
	State variables written after the call(s):
	- _updateSenders(sendersToEnable,true) (src/contracts/CrossChainForwarder.sol#445)
		- _approvedSenders[senders[i]] = newState (src/contracts/CrossChainForwarder.sol#431)
	- _updateSenders(sendersToDisable,false) (src/contracts/CrossChainForwarder.sol#446)
		- _approvedSenders[senders[i]] = newState (src/contracts/CrossChainForwarder.sol#431)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in CrossChainForwarder._bridgeTransaction(bytes32,bytes32,bytes,uint256,uint256,ICrossChainForwarder.ChainIdBridgeConfig[]) (src/contracts/CrossChainForwarder.sol#274-314):
	External calls:
	- (success,returnData) = bridgeAdapters[i].currentChainBridgeAdapter.delegatecall(abi.encodeWithSelector(IBaseAdapter.forwardMessage.selector,bridgeAdapters[i].destinationBridgeAdapter,gasLimit,destinationChainId,encodedTransaction)) (src/contracts/CrossChainForwarder.sol#284-294)
	Event emitted after the call(s):
	- TransactionForwardingAttempted(transactionId,envelopeId,encodedTransaction,destinationChainId,bridgeAdapters[i].currentChainBridgeAdapter,bridgeAdapters[i].destinationBridgeAdapter,success,returnData) (src/contracts/CrossChainForwarder.sol#301-310)
Reentrancy in CrossChainForwarder._configureForwarderBasics(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[],ICrossChainForwarder.BridgeAdapterToDisable[],address[],address[]) (src/contracts/CrossChainForwarder.sol#437-447):
	External calls:
	- _enableBridgeAdapters(bridgesToEnable) (src/contracts/CrossChainForwarder.sol#443)
		- (success,returndata) = target.delegatecall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#189)
		- Address.functionDelegateCall(bridgeAdapterConfigInput.currentChainBridgeAdapter,abi.encodeWithSelector(IBaseAdapter.setupPayments.selector),Errors.ADAPTER_PAYMENT_SETUP_FAILED) (src/contracts/CrossChainForwarder.sol#364-368)
	Event emitted after the call(s):
	- BridgeAdapterUpdated(bridgeAdaptersToDisable[i].chainIds[j],bridgeAdaptersToDisable[i].bridgeAdapter,destinationBridgeAdapter,false) (src/contracts/CrossChainForwarder.sol#410-415)
		- _disableBridgeAdapters(bridgesToDisable) (src/contracts/CrossChainForwarder.sol#444)
	- SenderUpdated(senders[i],newState) (src/contracts/CrossChainForwarder.sol#432)
		- _updateSenders(sendersToEnable,true) (src/contracts/CrossChainForwarder.sol#445)
	- SenderUpdated(senders[i],newState) (src/contracts/CrossChainForwarder.sol#432)
		- _updateSenders(sendersToDisable,false) (src/contracts/CrossChainForwarder.sol#446)
Reentrancy in CrossChainForwarder._enableBridgeAdapters(ICrossChainForwarder.ForwarderBridgeAdapterConfigInput[]) (src/contracts/CrossChainForwarder.sol#320-385):
	External calls:
	- Address.functionDelegateCall(bridgeAdapterConfigInput.currentChainBridgeAdapter,abi.encodeWithSelector(IBaseAdapter.setupPayments.selector),Errors.ADAPTER_PAYMENT_SETUP_FAILED) (src/contracts/CrossChainForwarder.sol#364-368)
	Event emitted after the call(s):
	- BridgeAdapterUpdated(bridgeAdapterConfigInput.destinationChainId,bridgeAdapterConfigInput.currentChainBridgeAdapter,bridgeAdapterConfigInput.destinationBridgeAdapter,true) (src/contracts/CrossChainForwarder.sol#350-355)
	- BridgeAdapterUpdated(bridgeAdapterConfigInput.destinationChainId,bridgeAdapterConfigInput.currentChainBridgeAdapter,bridgeAdapterConfigInput.destinationBridgeAdapter,true) (src/contracts/CrossChainForwarder.sol#377-382)
Reentrancy in CrossChainReceiver.deliverEnvelope(Envelope) (src/contracts/CrossChainReceiver.sol#223-237):
	External calls:
	- IBaseReceiverPortal(envelope.destination).receiveCrossChainMessage(envelope.origin,envelope.originChainId,envelope.message) (src/contracts/CrossChainReceiver.sol#231-235)
	Event emitted after the call(s):
	- EnvelopeDeliveryAttempted(envelopeId,envelope,true) (src/contracts/CrossChainReceiver.sol#236)
Reentrancy in Rescuable.emergencyEtherTransfer(address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34-39):
	External calls:
	- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
	Event emitted after the call(s):
	- NativeTokensRescued(msg.sender,to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#38)
Reentrancy in Rescuable.emergencyTokenTransfer(address,address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#23-31):
	External calls:
	- IERC20(erc20Token).safeTransfer(to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#28)
	Event emitted after the call(s):
	- ERC20Rescued(msg.sender,erc20Token,to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#30)
Reentrancy in CrossChainReceiver.receiveCrossChainMessage(bytes,uint256) (src/contracts/CrossChainReceiver.sol#151-220):
	External calls:
	- IBaseReceiverPortal(envelope.destination).receiveCrossChainMessage(envelope.origin,envelope.originChainId,envelope.message) (src/contracts/CrossChainReceiver.sol#206-217)
	Event emitted after the call(s):
	- EnvelopeDeliveryAttempted(envelopeId,envelope,true) (src/contracts/CrossChainReceiver.sol#213)
	- EnvelopeDeliveryAttempted(envelopeId,envelope,false) (src/contracts/CrossChainReceiver.sol#216)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
CrossChainReceiver._updateMessagesValidityTimestamp(ICrossChainReceiver.ValidityTimestampInput[]) (src/contracts/CrossChainReceiver.sol#244-260) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(input.validityTimestamp > _configurationsByChain[input.chainId].configuration.validityTimestamp && input.validityTimestamp <= block.timestamp,Errors.INVALID_VALIDITY_TIMESTAMP) (src/contracts/CrossChainReceiver.sol#249-254)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
EnumerableSet.values(EnumerableSet.Bytes32Set) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#219-229) uses assembly
	- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#224-226)
EnumerableSet.values(EnumerableSet.AddressSet) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#293-303) uses assembly
	- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#298-300)
EnumerableSet.values(EnumerableSet.UintSet) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#367-377) uses assembly
	- INLINE ASM (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#372-374)
Address._revert(bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#235-247) uses assembly
	- INLINE ASM (lib/solidity-utils/src/contracts/oz-common/Address.sol#240-243)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#96-102) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#115-121) is never used and should be removed
Address.functionDelegateCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#174-176) is never used and should be removed
Address.functionStaticCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#146-151) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166) is never used and should be removed
Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#223-233) is never used and should be removed
Context._msgData() (lib/solidity-utils/src/contracts/oz-common/Context.sol#22-24) is never used and should be removed
EnumerableSet._at(EnumerableSet.Set,uint256) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#141-143) is never used and should be removed
EnumerableSet.add(EnumerableSet.Bytes32Set,bytes32) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#169-171) is never used and should be removed
EnumerableSet.at(EnumerableSet.AddressSet,uint256) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#281-283) is never used and should be removed
EnumerableSet.at(EnumerableSet.Bytes32Set,uint256) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#207-209) is never used and should be removed
EnumerableSet.at(EnumerableSet.UintSet,uint256) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#355-357) is never used and should be removed
EnumerableSet.contains(EnumerableSet.Bytes32Set,bytes32) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#186-188) is never used and should be removed
EnumerableSet.contains(EnumerableSet.UintSet,uint256) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#334-336) is never used and should be removed
EnumerableSet.length(EnumerableSet.Bytes32Set) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#193-195) is never used and should be removed
EnumerableSet.length(EnumerableSet.UintSet) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#341-343) is never used and should be removed
EnumerableSet.remove(EnumerableSet.Bytes32Set,bytes32) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#179-181) is never used and should be removed
EnumerableSet.values(EnumerableSet.Bytes32Set) (lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol#219-229) is never used and should be removed
Initializable._disableInitializers() (lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol#150-156) is never used and should be removed
OwnableWithGuardian._checkGuardian() (lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol#43-45) is never used and should be removed
SafeERC20._callOptionalReturnBool(IERC20,bytes) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#133-140) is never used and should be removed
SafeERC20.forceApprove(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#77-84) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#62-70) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#53-56) is never used and should be removed
SafeERC20.safePermit(IERC20Permit,address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#90-106) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#45-47) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66):
	- (success) = recipient.call{value: amount}() (lib/solidity-utils/src/contracts/oz-common/Address.sol#64)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#129-138):
	- (success,returndata) = target.call{value: value}(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#136)
Low level call in Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166):
	- (success,returndata) = target.staticcall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#184-191):
	- (success,returndata) = target.delegatecall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#189)
Low level call in SafeERC20._callOptionalReturnBool(IERC20,bytes) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#133-140):
	- (success,returndata) = address(token).call(data) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#138)
Low level call in Rescuable.emergencyEtherTransfer(address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34-39):
	- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
Low level call in CrossChainForwarder._bridgeTransaction(bytes32,bytes32,bytes,uint256,uint256,ICrossChainForwarder.ChainIdBridgeConfig[]) (src/contracts/CrossChainForwarder.sol#274-314):
	- (success,returnData) = bridgeAdapters[i].currentChainBridgeAdapter.delegatecall(abi.encodeWithSelector(IBaseAdapter.forwardMessage.selector,bridgeAdapters[i].destinationBridgeAdapter,gasLimit,destinationChainId,encodedTransaction)) (src/contracts/CrossChainForwarder.sol#284-294)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function IERC20Permit.DOMAIN_SEPARATOR() (lib/solidity-utils/src/contracts/oz-common/interfaces/IERC20Permit.sol#59) is not in mixedCase
Variable CrossChainForwarder.__FORWARDER_GAP (src/contracts/CrossChainForwarder.sol#45) is not in mixedCase
Variable CrossChainReceiver.__RECEIVER_GAP (src/contracts/CrossChainReceiver.sol#37) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x0bf5bbfae7808d329e0ba8277e0b746bbfda68f1 analyzed (25 contracts with 87 detectors), 64 result(s) found
Slither report for SameChainAdapter at `0x118DFD5418890c0332042ab05173Db4A2C1d283c`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x118dfd5418890c0332042ab05173db4a2c1d283c-SameChainAdapter' running
INFO:Detectors:
TransactionUtils.encode(Transaction).encodedTransaction (src/contracts/libs/EncodingUtils.sol#116) is a local variable never initialized
EnvelopeUtils.encode(Envelope).encodedEnvelope (src/contracts/libs/EncodingUtils.sol#47) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
EnvelopeUtils.encode(Envelope) (src/contracts/libs/EncodingUtils.sol#46-51) is never used and should be removed
EnvelopeUtils.getId(Envelope) (src/contracts/libs/EncodingUtils.sol#67-70) is never used and should be removed
EnvelopeUtils.getId(bytes) (src/contracts/libs/EncodingUtils.sol#77-79) is never used and should be removed
TransactionUtils.encode(Transaction) (src/contracts/libs/EncodingUtils.sol#113-120) is never used and should be removed
TransactionUtils.getEnvelopeId(Transaction) (src/contracts/libs/EncodingUtils.sol#164-166) is never used and should be removed
TransactionUtils.getId(Transaction) (src/contracts/libs/EncodingUtils.sol#136-139) is never used and should be removed
TransactionUtils.getId(bytes) (src/contracts/libs/EncodingUtils.sol#146-148) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Slither:0x118dfd5418890c0332042ab05173db4a2c1d283c analyzed (6 contracts with 87 detectors), 9 result(s) found
Slither report for EACAggregatorProxy at `0x169E633A2D1E6c10dD91238Ba11c4A708dfEF37C`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
    uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
    ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
      uint16 phaseId
      ^------------^
crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
  function addPhase(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
  function parseIds(
  ^ (Relevant source part starts here and spans across multiple lines).


INFO:Detectors:
AggregatorProxy.proposedGetRoundData(uint80) (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#353-367) ignores return value by proposedAggregator.getRoundData(_roundId) (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#366)
AggregatorProxy.proposedLatestRoundData() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#380-394) ignores return value by proposedAggregator.latestRoundData() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#393)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AggregatorProxy.getAnswer(uint256).phaseId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#189) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getAnswer(uint256).aggregator (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#190) shadows:
	- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getTimestamp(uint256).phaseId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#214) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getTimestamp(uint256).aggregator (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#215) shadows:
	- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getRoundData(uint80).phaseId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#280) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#283) shadows:
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#273) (return variable)
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#284) shadows:
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#274) (return variable)
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#285) shadows:
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#275) (return variable)
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#286) shadows:
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#276) (return variable)
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#331) shadows:
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#321) (return variable)
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#332) shadows:
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#322) (return variable)
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#333) shadows:
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#323) (return variable)
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#334) shadows:
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#324) (return variable)
AggregatorProxy.parseIds(uint256).phaseId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#513) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.addPhaseIds(uint80,int256,uint256,uint256,uint80,uint16).phaseId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#525) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#410-416) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#30) lacks a zero-check on :
		- pendingOwner = _to (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Parameter Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#30) is not in mixedCase
Parameter AggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#180) is not in mixedCase
Parameter AggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#205) is not in mixedCase
Parameter AggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#267) is not in mixedCase
Parameter AggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#353) is not in mixedCase
Parameter AggregatorProxy.proposeAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#459) is not in mixedCase
Parameter AggregatorProxy.confirmAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#473) is not in mixedCase
Parameter AggregatorProxy.setAggregator(address)._aggregator (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#487) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._phase (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#496) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._originalId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#497) is not in mixedCase
Parameter AggregatorProxy.parseIds(uint256)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#507) is not in mixedCase
Parameter EACAggregatorProxy.setController(address)._accessController (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#582) is not in mixedCase
Parameter EACAggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#638) is not in mixedCase
Parameter EACAggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#658) is not in mixedCase
Parameter EACAggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#710) is not in mixedCase
Parameter EACAggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0x169e633a2d1e6c10dd91238ba11c4a708dfef37c-EACAggregatorProxy.sol#776) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x169e633a2d1e6c10dd91238ba11c4a708dfef37c analyzed (7 contracts with 87 detectors), 34 result(s) found
Slither report for Governance_V2_5 at `0x323F2c8E227b3F0d88B047Ed16581fc0b6B9B1d7`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x323f2c8e227b3f0d88b047ed16581fc0b6b9b1d7-Governance_V2_5' running
INFO:Detectors:
Errors is re-used:
	- Errors (lib/aave-address-book/src/governance-v3/Errors.sol#4-102)
	- Errors (src/contracts/libraries/Errors.sol#9-109)
PayloadsControllerUtils is re-used:
	- PayloadsControllerUtils (lib/aave-address-book/src/governance-v3/PayloadsControllerUtils.sol#4-25)
	- PayloadsControllerUtils (src/contracts/payloads/PayloadsControllerUtils.sol#4-25)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#name-reused
INFO:Detectors:
TransactionUtils.encode(Transaction).encodedTransaction (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#116) is a local variable never initialized
EnvelopeUtils.encode(Envelope).encodedEnvelope (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#47) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
Governance_V2_5.forwardPayloadForExecution(PayloadsControllerUtils.Payload) (src/contracts/governance_2_5/Governance_V2_5.sol#35-61) ignores return value by ICrossChainForwarder(CROSS_CHAIN_CONTROLLER).forwardMessage(payload.chain,payload.payloadsController,GAS_LIMIT,abi.encode(payload.payloadId,payload.accessLevel,uint40(block.timestamp))) (src/contracts/governance_2_5/Governance_V2_5.sol#51-60)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Address._revert(bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#235-247) uses assembly
	- INLINE ASM (lib/solidity-utils/src/contracts/oz-common/Address.sol#240-243)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address._revert(bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#235-247) is never used and should be removed
Address.functionCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#86-88) is never used and should be removed
Address.functionCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#96-102) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#115-121) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#129-138) is never used and should be removed
Address.functionDelegateCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#184-191) is never used and should be removed
Address.functionStaticCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#146-151) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166) is never used and should be removed
Address.isContract(address) (lib/solidity-utils/src/contracts/oz-common/Address.sol#37-43) is never used and should be removed
Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#223-233) is never used and should be removed
Address.verifyCallResultFromTarget(address,bool,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#199-215) is never used and should be removed
EnvelopeUtils.decode(bytes) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#58-60) is never used and should be removed
EnvelopeUtils.encode(Envelope) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#46-51) is never used and should be removed
EnvelopeUtils.getId(Envelope) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#67-70) is never used and should be removed
EnvelopeUtils.getId(bytes) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#77-79) is never used and should be removed
Initializable._disableInitializers() (lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol#150-156) is never used and should be removed
TransactionUtils.decode(bytes) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#127-129) is never used and should be removed
TransactionUtils.encode(Transaction) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#113-120) is never used and should be removed
TransactionUtils.getEnvelope(Transaction) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#155-157) is never used and should be removed
TransactionUtils.getEnvelopeId(Transaction) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#164-166) is never used and should be removed
TransactionUtils.getId(Transaction) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#136-139) is never used and should be removed
TransactionUtils.getId(bytes) (lib/aave-delivery-infrastructure/src/contracts/libs/EncodingUtils.sol#146-148) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66):
	- (success) = recipient.call{value: amount}() (lib/solidity-utils/src/contracts/oz-common/Address.sol#64)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#129-138):
	- (success,returndata) = target.call{value: value}(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#136)
Low level call in Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166):
	- (success,returndata) = target.staticcall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#184-191):
	- (success,returndata) = target.delegatecall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function IAaveGovernanceV2.__abdicate() (lib/aave-address-book/src/common/IAaveGovernanceV2.sol#222) is not in mixedCase
Function IExecutorWithTimelock.GRACE_PERIOD() (lib/aave-address-book/src/common/IExecutorWithTimelock.sol#128) is not in mixedCase
Function IExecutorWithTimelock.VOTING_DURATION() (lib/aave-address-book/src/common/IExecutorWithTimelock.sol#130) is not in mixedCase
Function IExecutorWithTimelock.MINIMUM_DELAY() (lib/aave-address-book/src/common/IExecutorWithTimelock.sol#136) is not in mixedCase
Function IExecutorWithTimelock.MAXIMUM_DELAY() (lib/aave-address-book/src/common/IExecutorWithTimelock.sol#142) is not in mixedCase
Function IGovernanceCore.CANCELLATION_FEE_COLLECTOR() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#256) is not in mixedCase
Function IGovernanceCore.ACHIEVABLE_VOTING_PARTICIPATION() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#379) is not in mixedCase
Function IGovernanceCore.COOLDOWN_PERIOD() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#385) is not in mixedCase
Function IGovernanceCore.MIN_VOTING_DURATION() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#391) is not in mixedCase
Function IGovernanceCore.PRECISION_DIVIDER() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#397) is not in mixedCase
Function IGovernanceCore.VOTING_TOKENS_CAP() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#405) is not in mixedCase
Function IGovernanceCore.PROPOSAL_EXPIRATION_TIME() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#411) is not in mixedCase
Function IGovernanceCore.NAME() (lib/aave-address-book/src/governance-v3/IGovernanceCore.sol#417) is not in mixedCase
Function IPayloadsControllerCore.EXPIRATION_DELAY() (lib/aave-address-book/src/governance-v3/IPayloadsControllerCore.sol#147) is not in mixedCase
Function IPayloadsControllerCore.MAX_EXECUTION_DELAY() (lib/aave-address-book/src/governance-v3/IPayloadsControllerCore.sol#153) is not in mixedCase
Function IPayloadsControllerCore.MIN_EXECUTION_DELAY() (lib/aave-address-book/src/governance-v3/IPayloadsControllerCore.sol#159) is not in mixedCase
Function IPayloadsControllerCore.GRACE_PERIOD() (lib/aave-address-book/src/governance-v3/IPayloadsControllerCore.sol#165) is not in mixedCase
Function IVotingMachineWithProofs.REPRESENTATIVES_SLOT() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#191) is not in mixedCase
Function IVotingMachineWithProofs.GOVERNANCE() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#197) is not in mixedCase
Function IVotingMachineWithProofs.VOTING_ASSET_WITH_SLOT_RAW() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#203) is not in mixedCase
Function IVotingMachineWithProofs.DATA_WAREHOUSE() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#209) is not in mixedCase
Function IVotingMachineWithProofs.VOTING_STRATEGY() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#215) is not in mixedCase
Function IVotingMachineWithProofs.DOMAIN_SEPARATOR() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#222) is not in mixedCase
Function IVotingMachineWithProofs.VOTE_SUBMITTED_TYPEHASH() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#228) is not in mixedCase
Function IVotingMachineWithProofs.VOTE_SUBMITTED_BY_REPRESENTATIVE_TYPEHASH() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#234) is not in mixedCase
Function IVotingMachineWithProofs.VOTING_ASSET_WITH_SLOT_TYPEHASH() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#240) is not in mixedCase
Function IVotingMachineWithProofs.NAME() (lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol#246) is not in mixedCase
Function IVotingPortal.VOTING_MACHINE_CHAIN_ID() (lib/aave-address-book/src/governance-v3/IVotingPortal.sol#49) is not in mixedCase
Function IVotingPortal.VOTING_MACHINE() (lib/aave-address-book/src/governance-v3/IVotingPortal.sol#55) is not in mixedCase
Function IVotingPortal.GOVERNANCE() (lib/aave-address-book/src/governance-v3/IVotingPortal.sol#61) is not in mixedCase
Function IVotingPortal.CROSS_CHAIN_CONTROLLER() (lib/aave-address-book/src/governance-v3/IVotingPortal.sol#67) is not in mixedCase
Function IVotingStrategy.DATA_WAREHOUSE() (lib/aave-address-book/src/governance-v3/IVotingStrategy.sol#11) is not in mixedCase
Function IVotingStrategy.STK_AAVE_SLASHING_EXCHANGE_RATE_PRECISION() (lib/aave-address-book/src/governance-v3/IVotingStrategy.sol#17) is not in mixedCase
Function IVotingStrategy.STK_AAVE_SLASHING_EXCHANGE_RATE_SLOT() (lib/aave-address-book/src/governance-v3/IVotingStrategy.sol#23) is not in mixedCase
Function IVotingStrategy.POWER_SCALE_FACTOR() (lib/aave-address-book/src/governance-v3/IVotingStrategy.sol#29) is not in mixedCase
Contract Governance_V2_5 (src/contracts/governance_2_5/Governance_V2_5.sol#17-62) is not in CapWords
Contract IGovernance_V2_5 (src/contracts/governance_2_5/IGovernance_V2_5.sol#6-44) is not in CapWords
Function IGovernance_V2_5.CROSS_CHAIN_CONTROLLER() (src/contracts/governance_2_5/IGovernance_V2_5.sol#17) is not in mixedCase
Function IGovernance_V2_5.NAME() (src/contracts/governance_2_5/IGovernance_V2_5.sol#23) is not in mixedCase
Function IGovernance_V2_5.GAS_LIMIT() (src/contracts/governance_2_5/IGovernance_V2_5.sol#30) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable GovernanceV3Ethereum.EXECUTOR_LVL_1 (lib/aave-address-book/src/GovernanceV3Ethereum.sol#50) is too similar to GovernanceV3Ethereum.EXECUTOR_LVL_2 (lib/aave-address-book/src/GovernanceV3Ethereum.sol#53)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0x323f2c8e227b3f0d88b047ed16581fc0b6b9b1d7 analyzed (25 contracts with 87 detectors), 75 result(s) found
Slither report for PayloadsController at `0x7222182cB9c5320587b5148BF03eeE107AD64578`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7222182cb9c5320587b5148bf03eee107ad64578-PayloadsController' running
INFO:Detectors:
PayloadsControllerCore._getPayloadState(IPayloadsControllerCore.Payload) (src/contracts/payloads/PayloadsControllerCore.sol#227-246) uses a dangerous strict equality:
	- state == PayloadState.None || state >= PayloadState.Executed (src/contracts/payloads/PayloadsControllerCore.sol#231)
PayloadsControllerCore._getPayloadState(IPayloadsControllerCore.Payload) (src/contracts/payloads/PayloadsControllerCore.sol#227-246) uses a dangerous strict equality:
	- (state == PayloadState.Created && block.timestamp >= payload.expirationTime) || (state == PayloadState.Queued && block.timestamp >= payload.queuedAt + payload.delay + payload.gracePeriod) (src/contracts/payloads/PayloadsControllerCore.sol#236-240)
PayloadsControllerCore._queuePayload(uint40,PayloadsControllerUtils.AccessControl,uint40) (src/contracts/payloads/PayloadsControllerCore.sol#255-283) uses a dangerous strict equality:
	- require(bool,string)(_getPayloadState(payload) == PayloadState.Created,Errors.PAYLOAD_NOT_IN_CREATED_STATE) (src/contracts/payloads/PayloadsControllerCore.sol#261-264)
PayloadsControllerCore.executePayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#127-157) uses a dangerous strict equality:
	- require(bool,string)(_getPayloadState(payload) == PayloadState.Queued,Errors.PAYLOAD_NOT_IN_QUEUED_STATE) (src/contracts/payloads/PayloadsControllerCore.sol#130-133)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
PayloadsController.receiveCrossChainMessage(address,uint256,bytes).empty (src/contracts/payloads/PayloadsController.sol#69) is a local variable never initialized
PayloadsControllerCore.createPayload(IPayloadsControllerCore.ExecutionAction[]).maximumAccessLevelRequired (src/contracts/payloads/PayloadsControllerCore.sol#90) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
PayloadsControllerCore.executePayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#127-157) ignores return value by executor.executeTransaction{value: action.value}(action.target,action.value,action.signature,action.callData,action.withDelegateCall) (src/contracts/payloads/PayloadsControllerCore.sol#147-153)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
PayloadsControllerCore.initialize(address,address,IPayloadsControllerCore.UpdateExecutorInput[]).owner (src/contracts/payloads/PayloadsControllerCore.sol#63) shadows:
	- Ownable.owner() (lib/solidity-utils/src/contracts/oz-common/Ownable.sol#44-46) (function)
PayloadsControllerCore.initialize(address,address,IPayloadsControllerCore.UpdateExecutorInput[]).guardian (src/contracts/payloads/PayloadsControllerCore.sol#64) shadows:
	- OwnableWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/OwnableWithGuardian.sol#24-26) (function)
	- IWithGuardian.guardian() (lib/solidity-utils/src/contracts/access-control/interfaces/IWithGuardian.sol#15) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Rescuable.emergencyEtherTransfer(address,uint256).to (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34) lacks a zero-check on :
		- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
PayloadsControllerCore.executePayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#127-157) has external calls inside a loop: executor.executeTransaction{value: action.value}(action.target,action.value,action.signature,action.callData,action.withDelegateCall) (src/contracts/payloads/PayloadsControllerCore.sol#147-153)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in Rescuable.emergencyEtherTransfer(address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34-39):
	External calls:
	- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
	Event emitted after the call(s):
	- NativeTokensRescued(msg.sender,to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#38)
Reentrancy in Rescuable.emergencyTokenTransfer(address,address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#23-31):
	External calls:
	- IERC20(erc20Token).safeTransfer(to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#28)
	Event emitted after the call(s):
	- ERC20Rescued(msg.sender,erc20Token,to,amount) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#30)
Reentrancy in PayloadsControllerCore.executePayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#127-157):
	External calls:
	- executor.executeTransaction{value: action.value}(action.target,action.value,action.signature,action.callData,action.withDelegateCall) (src/contracts/payloads/PayloadsControllerCore.sol#147-153)
	Event emitted after the call(s):
	- PayloadExecuted(payloadId) (src/contracts/payloads/PayloadsControllerCore.sol#156)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
PayloadsControllerCore.executePayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#127-157) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(_getPayloadState(payload) == PayloadState.Queued,Errors.PAYLOAD_NOT_IN_QUEUED_STATE) (src/contracts/payloads/PayloadsControllerCore.sol#130-133)
	- require(bool,string)(block.timestamp > executionTime,Errors.TIMELOCK_NOT_FINISHED) (src/contracts/payloads/PayloadsControllerCore.sol#136)
	- i < payload.actions.length (src/contracts/payloads/PayloadsControllerCore.sol#141)
PayloadsControllerCore.cancelPayload(uint40) (src/contracts/payloads/PayloadsControllerCore.sol#160-173) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(payloadState < PayloadState.Executed && payloadState >= PayloadState.Created,Errors.PAYLOAD_NOT_IN_THE_CORRECT_STATE) (src/contracts/payloads/PayloadsControllerCore.sol#164-168)
PayloadsControllerCore._getPayloadState(IPayloadsControllerCore.Payload) (src/contracts/payloads/PayloadsControllerCore.sol#227-246) uses timestamp for comparisons
	Dangerous comparisons:
	- state == PayloadState.None || state >= PayloadState.Executed (src/contracts/payloads/PayloadsControllerCore.sol#231)
	- (state == PayloadState.Created && block.timestamp >= payload.expirationTime) || (state == PayloadState.Queued && block.timestamp >= payload.queuedAt + payload.delay + payload.gracePeriod) (src/contracts/payloads/PayloadsControllerCore.sol#236-240)
PayloadsControllerCore._queuePayload(uint40,PayloadsControllerUtils.AccessControl,uint40) (src/contracts/payloads/PayloadsControllerCore.sol#255-283) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(_getPayloadState(payload) == PayloadState.Created,Errors.PAYLOAD_NOT_IN_CREATED_STATE) (src/contracts/payloads/PayloadsControllerCore.sol#261-264)
	- require(bool,string)(accessLevel >= payload.maximumAccessLevelRequired,Errors.INVALID_PROPOSAL_ACCESS_LEVEL) (src/contracts/payloads/PayloadsControllerCore.sol#268-271)
	- require(bool,string)(proposalVoteActivationTimestamp > payload.createdAt,Errors.PAYLOAD_NOT_CREATED_BEFORE_PROPOSAL) (src/contracts/payloads/PayloadsControllerCore.sol#274-277)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address._revert(bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#235-247) uses assembly
	- INLINE ASM (lib/solidity-utils/src/contracts/oz-common/Address.sol#240-243)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#86-88) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#115-121) is never used and should be removed
Address.functionDelegateCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#174-176) is never used and should be removed
Address.functionDelegateCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#184-191) is never used and should be removed
Address.functionStaticCall(address,bytes) (lib/solidity-utils/src/contracts/oz-common/Address.sol#146-151) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166) is never used and should be removed
Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#223-233) is never used and should be removed
Context._msgData() (lib/solidity-utils/src/contracts/oz-common/Context.sol#22-24) is never used and should be removed
Initializable._disableInitializers() (lib/solidity-utils/src/contracts/transparent-proxy/Initializable.sol#150-156) is never used and should be removed
SafeCast.toInt104(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#901-904) is never used and should be removed
SafeCast.toInt112(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#883-886) is never used and should be removed
SafeCast.toInt120(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#865-868) is never used and should be removed
SafeCast.toInt128(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#847-850) is never used and should be removed
SafeCast.toInt136(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#829-832) is never used and should be removed
SafeCast.toInt144(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#811-814) is never used and should be removed
SafeCast.toInt152(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#793-796) is never used and should be removed
SafeCast.toInt16(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1099-1102) is never used and should be removed
SafeCast.toInt160(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#775-778) is never used and should be removed
SafeCast.toInt168(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#757-760) is never used and should be removed
SafeCast.toInt176(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#739-742) is never used and should be removed
SafeCast.toInt184(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#721-724) is never used and should be removed
SafeCast.toInt192(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#703-706) is never used and should be removed
SafeCast.toInt200(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#685-688) is never used and should be removed
SafeCast.toInt208(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#667-670) is never used and should be removed
SafeCast.toInt216(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#649-652) is never used and should be removed
SafeCast.toInt224(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#631-634) is never used and should be removed
SafeCast.toInt232(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#613-616) is never used and should be removed
SafeCast.toInt24(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1081-1084) is never used and should be removed
SafeCast.toInt240(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#595-598) is never used and should be removed
SafeCast.toInt248(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#577-580) is never used and should be removed
SafeCast.toInt256(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1131-1135) is never used and should be removed
SafeCast.toInt32(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1063-1066) is never used and should be removed
SafeCast.toInt40(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1045-1048) is never used and should be removed
SafeCast.toInt48(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1027-1030) is never used and should be removed
SafeCast.toInt56(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1009-1012) is never used and should be removed
SafeCast.toInt64(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#991-994) is never used and should be removed
SafeCast.toInt72(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#973-976) is never used and should be removed
SafeCast.toInt8(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#1117-1120) is never used and should be removed
SafeCast.toInt80(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#955-958) is never used and should be removed
SafeCast.toInt88(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#937-940) is never used and should be removed
SafeCast.toInt96(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#919-922) is never used and should be removed
SafeCast.toUint104(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#341-344) is never used and should be removed
SafeCast.toUint112(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#324-327) is never used and should be removed
SafeCast.toUint120(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#307-310) is never used and should be removed
SafeCast.toUint128(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#290-293) is never used and should be removed
SafeCast.toUint136(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#273-276) is never used and should be removed
SafeCast.toUint144(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#256-259) is never used and should be removed
SafeCast.toUint152(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#239-242) is never used and should be removed
SafeCast.toUint16(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#528-531) is never used and should be removed
SafeCast.toUint160(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#222-225) is never used and should be removed
SafeCast.toUint168(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#205-208) is never used and should be removed
SafeCast.toUint176(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#188-191) is never used and should be removed
SafeCast.toUint184(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#171-174) is never used and should be removed
SafeCast.toUint192(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#154-157) is never used and should be removed
SafeCast.toUint200(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#137-140) is never used and should be removed
SafeCast.toUint208(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#120-123) is never used and should be removed
SafeCast.toUint216(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#103-106) is never used and should be removed
SafeCast.toUint224(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#86-89) is never used and should be removed
SafeCast.toUint232(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#69-72) is never used and should be removed
SafeCast.toUint24(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#511-514) is never used and should be removed
SafeCast.toUint240(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#52-55) is never used and should be removed
SafeCast.toUint248(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#35-38) is never used and should be removed
SafeCast.toUint256(int256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#559-562) is never used and should be removed
SafeCast.toUint32(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#494-497) is never used and should be removed
SafeCast.toUint40(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#477-480) is never used and should be removed
SafeCast.toUint48(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#460-463) is never used and should be removed
SafeCast.toUint56(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#443-446) is never used and should be removed
SafeCast.toUint64(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#426-429) is never used and should be removed
SafeCast.toUint72(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#409-412) is never used and should be removed
SafeCast.toUint8(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#545-548) is never used and should be removed
SafeCast.toUint80(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#392-395) is never used and should be removed
SafeCast.toUint88(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#375-378) is never used and should be removed
SafeCast.toUint96(uint256) (lib/solidity-utils/src/contracts/oz-common/SafeCast.sol#358-361) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#41-50) is never used and should be removed
SafeERC20.safeDecreaseAllowance(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#60-70) is never used and should be removed
SafeERC20.safeIncreaseAllowance(IERC20,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#52-58) is never used and should be removed
SafeERC20.safePermit(IERC20Permit,address,address,uint256,uint256,uint8,bytes32,bytes32) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#72-86) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (lib/solidity-utils/src/contracts/oz-common/SafeERC20.sol#27-32) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (lib/solidity-utils/src/contracts/oz-common/Address.sol#61-66):
	- (success) = recipient.call{value: amount}() (lib/solidity-utils/src/contracts/oz-common/Address.sol#64)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#129-138):
	- (success,returndata) = target.call{value: value}(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#136)
Low level call in Address.functionStaticCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#159-166):
	- (success,returndata) = target.staticcall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (lib/solidity-utils/src/contracts/oz-common/Address.sol#184-191):
	- (success,returndata) = target.delegatecall(data) (lib/solidity-utils/src/contracts/oz-common/Address.sol#189)
Low level call in Rescuable.emergencyEtherTransfer(address,uint256) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#34-39):
	- (success) = to.call{value: amount}(new bytes(0)) (lib/solidity-utils/src/contracts/utils/Rescuable.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Function IERC20Permit.DOMAIN_SEPARATOR() (lib/solidity-utils/src/contracts/oz-common/interfaces/draft-IERC20Permit.sol#60) is not in mixedCase
Variable PayloadsController.MESSAGE_ORIGINATOR (src/contracts/payloads/PayloadsController.sol#16) is not in mixedCase
Variable PayloadsController.CROSS_CHAIN_CONTROLLER (src/contracts/payloads/PayloadsController.sol#19) is not in mixedCase
Variable PayloadsController.ORIGIN_CHAIN_ID (src/contracts/payloads/PayloadsController.sol#22) is not in mixedCase
Function PayloadsControllerCore.MIN_EXECUTION_DELAY() (src/contracts/payloads/PayloadsControllerCore.sol#53-55) is not in mixedCase
Function PayloadsControllerCore.MAX_EXECUTION_DELAY() (src/contracts/payloads/PayloadsControllerCore.sol#58-60) is not in mixedCase
Function IPayloadsController.CROSS_CHAIN_CONTROLLER() (src/contracts/payloads/interfaces/IPayloadsController.sol#18) is not in mixedCase
Function IPayloadsController.ORIGIN_CHAIN_ID() (src/contracts/payloads/interfaces/IPayloadsController.sol#24) is not in mixedCase
Function IPayloadsController.MESSAGE_ORIGINATOR() (src/contracts/payloads/interfaces/IPayloadsController.sol#30) is not in mixedCase
Function IPayloadsControllerCore.EXPIRATION_DELAY() (src/contracts/payloads/interfaces/IPayloadsControllerCore.sol#169) is not in mixedCase
Function IPayloadsControllerCore.MAX_EXECUTION_DELAY() (src/contracts/payloads/interfaces/IPayloadsControllerCore.sol#175) is not in mixedCase
Function IPayloadsControllerCore.MIN_EXECUTION_DELAY() (src/contracts/payloads/interfaces/IPayloadsControllerCore.sol#181) is not in mixedCase
Function IPayloadsControllerCore.GRACE_PERIOD() (src/contracts/payloads/interfaces/IPayloadsControllerCore.sol#187) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x7222182cb9c5320587b5148bf03eee107ad64578 analyzed (20 contracts with 87 detectors), 116 result(s) found
Slither report for AccessControlledOffchainAggregator at `0x785433d8b06D77D68dF6be63944742130A4530d1`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x785433d8b06d77d68df6be63944742130a4530d1-AccessControlledOffchainAggregator' running
Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
      int192 latestAnswer,
      ^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
  function latestAnswer()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
      uint64 latestTimestamp
      ^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
  function latestTimestamp()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
    string memory description
    ^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
  function description()
  ^ (Relevant source part starts here and spans across multiple lines).


INFO:Detectors:
OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623) passes array OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) by reference to OffchainAggregatorBilling.oracleRewards(bytes,uint16[31]) (OffchainAggregatorBilling.sol#392-406) which only takes arrays by value
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- s_gasReimbursementsLinkWei[oracle.index] = 1 (OffchainAggregatorBilling.sol#355)
	OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- s_oracleObservationsCounts[oracle.index] = 1 (OffchainAggregatorBilling.sol#354)
	OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	State variables written after the call(s):
	- s_gasReimbursementsLinkWei = gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#389)
	OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- s_oracleObservationsCounts = observationsCounts (OffchainAggregatorBilling.sol#388)
	OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
	External calls:
	- payOracles() (OffchainAggregatorBilling.sol#225)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	State variables written after the call(s):
	- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
		- s_billing = Billing(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#198-199)
	OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.getBilling() (OffchainAggregatorBilling.sol#238-257)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#189-202)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- delete s_oracles[signer] (OffchainAggregator.sol#165)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_oracles[_signers[i]] = Oracle(uint8(i),Role.Signer) (OffchainAggregator.sol#176)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_oracles[_transmitters[i]] = Oracle(uint8(i),Role.Transmitter) (OffchainAggregator.sol#182)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_signers.pop() (OffchainAggregator.sol#167)
	OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- s_signers.push(_signers[i]) (OffchainAggregator.sol#183)
	OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- s_transmitters.pop() (OffchainAggregator.sol#168)
	OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
	- s_transmitters.push(_transmitters[i]) (OffchainAggregator.sol#184)
	OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
	External calls:
	- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
		- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
	State variables written after the call(s):
	- s_hotVars = r.hotVars (OffchainAggregator.sol#641)
	OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) can be used in cross function reentrancies:
	- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661)
	- OffchainAggregator.latestConfigDetails() (OffchainAggregator.sol#235-245)
	- OffchainAggregator.latestRound() (OffchainAggregator.sol#679-687)
	- OffchainAggregator.latestRoundData() (OffchainAggregator.sol#791-817)
	- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674)
	- OffchainAggregator.latestTransmissionDetails() (OffchainAggregator.sol#454-473)
	- OffchainAggregator.requestNewRound() (OffchainAggregator.sol#385-398)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).counts (OffchainAggregatorBilling.sol#162) is a local variable never initialized
OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32).r (OffchainAggregator.sol#526) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).gas (OffchainAggregatorBilling.sol#163) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
OffchainAggregator.validateAnswer(uint32,int256) (OffchainAggregator.sol#309-328) ignores return value by av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AccessControlledOffchainAggregator.constructor(uint32,uint32,uint32,uint32,uint32,address,address,int192,int192,AccessControllerInterface,AccessControllerInterface,uint8,string).description (AccessControlledOffchainAggregator.sol#25) shadows:
	- AccessControlledOffchainAggregator.description() (AccessControlledOffchainAggregator.sol#108-116) (function)
	- OffchainAggregator.description() (OffchainAggregator.sol#740-748) (function)
	- AggregatorV3Interface.description() (AggregatorV3Interface.sol#7) (function)
OffchainAggregator.latestTransmissionDetails().latestAnswer (OffchainAggregator.sol#461) shadows:
	- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661) (function)
	- AggregatorInterface.latestAnswer() (AggregatorInterface.sol#5) (function)
OffchainAggregator.latestTransmissionDetails().latestTimestamp (OffchainAggregator.sol#462) shadows:
	- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674) (function)
	- AggregatorInterface.latestTimestamp() (AggregatorInterface.sol#6) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (Owned.sol#30) lacks a zero-check on :
		- pendingOwner = _to (Owned.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358) has external calls inside a loop: require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- s_configCount += 1 (OffchainAggregator.sol#189)
	- s_hotVars.threshold = _threshold (OffchainAggregator.sol#186)
	- s_hotVars.latestConfigDigest = configDigestFromConfigData(address(this),configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#192-200)
	- s_hotVars.latestEpochAndRound = 0 (OffchainAggregator.sol#201)
	- s_latestConfigBlockNumber = uint32(block.number) (OffchainAggregator.sol#188)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
	External calls:
	- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
		- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
	State variables written after the call(s):
	- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
		- s_gasReimbursementsLinkWei[txOracle.index] = s_gasReimbursementsLinkWei[txOracle.index] + gasCostLinkWei + uint256(billing.linkGweiPerTransmission) * (1000000000) (OffchainAggregatorBilling.sol#615-617)
	- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
		- s_oracleObservationsCounts = oracleRewards(observers,s_oracleObservationsCounts) (OffchainAggregatorBilling.sol#580-581)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	Event emitted after the call(s):
	- OraclePaid(_transmitter,payee,linkWeiAmount) (OffchainAggregatorBilling.sol#356)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	Event emitted after the call(s):
	- OraclePaid(transmitters[transmitteridx],payee,linkWeiAmount) (OffchainAggregatorBilling.sol#384)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
	External calls:
	- payOracles() (OffchainAggregatorBilling.sol#225)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	Event emitted after the call(s):
	- BillingSet(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#200-201)
		- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	Event emitted after the call(s):
	- ConfigSet(previousConfigBlockNumber,configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#203-211)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- s_transmitters.pop() (OffchainAggregator.sol#168)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
OffchainAggregator.decodeReport(bytes) (OffchainAggregator.sol#423-434) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Parameter AccessControlledOffchainAggregator.getAnswer(uint256)._roundId (AccessControlledOffchainAggregator.sol#82) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getTimestamp(uint256)._roundId (AccessControlledOffchainAggregator.sol#93) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getRoundData(uint80)._roundId (AccessControlledOffchainAggregator.sol#119) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#150) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#151) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#152) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#153) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encoded (OffchainAggregator.sol#154) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._contractAddress (OffchainAggregator.sol#215) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._configCount (OffchainAggregator.sol#216) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#217) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#218) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#219) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#220) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfig (OffchainAggregator.sol#221) is not in mixedCase
Parameter OffchainAggregator.setValidator(address)._newValidator (OffchainAggregator.sol#296) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._aggregatorRoundId (OffchainAggregator.sol#310) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._answer (OffchainAggregator.sol#311) is not in mixedCase
Parameter OffchainAggregator.setRequesterAccessController(AccessControllerInterface)._requesterAccessController (OffchainAggregator.sol#368) is not in mixedCase
Parameter OffchainAggregator.decodeReport(bytes)._report (OffchainAggregator.sol#423) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._report (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._rs (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._ss (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._report (OffchainAggregator.sol#511) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._ss (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rawVs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.getAnswer(uint256)._roundId (OffchainAggregator.sol#693) is not in mixedCase
Parameter OffchainAggregator.getTimestamp(uint256)._roundId (OffchainAggregator.sol#708) is not in mixedCase
Parameter OffchainAggregator.getRoundData(uint80)._roundId (OffchainAggregator.sol#759) is not in mixedCase
Constant OffchainAggregator.maxUint32 (OffchainAggregator.sol#19) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#190) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#191) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#192) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#193) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#194) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#214) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#215) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#216) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#217) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#218) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessControllerInternal(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#266) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessController(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#284) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is not in mixedCase
Parameter OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is not in mixedCase
Parameter OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._recipient (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._amount (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.oracleObservationCount(address)._signerOrTransmitter (OffchainAggregatorBilling.sol#559) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._transmitters (OffchainAggregatorBilling.sol#660) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._payees (OffchainAggregatorBilling.sol#661) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._proposed (OffchainAggregatorBilling.sol#690) is not in mixedCase
Parameter OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._x (OffchainAggregatorBilling.sol#728) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._y (OffchainAggregatorBilling.sol#728) is not in mixedCase
Constant OffchainAggregatorBilling.maxNumOracles (OffchainAggregatorBilling.sol#45) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregatorBilling.LINK (OffchainAggregatorBilling.sol#71) is not in mixedCase
Constant OffchainAggregatorBilling.maxUint16 (OffchainAggregatorBilling.sol#145) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.maxUint128 (OffchainAggregatorBilling.sol#146) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.accountingGasCost (OffchainAggregatorBilling.sol#435) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter Owned.transferOwnership(address)._to (Owned.sol#30) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._user (SimpleReadAccessController.sol#24) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._calldata (SimpleReadAccessController.sol#25) is not in mixedCase
Parameter SimpleWriteAccessController.hasAccess(address,bytes)._user (SimpleWriteAccessController.sol#34) is not in mixedCase
Parameter SimpleWriteAccessController.addAccess(address)._user (SimpleWriteAccessController.sol#50) is not in mixedCase
Parameter SimpleWriteAccessController.addAccessInternal(address)._user (SimpleWriteAccessController.sol#54) is not in mixedCase
Parameter SimpleWriteAccessController.removeAccess(address)._user (SimpleWriteAccessController.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0x785433d8b06d77d68df6be63944742130a4530d1 analyzed (12 contracts with 87 detectors), 104 result(s) found
Slither report for InitializableAdminUpgradeabilityProxy (Aave) at `0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9` with implementation AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9-InitializableAdminUpgradeabilityProxy' running
Warning: contracts/open-zeppelin/Address.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseUpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/Proxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/SafeMath.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/UpgradeabilityProxy.sol: Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing "SPDX-License-Identifier: <SPDX-License>" to each source file. Use "SPDX-License-Identifier: UNLICENSED" for non-open-source code. Please see https://spdx.org for more information.

Warning: contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol:13:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract BaseAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol:11:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol:12:1: Warning: This contract has a payable fallback function, but no receive ether function. Consider adding a receive ether function.
contract InitializableAdminUpgradeabilityProxy is BaseAdminUpgradeabilityProxy, InitializableUpgradeabilityProxy {
^ (Relevant source part starts here and spans across multiple lines).
contracts/open-zeppelin/Proxy.sol:15:3: The payable fallback function is defined here.
  fallback () payable external {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: contracts/utils/MockTransferHook.sol:9:25: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                        ^----------^

Warning: contracts/utils/MockTransferHook.sol:9:39: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                                      ^--------^

Warning: contracts/utils/MockTransferHook.sol:9:51: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    function onTransfer(address from, address to, uint256 amount) external override {
                                                  ^------------^


INFO:Detectors:
InitializableUpgradeabilityProxy.initialize(address,bytes) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20-28) uses delegatecall to a input-controlled function id
	- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#controlled-delegatecall
INFO:Detectors:
BaseAdminUpgradeabilityProxy.admin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#45-47) calls BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
BaseAdminUpgradeabilityProxy.implementation() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#52-54) calls BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
BaseAdminUpgradeabilityProxy.changeAdmin(address) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#61-65) calls BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
BaseAdminUpgradeabilityProxy.upgradeTo(address) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#72-74) calls BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
BaseAdminUpgradeabilityProxy.upgradeToAndCall(address,bytes) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#85-89) calls BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) calls Proxy._fallback() (contracts/open-zeppelin/Proxy.sol#63-66) which halt the execution return(uint256,uint256)(0,returndatasize()()) (contracts/open-zeppelin/Proxy.sol#47)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-assembly-return
INFO:Detectors:
LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68) ignores return value by LEND.transferFrom(msg.sender,address(this),amount) (contracts/token/LendToAaveMigrator.sol#65)
LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68) ignores return value by AAVE.transfer(msg.sender,amount.div(LEND_AAVE_RATIO)) (contracts/token/LendToAaveMigrator.sol#66)
DoubleTransferHelper.doubleSend(address,uint256,uint256) (contracts/utils/DoubleTransferHelper.sol#14-17) ignores return value by AAVE.transfer(to,amount1) (contracts/utils/DoubleTransferHelper.sol#15)
DoubleTransferHelper.doubleSend(address,uint256,uint256) (contracts/utils/DoubleTransferHelper.sol#14-17) ignores return value by AAVE.transfer(to,amount2) (contracts/utils/DoubleTransferHelper.sol#16)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unchecked-transfer
INFO:Detectors:
AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153) uses a dangerous strict equality:
	- ownerCountOfSnapshots != 0 && snapshotsOwner[ownerCountOfSnapshots.sub(1)].blockNumber == currentBlock (contracts/token/AaveToken.sol#145)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
Reentrancy in AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85):
	External calls:
	- _mint(migrator,MIGRATION_AMOUNT) (contracts/token/AaveToken.sol#83)
		- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
	State variables written after the call(s):
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- _balances[account] = _balances[account].add(amount) (contracts/open-zeppelin/ERC20.sol#235)
	ERC20._balances (contracts/open-zeppelin/ERC20.sol#38) can be used in cross function reentrancies:
	- ERC20._mint(address,uint256) (contracts/open-zeppelin/ERC20.sol#229-237)
	- ERC20._transfer(address,address,uint256) (contracts/open-zeppelin/ERC20.sol#209-218)
	- ERC20.balanceOf(address) (contracts/open-zeppelin/ERC20.sol#105-107)
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- _countsSnapshots[owner] = ownerCountOfSnapshots.add(1) (contracts/token/AaveToken.sol#149)
	AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38) can be used in cross function reentrancies:
	- AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38)
	- AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153)
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- snapshotsOwner[ownerCountOfSnapshots.sub(1)].value = newValue (contracts/token/AaveToken.sol#146)
		- snapshotsOwner[ownerCountOfSnapshots] = Snapshot(currentBlock,newValue) (contracts/token/AaveToken.sol#148)
	AaveToken._snapshots (contracts/token/AaveToken.sol#36) can be used in cross function reentrancies:
	- AaveToken._snapshots (contracts/token/AaveToken.sol#36)
	- AaveToken._writeSnapshot(address,uint128,uint128) (contracts/token/AaveToken.sol#138-153)
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- _totalSupply = _totalSupply.add(amount) (contracts/open-zeppelin/ERC20.sol#234)
	ERC20._totalSupply (contracts/open-zeppelin/ERC20.sol#42) can be used in cross function reentrancies:
	- ERC20._mint(address,uint256) (contracts/open-zeppelin/ERC20.sol#229-237)
	- ERC20.totalSupply() (contracts/open-zeppelin/ERC20.sol#98-100)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
ERC20.constructor(string,string).name (contracts/open-zeppelin/ERC20.sol#57) shadows:
	- ERC20.name() (contracts/open-zeppelin/ERC20.sol#66-68) (function)
ERC20.constructor(string,string).symbol (contracts/open-zeppelin/ERC20.sol#57) shadows:
	- ERC20.symbol() (contracts/open-zeppelin/ERC20.sol#74-76) (function)
InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._admin (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) shadows:
	- BaseAdminUpgradeabilityProxy._admin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#94-99) (function)
MintableErc20.constructor(string,string,uint8).name (contracts/utils/MintableErc20.sol#11) shadows:
	- ERC20.name() (contracts/open-zeppelin/ERC20.sol#66-68) (function)
MintableErc20.constructor(string,string,uint8).symbol (contracts/utils/MintableErc20.sol#11) shadows:
	- ERC20.symbol() (contracts/open-zeppelin/ERC20.sol#74-76) (function)
MintableErc20.constructor(string,string,uint8).decimals (contracts/utils/MintableErc20.sol#11) shadows:
	- ERC20.decimals() (contracts/open-zeppelin/ERC20.sol#91-93) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
InitializableUpgradeabilityProxy.initialize(address,bytes)._logic (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) lacks a zero-check on :
		- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
BaseAdminUpgradeabilityProxy.upgradeToAndCall(address,bytes).newImplementation (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#85) lacks a zero-check on :
		- (success) = newImplementation.delegatecall(data) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#87)
UpgradeabilityProxy.constructor(address,bytes)._logic (contracts/open-zeppelin/UpgradeabilityProxy.sol#19) lacks a zero-check on :
		- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/UpgradeabilityProxy.sol#23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Modifier BaseAdminUpgradeabilityProxy.ifAdmin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#34-40) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Reentrancy in AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85):
	External calls:
	- _mint(migrator,MIGRATION_AMOUNT) (contracts/token/AaveToken.sol#83)
		- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
	- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
		- aaveGovernance.onTransfer(from,to,amount) (contracts/token/AaveToken.sol#181)
	Event emitted after the call(s):
	- SnapshotDone(owner,oldValue,newValue) (contracts/token/AaveToken.sol#152)
		- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
	- Transfer(address(0),account,amount) (contracts/open-zeppelin/ERC20.sol#236)
		- _mint(distributor,DISTRIBUTION_AMOUNT) (contracts/token/AaveToken.sol#84)
Reentrancy in LendToAaveMigrator.migrateFromLEND(uint256) (contracts/token/LendToAaveMigrator.sol#61-68):
	External calls:
	- LEND.transferFrom(msg.sender,address(this),amount) (contracts/token/LendToAaveMigrator.sol#65)
	- AAVE.transfer(msg.sender,amount.div(LEND_AAVE_RATIO)) (contracts/token/LendToAaveMigrator.sol#66)
	Event emitted after the call(s):
	- LendMigrated(msg.sender,amount) (contracts/token/LendToAaveMigrator.sol#67)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
AaveToken.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (contracts/token/AaveToken.sol#98-123) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(block.timestamp <= deadline,INVALID_EXPIRATION) (contracts/token/AaveToken.sol#109)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.isContract(address) (contracts/open-zeppelin/Address.sol#24-33) uses assembly
	- INLINE ASM (contracts/open-zeppelin/Address.sol#31)
BaseAdminUpgradeabilityProxy._admin() (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#94-99) uses assembly
	- INLINE ASM (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#96-98)
BaseAdminUpgradeabilityProxy._setAdmin(address) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#105-111) uses assembly
	- INLINE ASM (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#108-110)
BaseUpgradeabilityProxy._implementation() (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#30-35) uses assembly
	- INLINE ASM (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#32-34)
BaseUpgradeabilityProxy._setImplementation(address) (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#50-58) uses assembly
	- INLINE ASM (contracts/open-zeppelin/BaseUpgradeabilityProxy.sol#55-57)
Proxy._delegate(address) (contracts/open-zeppelin/Proxy.sol#30-49) uses assembly
	- INLINE ASM (contracts/open-zeppelin/Proxy.sol#31-48)
AaveToken.initialize(address,address,ITransferHook) (contracts/token/AaveToken.sol#59-85) uses assembly
	- INLINE ASM (contracts/token/AaveToken.sol#68-70)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.sendValue(address,uint256) (contracts/open-zeppelin/Address.sol#51-57) is never used and should be removed
Context._msgData() (contracts/open-zeppelin/Context.sol#20-23) is never used and should be removed
ERC20._burn(address,uint256) (contracts/open-zeppelin/ERC20.sol#250-258) is never used and should be removed
SafeMath.mod(uint256,uint256) (contracts/open-zeppelin/SafeMath.sol#131-133) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (contracts/open-zeppelin/SafeMath.sol#146-149) is never used and should be removed
SafeMath.mul(uint256,uint256) (contracts/open-zeppelin/SafeMath.sol#71-83) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (contracts/open-zeppelin/Address.sol#51-57):
	- (success) = recipient.call{value: amount}() (contracts/open-zeppelin/Address.sol#55)
Low level call in BaseAdminUpgradeabilityProxy.upgradeToAndCall(address,bytes) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#85-89):
	- (success) = newImplementation.delegatecall(data) (contracts/open-zeppelin/BaseAdminUpgradeabilityProxy.sol#87)
Low level call in InitializableUpgradeabilityProxy.initialize(address,bytes) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20-28):
	- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#25)
Low level call in UpgradeabilityProxy.constructor(address,bytes) (contracts/open-zeppelin/UpgradeabilityProxy.sol#19-26):
	- (success) = _logic.delegatecall(_data) (contracts/open-zeppelin/UpgradeabilityProxy.sol#23)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
DoubleTransferHelper (contracts/utils/DoubleTransferHelper.sol#6-19) should inherit from VersionedInitializable (contracts/utils/VersionedInitializable.sol#18-44)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-inheritance
INFO:Detectors:
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._logic (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._admin (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableAdminUpgradeabilityProxy.initialize(address,address,bytes)._data (contracts/open-zeppelin/InitializableAdminUpgradeabilityProxy.sol#22) is not in mixedCase
Parameter InitializableUpgradeabilityProxy.initialize(address,bytes)._logic (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) is not in mixedCase
Parameter InitializableUpgradeabilityProxy.initialize(address,bytes)._data (contracts/open-zeppelin/InitializableUpgradeabilityProxy.sol#20) is not in mixedCase
Variable AaveToken._nonces (contracts/token/AaveToken.sol#34) is not in mixedCase
Variable AaveToken._snapshots (contracts/token/AaveToken.sol#36) is not in mixedCase
Variable AaveToken._countsSnapshots (contracts/token/AaveToken.sol#38) is not in mixedCase
Variable AaveToken._aaveGovernance (contracts/token/AaveToken.sol#43) is not in mixedCase
Variable AaveToken.DOMAIN_SEPARATOR (contracts/token/AaveToken.sol#45) is not in mixedCase
Variable LendToAaveMigrator.AAVE (contracts/token/LendToAaveMigrator.sol#17) is not in mixedCase
Variable LendToAaveMigrator.LEND (contracts/token/LendToAaveMigrator.sol#18) is not in mixedCase
Variable LendToAaveMigrator.LEND_AAVE_RATIO (contracts/token/LendToAaveMigrator.sol#19) is not in mixedCase
Variable LendToAaveMigrator._totalLendMigrated (contracts/token/LendToAaveMigrator.sol#22) is not in mixedCase
Variable DoubleTransferHelper.AAVE (contracts/utils/DoubleTransferHelper.sol#8) is not in mixedCase
Variable VersionedInitializable.______gap (contracts/utils/VersionedInitializable.sol#43) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (contracts/open-zeppelin/Context.sol#21)" inContext (contracts/open-zeppelin/Context.sol#15-25)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Slither:0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9 analyzed (19 contracts with 87 detectors), 61 result(s) found
Slither report for AaveTokenV2 at `0x96F68837877fd0414B55050c9e794AECdBcfCA59`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x96f68837877fd0414b55050c9e794aecdbcfca59-AaveTokenV2' running
Warning: src/contracts/AaveTokenV2.sol:453:18: Warning: This declaration shadows an existing declaration.
    constructor (string memory name, string memory symbol) public {
                 ^----------------^
src/contracts/AaveTokenV2.sol:462:5: The shadowed declaration is here:
    function name() public view returns (string memory) {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:453:38: Warning: This declaration shadows an existing declaration.
    constructor (string memory name, string memory symbol) public {
                                     ^------------------^
src/contracts/AaveTokenV2.sol:470:5: The shadowed declaration is here:
    function symbol() public view returns (string memory) {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:35:3: Warning: Interface functions are implicitly "virtual"
  function delegateByType(address delegatee, DelegationType delegationType) external virtual;
  ^-----------------------------------------------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:40:3: Warning: Interface functions are implicitly "virtual"
  function delegate(address delegatee) external virtual;
  ^----------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:45:3: Warning: Interface functions are implicitly "virtual"
  function getDelegateeByType(address delegator, DelegationType delegationType)
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:56:3: Warning: Interface functions are implicitly "virtual"
  function getPowerCurrent(address user, DelegationType delegationType)
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:66:3: Warning: Interface functions are implicitly "virtual"
  function getPowerAtBlock(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:75:3: Warning: Interface functions are implicitly "virtual"
  function totalSupplyAt(uint256 blockNumber) external virtual view returns (uint256);
  ^----------------------------------------------------------------------------------^

Warning: src/contracts/AaveTokenV2.sol:453:5: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
    constructor (string memory name, string memory symbol) public {
    ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:1164:3: Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it "abstract" is sufficient.
  constructor() ERC20(NAME, SYMBOL) public {
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: src/contracts/AaveTokenV2.sol:913:26: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
  function totalSupplyAt(uint256 blockNumber) external override view returns (uint256) {
                         ^-----------------^

Warning: src/contracts/AaveTokenV2.sol:1079:5: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.
    uint128 oldValue,
    ^--------------^


INFO:Detectors:
AaveTokenV2._votingSnapshots (src/contracts/AaveTokenV2.sol#1137) is never initialized. It is used in:
	- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._votingSnapshotsCounts (src/contracts/AaveTokenV2.sol#1139) is never initialized. It is used in:
	- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._aaveGovernance (src/contracts/AaveTokenV2.sol#1144) is never initialized. It is used in:
	- AaveTokenV2._beforeTokenTransfer(address,address,uint256) (src/contracts/AaveTokenV2.sol#1236-1266)
AaveTokenV2.DOMAIN_SEPARATOR (src/contracts/AaveTokenV2.sol#1146) is never initialized. It is used in:
	- AaveTokenV2.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1194-1218)
	- AaveTokenV2.delegateByTypeBySig(address,IGovernancePowerDelegationToken.DelegationType,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1299-1317)
	- AaveTokenV2.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1328-1344)
AaveTokenV2._propositionPowerSnapshots (src/contracts/AaveTokenV2.sol#1157) is never initialized. It is used in:
	- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
AaveTokenV2._propositionPowerSnapshotsCounts (src/contracts/AaveTokenV2.sol#1158) is never initialized. It is used in:
	- AaveTokenV2._getDelegationDataByType(IGovernancePowerDelegationToken.DelegationType) (src/contracts/AaveTokenV2.sol#1268-1287)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-state-variables
INFO:Detectors:
GovernancePowerDelegationERC20._searchByBlockNumber(mapping(address => mapping(uint256 => GovernancePowerDelegationERC20.Snapshot)),mapping(address => uint256),address,uint256) (src/contracts/AaveTokenV2.sol#1012-1050) uses a dangerous strict equality:
	- snapshot.blockNumber == blockNumber (src/contracts/AaveTokenV2.sol#1041)
GovernancePowerDelegationERC20._writeSnapshot(mapping(address => mapping(uint256 => GovernancePowerDelegationERC20.Snapshot)),mapping(address => uint256),address,uint128,uint128) (src/contracts/AaveTokenV2.sol#1075-1097) uses a dangerous strict equality:
	- ownerSnapshotsCount != 0 && snapshotsOwner[ownerSnapshotsCount - 1].blockNumber == currentBlock (src/contracts/AaveTokenV2.sol#1089-1090)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities
INFO:Detectors:
ERC20.constructor(string,string).name (src/contracts/AaveTokenV2.sol#453) shadows:
	- ERC20.name() (src/contracts/AaveTokenV2.sol#462-464) (function)
ERC20.constructor(string,string).symbol (src/contracts/AaveTokenV2.sol#453) shadows:
	- ERC20.symbol() (src/contracts/AaveTokenV2.sol#470-472) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Reentrancy in AaveTokenV2.initialize(address[],uint256[],address,address,uint256) (src/contracts/AaveTokenV2.sol#1171-1181):
	External calls:
	- IERC20(tokens[i]).safeTransfer(aaveMerkleDistributor,amounts[i]) (src/contracts/AaveTokenV2.sol#1175)
	Event emitted after the call(s):
	- TokensRescued(tokens[i],aaveMerkleDistributor,amounts[i]) (src/contracts/AaveTokenV2.sol#1177)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
AaveTokenV2.permit(address,address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1194-1218) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(block.timestamp <= deadline,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1205)
AaveTokenV2.delegateByTypeBySig(address,IGovernancePowerDelegationToken.DelegationType,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1299-1317) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(block.timestamp <= expiry,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1315)
AaveTokenV2.delegateBySig(address,uint256,uint256,uint8,bytes32,bytes32) (src/contracts/AaveTokenV2.sol#1328-1344) uses timestamp for comparisons
	Dangerous comparisons:
	- require(bool,string)(block.timestamp <= expiry,INVALID_EXPIRATION) (src/contracts/AaveTokenV2.sol#1341)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
Address.isContract(address) (src/contracts/AaveTokenV2.sol#368-379) uses assembly
	- INLINE ASM (src/contracts/AaveTokenV2.sol#375-377)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.sendValue(address,uint256) (src/contracts/AaveTokenV2.sol#397-403) is never used and should be removed
Context._msgData() (src/contracts/AaveTokenV2.sol#94-97) is never used and should be removed
ERC20._beforeTokenTransfer(address,address,uint256) (src/contracts/AaveTokenV2.sol#702) is never used and should be removed
ERC20._burn(address,uint256) (src/contracts/AaveTokenV2.sol#646-654) is never used and should be removed
ERC20._mint(address,uint256) (src/contracts/AaveTokenV2.sol#625-633) is never used and should be removed
ERC20._setupDecimals(uint8) (src/contracts/AaveTokenV2.sol#684-686) is never used and should be removed
SafeERC20.safeApprove(IERC20,address,uint256) (src/contracts/AaveTokenV2.sol#745-755) is never used and should be removed
SafeERC20.safeTransferFrom(IERC20,address,address,uint256) (src/contracts/AaveTokenV2.sol#736-743) is never used and should be removed
SafeMath.div(uint256,uint256) (src/contracts/AaveTokenV2.sol#280-282) is never used and should be removed
SafeMath.div(uint256,uint256,string) (src/contracts/AaveTokenV2.sol#295-306) is never used and should be removed
SafeMath.mod(uint256,uint256) (src/contracts/AaveTokenV2.sol#319-321) is never used and should be removed
SafeMath.mod(uint256,uint256,string) (src/contracts/AaveTokenV2.sol#334-341) is never used and should be removed
SafeMath.mul(uint256,uint256) (src/contracts/AaveTokenV2.sol#255-267) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (src/contracts/AaveTokenV2.sol#397-403):
	- (success) = recipient.call{value: amount}() (src/contracts/AaveTokenV2.sol#401)
Low level call in SafeERC20.callOptionalReturn(IERC20,bytes) (src/contracts/AaveTokenV2.sol#757-769):
	- (success,returndata) = address(token).call(data) (src/contracts/AaveTokenV2.sol#761)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Detectors:
Variable VersionedInitializable.______gap (src/contracts/AaveTokenV2.sol#809) is not in mixedCase
Variable AaveTokenV2._nonces (src/contracts/AaveTokenV2.sol#1135) is not in mixedCase
Variable AaveTokenV2._votingSnapshots (src/contracts/AaveTokenV2.sol#1137) is not in mixedCase
Variable AaveTokenV2._votingSnapshotsCounts (src/contracts/AaveTokenV2.sol#1139) is not in mixedCase
Variable AaveTokenV2._aaveGovernance (src/contracts/AaveTokenV2.sol#1144) is not in mixedCase
Variable AaveTokenV2.DOMAIN_SEPARATOR (src/contracts/AaveTokenV2.sol#1146) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Redundant expression "this (src/contracts/AaveTokenV2.sol#95)" inContext (src/contracts/AaveTokenV2.sol#89-98)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements
INFO:Detectors:
AaveTokenV2.DECIMALS (src/contracts/AaveTokenV2.sol#1130) is never used in AaveTokenV2 (src/contracts/AaveTokenV2.sol#1124-1346)
AaveTokenV2.EIP712_DOMAIN (src/contracts/AaveTokenV2.sol#1148-1150) is never used in AaveTokenV2 (src/contracts/AaveTokenV2.sol#1124-1346)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-state-variable
INFO:Slither:0x96f68837877fd0414b55050c9e794aecdbcfca59 analyzed (11 contracts with 87 detectors), 39 result(s) found
Slither report for EthRobotKeeper at `0x9EEa1Ba822d204077e9f90a92D30432417184587`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0x9eea1ba822d204077e9f90a92d30432417184587-EthRobotKeeper' running
INFO:Detectors:
EthRobotKeeper._squeezeAndShuffleActions(IEthRobotKeeper.ActionWithId[],uint256) (src/contracts/EthRobotKeeper.sol#242-264) uses a weak PRNG: "n = i + (randomNumber % (actions.length - i)) (src/contracts/EthRobotKeeper.sol#257)"
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#weak-PRNG
INFO:Detectors:
EthRobotKeeper.performUpkeep(bytes).isActionPerformed (src/contracts/EthRobotKeeper.sol#117) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
EthRobotKeeper.constructor(address).governanceV2 (src/contracts/EthRobotKeeper.sol#34) lacks a zero-check on :
		- GOVERNANCE_V2 = governanceV2 (src/contracts/EthRobotKeeper.sol#35)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) has external calls inside a loop: proposalState = IAaveGovernanceV2(GOVERNANCE_V2).getProposalState(proposalId) (src/contracts/EthRobotKeeper.sol#57-58)
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) has external calls inside a loop: proposal = IAaveGovernanceV2(GOVERNANCE_V2).getProposalById(proposalId) (src/contracts/EthRobotKeeper.sol#59-60)
EthRobotKeeper._canProposalBeCancelled(IAaveGovernanceV2.ProposalState,IAaveGovernanceV2.ProposalWithoutVotes) (src/contracts/EthRobotKeeper.sol#216-234) has external calls inside a loop: proposalValidator.validateProposalCancellation(IAaveGovernanceV2(GOVERNANCE_V2),proposal.creator,block.number - 1) (src/contracts/EthRobotKeeper.sol#228-233)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: proposal = IAaveGovernanceV2(GOVERNANCE_V2).getProposalById(proposalId) (src/contracts/EthRobotKeeper.sol#124-125)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: proposalState = IAaveGovernanceV2(GOVERNANCE_V2).getProposalState(proposalId) (src/contracts/EthRobotKeeper.sol#126-127)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).cancel(proposalId) (src/contracts/EthRobotKeeper.sol#132)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).queue(proposalId) (src/contracts/EthRobotKeeper.sol#136)
EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149) has external calls inside a loop: IAaveGovernanceV2(GOVERNANCE_V2).execute(proposalId) (src/contracts/EthRobotKeeper.sol#142)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in EthRobotKeeper.performUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#115-149):
	External calls:
	- IAaveGovernanceV2(GOVERNANCE_V2).cancel(proposalId) (src/contracts/EthRobotKeeper.sol#132)
	- IAaveGovernanceV2(GOVERNANCE_V2).queue(proposalId) (src/contracts/EthRobotKeeper.sol#136)
	- IAaveGovernanceV2(GOVERNANCE_V2).execute(proposalId) (src/contracts/EthRobotKeeper.sol#142)
	Event emitted after the call(s):
	- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#134)
	- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#138)
	- ActionSucceeded(proposalId,action) (src/contracts/EthRobotKeeper.sol#144)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
EthRobotKeeper._canProposalBeExecuted(IAaveGovernanceV2.ProposalState,IAaveGovernanceV2.ProposalWithoutVotes) (src/contracts/EthRobotKeeper.sol#197-208) uses timestamp for comparisons
	Dangerous comparisons:
	- proposalState == IAaveGovernanceV2.ProposalState.Queued && block.timestamp >= proposal.executionTime (src/contracts/EthRobotKeeper.sol#202-203)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp
INFO:Detectors:
EthRobotKeeper.checkUpkeep(bytes) (src/contracts/EthRobotKeeper.sol#42-108) uses assembly
	- INLINE ASM (src/contracts/EthRobotKeeper.sol#92-94)
	- INLINE ASM (src/contracts/EthRobotKeeper.sol#101-103)
EthRobotKeeper._squeezeAndShuffleActions(IEthRobotKeeper.ActionWithId[],uint256) (src/contracts/EthRobotKeeper.sol#242-264) uses assembly
	- INLINE ASM (src/contracts/EthRobotKeeper.sol#248-250)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Context._msgData() (lib/solidity-utils/src/contracts/oz-common/Context.sol#22-24) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Function IExecutorWithTimelock.GRACE_PERIOD() (lib/aave-address-book/src/AaveGovernanceV2.sol#159) is not in mixedCase
Function IExecutorWithTimelock.MINIMUM_DELAY() (lib/aave-address-book/src/AaveGovernanceV2.sol#165) is not in mixedCase
Function IExecutorWithTimelock.MAXIMUM_DELAY() (lib/aave-address-book/src/AaveGovernanceV2.sol#171) is not in mixedCase
Function IAaveGovernanceV2.__abdicate() (lib/aave-address-book/src/AaveGovernanceV2.sol#444) is not in mixedCase
Variable EthRobotKeeper.GOVERNANCE_V2 (src/contracts/EthRobotKeeper.sol#19) is not in mixedCase
Function IAaveCLRobotOperator.LINK_TOKEN() (src/interfaces/IAaveCLRobotOperator.sol#133) is not in mixedCase
Function IAaveCLRobotOperator.KEEPER_REGISTRY() (src/interfaces/IAaveCLRobotOperator.sol#139) is not in mixedCase
Function IAaveCLRobotOperator.KEEPER_REGISTRAR() (src/interfaces/IAaveCLRobotOperator.sol#145) is not in mixedCase
Function IEthRobotKeeper.GOVERNANCE_V2() (src/interfaces/IEthRobotKeeper.sol#58) is not in mixedCase
Function IEthRobotKeeper.MAX_ACTIONS() (src/interfaces/IEthRobotKeeper.sol#65) is not in mixedCase
Function IEthRobotKeeper.MAX_SKIP() (src/interfaces/IEthRobotKeeper.sol#71) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0x9eea1ba822d204077e9f90a92d30432417184587 analyzed (11 contracts with 87 detectors), 27 result(s) found
Slither report for GovernanceStrategy at `0xb7e383ef9B1E9189Fc0F71fb30af8aa14377429e`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
INFO:Detectors:
GovernanceStrategy.constructor(address,address).aave (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#78) lacks a zero-check on :
		- AAVE = aave (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#79)
GovernanceStrategy.constructor(address,address).stkAave (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#78) lacks a zero-check on :
		- STK_AAVE = stkAave (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#80)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Variable GovernanceStrategy.AAVE (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#70) is not in mixedCase
Variable GovernanceStrategy.STK_AAVE (crytic-export/etherscan-contracts/0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e-GovernanceStrategy.sol#71) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xb7e383ef9b1e9189fc0f71fb30af8aa14377429e analyzed (4 contracts with 87 detectors), 4 result(s) found
Slither report for AccessControlledOffchainAggregator at `0xbba12740DE905707251525477bAD74985DeC46D2`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xbba12740de905707251525477bad74985dec46d2-AccessControlledOffchainAggregator' running
Warning: OffchainAggregator.sol:461:7: Warning: This declaration shadows an existing declaration.
      int192 latestAnswer,
      ^-----------------^
OffchainAggregator.sol:653:3: The shadowed declaration is here:
  function latestAnswer()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: OffchainAggregator.sol:462:7: Warning: This declaration shadows an existing declaration.
      uint64 latestTimestamp
      ^--------------------^
OffchainAggregator.sol:666:3: The shadowed declaration is here:
  function latestTimestamp()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: AccessControlledOffchainAggregator.sol:25:5: Warning: This declaration shadows an existing declaration.
    string memory description
    ^-----------------------^
AccessControlledOffchainAggregator.sol:108:3: The shadowed declaration is here:
  function description()
  ^ (Relevant source part starts here and spans across multiple lines).


INFO:Detectors:
OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623) passes array OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) by reference to OffchainAggregatorBilling.oracleRewards(bytes,uint16[31]) (OffchainAggregatorBilling.sol#392-406) which only takes arrays by value
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#modifying-storage-array-by-value
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- s_gasReimbursementsLinkWei[oracle.index] = 1 (OffchainAggregatorBilling.sol#355)
	OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- s_oracleObservationsCounts[oracle.index] = 1 (OffchainAggregatorBilling.sol#354)
	OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	State variables written after the call(s):
	- s_gasReimbursementsLinkWei = gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#389)
	OffchainAggregatorBilling.s_gasReimbursementsLinkWei (OffchainAggregatorBilling.sol#114) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- s_oracleObservationsCounts = observationsCounts (OffchainAggregatorBilling.sol#388)
	OffchainAggregatorBilling.s_oracleObservationsCounts (OffchainAggregatorBilling.sol#84) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface) (OffchainAggregatorBilling.sol#148-171)
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
	External calls:
	- payOracles() (OffchainAggregatorBilling.sol#225)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	State variables written after the call(s):
	- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
		- s_billing = Billing(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#198-199)
	OffchainAggregatorBilling.s_billing (OffchainAggregatorBilling.sol#66) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.getBilling() (OffchainAggregatorBilling.sol#238-257)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#189-202)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- delete s_oracles[signer] (OffchainAggregator.sol#165)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_oracles[_signers[i]] = Oracle(uint8(i),Role.Signer) (OffchainAggregator.sol#176)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_oracles[_transmitters[i]] = Oracle(uint8(i),Role.Transmitter) (OffchainAggregator.sol#182)
	OffchainAggregatorBilling.s_oracles (OffchainAggregatorBilling.sol#135-136) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.oracleObservationCount(address) (OffchainAggregatorBilling.sol#559-567)
	- OffchainAggregatorBilling.owedPayment(address) (OffchainAggregatorBilling.sol#319-333)
	- OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358)
	- OffchainAggregatorBilling.reimburseAndRewardOracles(uint32,bytes) (OffchainAggregatorBilling.sol#570-623)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- s_signers.pop() (OffchainAggregator.sol#167)
	OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- s_signers.push(_signers[i]) (OffchainAggregator.sol#183)
	OffchainAggregatorBilling.s_signers (OffchainAggregatorBilling.sol#139) can be used in cross function reentrancies:
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- s_transmitters.pop() (OffchainAggregator.sol#168)
	OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
	- s_transmitters.push(_transmitters[i]) (OffchainAggregator.sol#184)
	OffchainAggregatorBilling.s_transmitters (OffchainAggregatorBilling.sol#143) can be used in cross function reentrancies:
	- OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregatorBilling.totalLINKDue() (OffchainAggregatorBilling.sol#508-535)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
	- OffchainAggregator.transmitters() (OffchainAggregator.sol#252-258)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
	External calls:
	- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
		- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
	State variables written after the call(s):
	- s_hotVars = r.hotVars (OffchainAggregator.sol#641)
	OffchainAggregator.s_hotVars (OffchainAggregator.sol#39) can be used in cross function reentrancies:
	- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661)
	- OffchainAggregator.latestConfigDetails() (OffchainAggregator.sol#235-245)
	- OffchainAggregator.latestRound() (OffchainAggregator.sol#679-687)
	- OffchainAggregator.latestRoundData() (OffchainAggregator.sol#791-817)
	- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674)
	- OffchainAggregator.latestTransmissionDetails() (OffchainAggregator.sol#454-473)
	- OffchainAggregator.requestNewRound() (OffchainAggregator.sol#385-398)
	- OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212)
	- OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-1
INFO:Detectors:
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).counts (OffchainAggregatorBilling.sol#162) is a local variable never initialized
OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32).r (OffchainAggregator.sol#526) is a local variable never initialized
OffchainAggregatorBilling.constructor(uint32,uint32,uint32,uint32,uint32,address,AccessControllerInterface).gas (OffchainAggregatorBilling.sol#163) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables
INFO:Detectors:
OffchainAggregator.validateAnswer(uint32,int256) (OffchainAggregator.sol#309-328) ignores return value by av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AccessControlledOffchainAggregator.constructor(uint32,uint32,uint32,uint32,uint32,address,address,int192,int192,AccessControllerInterface,AccessControllerInterface,uint8,string).description (AccessControlledOffchainAggregator.sol#25) shadows:
	- AccessControlledOffchainAggregator.description() (AccessControlledOffchainAggregator.sol#108-116) (function)
	- OffchainAggregator.description() (OffchainAggregator.sol#740-748) (function)
	- AggregatorV3Interface.description() (AggregatorV3Interface.sol#7) (function)
OffchainAggregator.latestTransmissionDetails().latestAnswer (OffchainAggregator.sol#461) shadows:
	- OffchainAggregator.latestAnswer() (OffchainAggregator.sol#653-661) (function)
	- AggregatorInterface.latestAnswer() (AggregatorInterface.sol#5) (function)
OffchainAggregator.latestTransmissionDetails().latestTimestamp (OffchainAggregator.sol#462) shadows:
	- OffchainAggregator.latestTimestamp() (OffchainAggregator.sol#666-674) (function)
	- AggregatorInterface.latestTimestamp() (AggregatorInterface.sol#6) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (Owned.sol#30) lacks a zero-check on :
		- pendingOwner = _to (Owned.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358) has external calls inside a loop: require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop
INFO:Detectors:
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	State variables written after the call(s):
	- s_configCount += 1 (OffchainAggregator.sol#189)
	- s_hotVars.threshold = _threshold (OffchainAggregator.sol#186)
	- s_hotVars.latestConfigDigest = configDigestFromConfigData(address(this),configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#192-200)
	- s_hotVars.latestEpochAndRound = 0 (OffchainAggregator.sol#201)
	- s_latestConfigBlockNumber = uint32(block.number) (OffchainAggregator.sol#188)
Reentrancy in OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32) (OffchainAggregator.sol#508-644):
	External calls:
	- validateAnswer(r.hotVars.latestAggregatorRoundId,median) (OffchainAggregator.sol#639)
		- av.validate{gas: VALIDATOR_GAS_LIMIT}(prevAggregatorRoundId,prevAggregatorRoundAnswer,_aggregatorRoundId,_answer) (OffchainAggregator.sol#322-327)
	State variables written after the call(s):
	- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
		- s_gasReimbursementsLinkWei[txOracle.index] = s_gasReimbursementsLinkWei[txOracle.index] + gasCostLinkWei + uint256(billing.linkGweiPerTransmission) * (1000000000) (OffchainAggregatorBilling.sol#615-617)
	- reimburseAndRewardOracles(uint32(initialGas),r.observers) (OffchainAggregator.sol#643)
		- s_oracleObservationsCounts = oracleRewards(observers,s_oracleObservationsCounts) (OffchainAggregatorBilling.sol#580-581)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2
INFO:Detectors:
Reentrancy in OffchainAggregatorBilling.payOracle(address) (OffchainAggregatorBilling.sol#344-358):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	Event emitted after the call(s):
	- OraclePaid(_transmitter,payee,linkWeiAmount) (OffchainAggregatorBilling.sol#356)
Reentrancy in OffchainAggregatorBilling.payOracles() (OffchainAggregatorBilling.sol#364-390):
	External calls:
	- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	Event emitted after the call(s):
	- OraclePaid(transmitters[transmitteridx],payee,linkWeiAmount) (OffchainAggregatorBilling.sol#384)
Reentrancy in OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32) (OffchainAggregatorBilling.sol#213-228):
	External calls:
	- payOracles() (OffchainAggregatorBilling.sol#225)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#381)
	Event emitted after the call(s):
	- BillingSet(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#200-201)
		- setBillingInternal(_maximumGasPrice,_reasonableGasPrice,_microLinkPerEth,_linkGweiPerObservation,_linkGweiPerTransmission) (OffchainAggregatorBilling.sol#226-227)
Reentrancy in OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212):
	External calls:
	- payOracle(transmitter) (OffchainAggregator.sol#164)
		- require(bool,string)(LINK.transfer(payee,linkWeiAmount),insufficient funds) (OffchainAggregatorBilling.sol#353)
	Event emitted after the call(s):
	- ConfigSet(previousConfigBlockNumber,configCount,_signers,_transmitters,_threshold,_encodedConfigVersion,_encoded) (OffchainAggregator.sol#203-211)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3
INFO:Detectors:
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- delete s_oracles[signer] (OffchainAggregator.sol#165)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- delete s_oracles[transmitter] (OffchainAggregator.sol#166)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- s_signers.pop() (OffchainAggregator.sol#167)
OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes) (OffchainAggregator.sol#149-212) has costly operations inside a loop:
	- s_transmitters.pop() (OffchainAggregator.sol#168)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#costly-operations-inside-a-loop
INFO:Detectors:
OffchainAggregator.decodeReport(bytes) (OffchainAggregator.sol#423-434) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Parameter AccessControlledOffchainAggregator.getAnswer(uint256)._roundId (AccessControlledOffchainAggregator.sol#82) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getTimestamp(uint256)._roundId (AccessControlledOffchainAggregator.sol#93) is not in mixedCase
Parameter AccessControlledOffchainAggregator.getRoundData(uint80)._roundId (AccessControlledOffchainAggregator.sol#119) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#150) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#151) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#152) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#153) is not in mixedCase
Parameter OffchainAggregator.setConfig(address[],address[],uint8,uint64,bytes)._encoded (OffchainAggregator.sol#154) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._contractAddress (OffchainAggregator.sol#215) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._configCount (OffchainAggregator.sol#216) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._signers (OffchainAggregator.sol#217) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._transmitters (OffchainAggregator.sol#218) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._threshold (OffchainAggregator.sol#219) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfigVersion (OffchainAggregator.sol#220) is not in mixedCase
Parameter OffchainAggregator.configDigestFromConfigData(address,uint64,address[],address[],uint8,uint64,bytes)._encodedConfig (OffchainAggregator.sol#221) is not in mixedCase
Parameter OffchainAggregator.setValidator(address)._newValidator (OffchainAggregator.sol#296) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._aggregatorRoundId (OffchainAggregator.sol#310) is not in mixedCase
Parameter OffchainAggregator.validateAnswer(uint32,int256)._answer (OffchainAggregator.sol#311) is not in mixedCase
Parameter OffchainAggregator.setRequesterAccessController(AccessControllerInterface)._requesterAccessController (OffchainAggregator.sol#368) is not in mixedCase
Parameter OffchainAggregator.decodeReport(bytes)._report (OffchainAggregator.sol#423) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._report (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._rs (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.expectedMsgDataLength(bytes,bytes32[],bytes32[])._ss (OffchainAggregator.sol#490) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._report (OffchainAggregator.sol#511) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._ss (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.transmit(bytes,bytes32[],bytes32[],bytes32)._rawVs (OffchainAggregator.sol#512) is not in mixedCase
Parameter OffchainAggregator.getAnswer(uint256)._roundId (OffchainAggregator.sol#693) is not in mixedCase
Parameter OffchainAggregator.getTimestamp(uint256)._roundId (OffchainAggregator.sol#708) is not in mixedCase
Parameter OffchainAggregator.getRoundData(uint80)._roundId (OffchainAggregator.sol#759) is not in mixedCase
Constant OffchainAggregator.maxUint32 (OffchainAggregator.sol#19) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#190) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#191) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#192) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#193) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingInternal(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#194) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._maximumGasPrice (OffchainAggregatorBilling.sol#214) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._reasonableGasPrice (OffchainAggregatorBilling.sol#215) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._microLinkPerEth (OffchainAggregatorBilling.sol#216) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerObservation (OffchainAggregatorBilling.sol#217) is not in mixedCase
Parameter OffchainAggregatorBilling.setBilling(uint32,uint32,uint32,uint32,uint32)._linkGweiPerTransmission (OffchainAggregatorBilling.sol#218) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessControllerInternal(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#266) is not in mixedCase
Parameter OffchainAggregatorBilling.setBillingAccessController(AccessControllerInterface)._billingAccessController (OffchainAggregatorBilling.sol#284) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is not in mixedCase
Parameter OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is not in mixedCase
Parameter OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._recipient (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.withdrawFunds(address,uint256)._amount (OffchainAggregatorBilling.sol#496) is not in mixedCase
Parameter OffchainAggregatorBilling.oracleObservationCount(address)._signerOrTransmitter (OffchainAggregatorBilling.sol#559) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._transmitters (OffchainAggregatorBilling.sol#660) is not in mixedCase
Parameter OffchainAggregatorBilling.setPayees(address[],address[])._payees (OffchainAggregatorBilling.sol#661) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is not in mixedCase
Parameter OffchainAggregatorBilling.transferPayeeship(address,address)._proposed (OffchainAggregatorBilling.sol#690) is not in mixedCase
Parameter OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._x (OffchainAggregatorBilling.sol#728) is not in mixedCase
Parameter OffchainAggregatorBilling.saturatingAddUint16(uint16,uint16)._y (OffchainAggregatorBilling.sol#728) is not in mixedCase
Constant OffchainAggregatorBilling.maxNumOracles (OffchainAggregatorBilling.sol#45) is not in UPPER_CASE_WITH_UNDERSCORES
Variable OffchainAggregatorBilling.LINK (OffchainAggregatorBilling.sol#71) is not in mixedCase
Constant OffchainAggregatorBilling.maxUint16 (OffchainAggregatorBilling.sol#145) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.maxUint128 (OffchainAggregatorBilling.sol#146) is not in UPPER_CASE_WITH_UNDERSCORES
Constant OffchainAggregatorBilling.accountingGasCost (OffchainAggregatorBilling.sol#435) is not in UPPER_CASE_WITH_UNDERSCORES
Parameter Owned.transferOwnership(address)._to (Owned.sol#30) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._user (SimpleReadAccessController.sol#24) is not in mixedCase
Parameter SimpleReadAccessController.hasAccess(address,bytes)._calldata (SimpleReadAccessController.sol#25) is not in mixedCase
Parameter SimpleWriteAccessController.hasAccess(address,bytes)._user (SimpleWriteAccessController.sol#34) is not in mixedCase
Parameter SimpleWriteAccessController.addAccess(address)._user (SimpleWriteAccessController.sol#50) is not in mixedCase
Parameter SimpleWriteAccessController.addAccessInternal(address)._user (SimpleWriteAccessController.sol#54) is not in mixedCase
Parameter SimpleWriteAccessController.removeAccess(address)._user (SimpleWriteAccessController.sol#65) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Detectors:
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.owedPayment(address)._transmitter (OffchainAggregatorBilling.sol#319) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.payOracle(address)._transmitter (OffchainAggregatorBilling.sol#344) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.acceptPayeeship(address)._transmitter (OffchainAggregatorBilling.sol#711) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.withdrawPayment(address)._transmitter (OffchainAggregatorBilling.sol#308) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.totalLINKDue().transmitters (OffchainAggregatorBilling.sol#529)
Variable OffchainAggregatorBilling.transferPayeeship(address,address)._transmitter (OffchainAggregatorBilling.sol#689) is too similar to OffchainAggregatorBilling.payOracles().transmitters (OffchainAggregatorBilling.sol#371)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#variable-names-too-similar
INFO:Slither:0xbba12740de905707251525477bad74985dec46d2 analyzed (12 contracts with 87 detectors), 104 result(s) found
Slither report for TransparentUpgradeableProxy at `0xdAbad81aF85554E9ae636395611C58F7eC1aAEc5` with implementation PayloadsController at `0x7222182cB9c5320587b5148BF03eeE107AD64578`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xdabad81af85554e9ae636395611c58f7ec1aaec5-TransparentUpgradeableProxy' running
INFO:Detectors:
TransparentUpgradeableProxy.admin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#69-71) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.implementation() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#82-84) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.changeAdmin(address) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#93-95) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.upgradeTo(address) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#102-104) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.upgradeToAndCall(address,bytes) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#113-118) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) calls Proxy._fallback() (src/contracts/transparent-proxy/Proxy.sol#64-67) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-assembly-return
INFO:Detectors:
ERC1967Upgrade._upgradeToAndCall(address,bytes,bool) (src/contracts/transparent-proxy/ERC1967Upgrade.sol#84-93) ignores return value by Address.functionDelegateCall(newImplementation,data) (src/contracts/transparent-proxy/ERC1967Upgrade.sol#91)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Modifier TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Address._revert(bytes,string) (src/contracts/oz-common/Address.sol#235-247) uses assembly
	- INLINE ASM (src/contracts/oz-common/Address.sol#240-243)
StorageSlot.getAddressSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#53-58) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#55-57)
StorageSlot.getBooleanSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#63-68) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#65-67)
StorageSlot.getBytes32Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#73-78) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#75-77)
StorageSlot.getUint256Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#83-88) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#85-87)
Proxy._delegate(address) (src/contracts/transparent-proxy/Proxy.sol#28-51) uses assembly
	- INLINE ASM (src/contracts/transparent-proxy/Proxy.sol#29-50)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes) (src/contracts/oz-common/Address.sol#86-88) is never used and should be removed
Address.functionCall(address,bytes,string) (src/contracts/oz-common/Address.sol#96-102) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (src/contracts/oz-common/Address.sol#115-121) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (src/contracts/oz-common/Address.sol#129-138) is never used and should be removed
Address.functionStaticCall(address,bytes) (src/contracts/oz-common/Address.sol#146-151) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (src/contracts/oz-common/Address.sol#159-166) is never used and should be removed
Address.sendValue(address,uint256) (src/contracts/oz-common/Address.sol#61-66) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (src/contracts/oz-common/Address.sol#223-233) is never used and should be removed
StorageSlot.getBooleanSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#63-68) is never used and should be removed
StorageSlot.getBytes32Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#73-78) is never used and should be removed
StorageSlot.getUint256Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#83-88) is never used and should be removed
TransparentUpgradeableProxy._admin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#123-125) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (src/contracts/oz-common/Address.sol#61-66):
	- (success) = recipient.call{value: amount}() (src/contracts/oz-common/Address.sol#64)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (src/contracts/oz-common/Address.sol#129-138):
	- (success,returndata) = target.call{value: value}(data) (src/contracts/oz-common/Address.sol#136)
Low level call in Address.functionStaticCall(address,bytes,string) (src/contracts/oz-common/Address.sol#159-166):
	- (success,returndata) = target.staticcall(data) (src/contracts/oz-common/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (src/contracts/oz-common/Address.sol#184-191):
	- (success,returndata) = target.delegatecall(data) (src/contracts/oz-common/Address.sol#189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Slither:0xdabad81af85554e9ae636395611c58f7ec1aaec5 analyzed (6 contracts with 87 detectors), 30 result(s) found
Slither report for EACAggregatorProxy at `0xDC530D9457755926550b59e8ECcdaE7624181557`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts' running
Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:283:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:273:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:284:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:274:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:285:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:275:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:286:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:276:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:331:7: Warning: This declaration shadows an existing declaration.
      uint80 roundId,
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:321:7: The shadowed declaration is here:
      uint80 roundId,
      ^------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:332:7: Warning: This declaration shadows an existing declaration.
      int256 answer,
      ^-----------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:322:7: The shadowed declaration is here:
      int256 answer,
      ^-----------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:333:7: Warning: This declaration shadows an existing declaration.
      uint256 startedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:323:7: The shadowed declaration is here:
      uint256 startedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:334:7: Warning: This declaration shadows an existing declaration.
      uint256 updatedAt,
      ^---------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:324:7: The shadowed declaration is here:
      uint256 updatedAt,
      ^---------------^

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:513:5: Warning: This declaration shadows an existing declaration.
    uint16 phaseId = uint16(_roundId >> PHASE_OFFSET);
    ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:525:7: Warning: This declaration shadows an existing declaration.
      uint16 phaseId
      ^------------^
crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:410:3: The shadowed declaration is here:
  function phaseId()
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:495:3: Warning: Function state mutability can be restricted to pure
  function addPhase(
  ^ (Relevant source part starts here and spans across multiple lines).

Warning: crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol:506:3: Warning: Function state mutability can be restricted to pure
  function parseIds(
  ^ (Relevant source part starts here and spans across multiple lines).


INFO:Detectors:
AggregatorProxy.proposedGetRoundData(uint80) (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#353-367) ignores return value by proposedAggregator.getRoundData(_roundId) (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#366)
AggregatorProxy.proposedLatestRoundData() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#380-394) ignores return value by proposedAggregator.latestRoundData() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#393)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
AggregatorProxy.getAnswer(uint256).phaseId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#189) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getAnswer(uint256).aggregator (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#190) shadows:
	- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getTimestamp(uint256).phaseId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#214) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getTimestamp(uint256).aggregator (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#215) shadows:
	- AggregatorProxy.aggregator() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#399-405) (function)
AggregatorProxy.getRoundData(uint80).phaseId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#280) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.getRoundData(uint80).roundId_scope_0 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#283) shadows:
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#273) (return variable)
	- AggregatorProxy.getRoundData(uint80).roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#273) (return variable)
AggregatorProxy.getRoundData(uint80).answer_scope_1 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#284) shadows:
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#274) (return variable)
	- AggregatorProxy.getRoundData(uint80).answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#274) (return variable)
AggregatorProxy.getRoundData(uint80).startedAt_scope_2 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#285) shadows:
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#275) (return variable)
	- AggregatorProxy.getRoundData(uint80).startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#275) (return variable)
AggregatorProxy.getRoundData(uint80).updatedAt_scope_3 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#286) shadows:
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#276) (return variable)
	- AggregatorProxy.getRoundData(uint80).updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#276) (return variable)
AggregatorProxy.latestRoundData().roundId_scope_0 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#331) shadows:
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#321) (return variable)
	- AggregatorProxy.latestRoundData().roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#321) (return variable)
AggregatorProxy.latestRoundData().answer_scope_1 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#332) shadows:
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#322) (return variable)
	- AggregatorProxy.latestRoundData().answer (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#322) (return variable)
AggregatorProxy.latestRoundData().startedAt_scope_2 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#333) shadows:
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#323) (return variable)
	- AggregatorProxy.latestRoundData().startedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#323) (return variable)
AggregatorProxy.latestRoundData().updatedAt_scope_3 (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#334) shadows:
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#324) (return variable)
	- AggregatorProxy.latestRoundData().updatedAt (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#324) (return variable)
AggregatorProxy.parseIds(uint256).phaseId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#513) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#410-416) (function)
AggregatorProxy.addPhaseIds(uint80,int256,uint256,uint256,uint80,uint16).phaseId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#525) shadows:
	- AggregatorProxy.phaseId() (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#410-416) (function)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#local-variable-shadowing
INFO:Detectors:
Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#30) lacks a zero-check on :
		- pendingOwner = _to (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#34)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation
INFO:Detectors:
Parameter Owned.transferOwnership(address)._to (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#30) is not in mixedCase
Parameter AggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#180) is not in mixedCase
Parameter AggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#205) is not in mixedCase
Parameter AggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#267) is not in mixedCase
Parameter AggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#353) is not in mixedCase
Parameter AggregatorProxy.proposeAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#459) is not in mixedCase
Parameter AggregatorProxy.confirmAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#473) is not in mixedCase
Parameter AggregatorProxy.setAggregator(address)._aggregator (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#487) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._phase (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#496) is not in mixedCase
Parameter AggregatorProxy.addPhase(uint16,uint64)._originalId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#497) is not in mixedCase
Parameter AggregatorProxy.parseIds(uint256)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#507) is not in mixedCase
Parameter EACAggregatorProxy.setController(address)._accessController (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#582) is not in mixedCase
Parameter EACAggregatorProxy.getAnswer(uint256)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#638) is not in mixedCase
Parameter EACAggregatorProxy.getTimestamp(uint256)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#658) is not in mixedCase
Parameter EACAggregatorProxy.getRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#710) is not in mixedCase
Parameter EACAggregatorProxy.proposedGetRoundData(uint80)._roundId (crytic-export/etherscan-contracts/0xdc530d9457755926550b59e8eccdae7624181557-EACAggregatorProxy.sol#776) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions
INFO:Slither:0xdc530d9457755926550b59e8eccdae7624181557 analyzed (7 contracts with 87 detectors), 34 result(s) found
Slither report for TransparentUpgradeableProxy at `0xEd42a7D8559a463722Ca4beD50E0Cc05a386b0e1` with implementation CrossChainController at `0x0Bf5bbfaE7808D329e0Ba8277e0b746BbfDA68f1`
'solc --standard-json --allow-paths /home/runner/work/seatbelt-for-ghosts/seatbelt-for-ghosts/crytic-export/etherscan-contracts/0xed42a7d8559a463722ca4bed50e0cc05a386b0e1-TransparentUpgradeableProxy' running
INFO:Detectors:
TransparentUpgradeableProxy.admin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#69-71) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.implementation() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#82-84) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.changeAdmin(address) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#93-95) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.upgradeTo(address) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#102-104) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.upgradeToAndCall(address,bytes) (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#113-118) calls TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) calls Proxy._fallback() (src/contracts/transparent-proxy/Proxy.sol#64-67) which halt the execution return(uint256,uint256)(0,returndatasize()()) (src/contracts/transparent-proxy/Proxy.sol#48)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-assembly-return
INFO:Detectors:
ERC1967Upgrade._upgradeToAndCall(address,bytes,bool) (src/contracts/transparent-proxy/ERC1967Upgrade.sol#84-93) ignores return value by Address.functionDelegateCall(newImplementation,data) (src/contracts/transparent-proxy/ERC1967Upgrade.sol#91)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return
INFO:Detectors:
Modifier TransparentUpgradeableProxy.ifAdmin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#52-58) does not always execute _; or revertReference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-modifier
INFO:Detectors:
Address._revert(bytes,string) (src/contracts/oz-common/Address.sol#235-247) uses assembly
	- INLINE ASM (src/contracts/oz-common/Address.sol#240-243)
StorageSlot.getAddressSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#53-58) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#55-57)
StorageSlot.getBooleanSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#63-68) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#65-67)
StorageSlot.getBytes32Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#73-78) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#75-77)
StorageSlot.getUint256Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#83-88) uses assembly
	- INLINE ASM (src/contracts/oz-common/StorageSlot.sol#85-87)
Proxy._delegate(address) (src/contracts/transparent-proxy/Proxy.sol#28-51) uses assembly
	- INLINE ASM (src/contracts/transparent-proxy/Proxy.sol#29-50)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#assembly-usage
INFO:Detectors:
Address.functionCall(address,bytes) (src/contracts/oz-common/Address.sol#86-88) is never used and should be removed
Address.functionCall(address,bytes,string) (src/contracts/oz-common/Address.sol#96-102) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256) (src/contracts/oz-common/Address.sol#115-121) is never used and should be removed
Address.functionCallWithValue(address,bytes,uint256,string) (src/contracts/oz-common/Address.sol#129-138) is never used and should be removed
Address.functionStaticCall(address,bytes) (src/contracts/oz-common/Address.sol#146-151) is never used and should be removed
Address.functionStaticCall(address,bytes,string) (src/contracts/oz-common/Address.sol#159-166) is never used and should be removed
Address.sendValue(address,uint256) (src/contracts/oz-common/Address.sol#61-66) is never used and should be removed
Address.verifyCallResult(bool,bytes,string) (src/contracts/oz-common/Address.sol#223-233) is never used and should be removed
StorageSlot.getBooleanSlot(bytes32) (src/contracts/oz-common/StorageSlot.sol#63-68) is never used and should be removed
StorageSlot.getBytes32Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#73-78) is never used and should be removed
StorageSlot.getUint256Slot(bytes32) (src/contracts/oz-common/StorageSlot.sol#83-88) is never used and should be removed
TransparentUpgradeableProxy._admin() (src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol#123-125) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code
INFO:Detectors:
Low level call in Address.sendValue(address,uint256) (src/contracts/oz-common/Address.sol#61-66):
	- (success) = recipient.call{value: amount}() (src/contracts/oz-common/Address.sol#64)
Low level call in Address.functionCallWithValue(address,bytes,uint256,string) (src/contracts/oz-common/Address.sol#129-138):
	- (success,returndata) = target.call{value: value}(data) (src/contracts/oz-common/Address.sol#136)
Low level call in Address.functionStaticCall(address,bytes,string) (src/contracts/oz-common/Address.sol#159-166):
	- (success,returndata) = target.staticcall(data) (src/contracts/oz-common/Address.sol#164)
Low level call in Address.functionDelegateCall(address,bytes,string) (src/contracts/oz-common/Address.sol#184-191):
	- (success,returndata) = target.delegatecall(data) (src/contracts/oz-common/Address.sol#189)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls
INFO:Slither:0xed42a7d8559a463722ca4bed50e0cc05a386b0e1 analyzed (6 contracts with 87 detectors), 30 result(s) found