{"file_path":"src/core/contracts/misc/AaveOracle.sol","creation_status":"success","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.10;\n\nimport {AggregatorInterface} from '../dependencies/chainlink/AggregatorInterface.sol';\nimport {Errors} from '../protocol/libraries/helpers/Errors.sol';\nimport {IACLManager} from '../interfaces/IACLManager.sol';\nimport {IPoolAddressesProvider} from '../interfaces/IPoolAddressesProvider.sol';\nimport {IPriceOracleGetter} from '../interfaces/IPriceOracleGetter.sol';\nimport {IAaveOracle} from '../interfaces/IAaveOracle.sol';\n\n/**\n * @title AaveOracle\n * @author Aave\n * @notice Contract to get asset prices, manage price sources and update the fallback oracle\n * - Use of Chainlink Aggregators as first source of price\n * - If the returned price by a Chainlink aggregator is <= 0, the call is forwarded to a fallback oracle\n * - Owned by the Aave governance\n */\ncontract AaveOracle is IAaveOracle {\n  IPoolAddressesProvider public immutable ADDRESSES_PROVIDER;\n\n  // Map of asset price sources (asset => priceSource)\n  mapping(address => AggregatorInterface) private assetsSources;\n\n  IPriceOracleGetter private _fallbackOracle;\n  address public immutable override BASE_CURRENCY;\n  uint256 public immutable override BASE_CURRENCY_UNIT;\n\n  /**\n   * @dev Only asset listing or pool admin can call functions marked by this modifier.\n   */\n  modifier onlyAssetListingOrPoolAdmins() {\n    _onlyAssetListingOrPoolAdmins();\n    _;\n  }\n\n  /**\n   * @notice Constructor\n   * @param provider The address of the new PoolAddressesProvider\n   * @param assets The addresses of the assets\n   * @param sources The address of the source of each asset\n   * @param fallbackOracle The address of the fallback oracle to use if the data of an\n   *        aggregator is not consistent\n   * @param baseCurrency The base currency used for the price quotes. If USD is used, base currency is 0x0\n   * @param baseCurrencyUnit The unit of the base currency\n   */\n  constructor(\n    IPoolAddressesProvider provider,\n    address[] memory assets,\n    address[] memory sources,\n    address fallbackOracle,\n    address baseCurrency,\n    uint256 baseCurrencyUnit\n  ) {\n    ADDRESSES_PROVIDER = provider;\n    _setFallbackOracle(fallbackOracle);\n    _setAssetsSources(assets, sources);\n    BASE_CURRENCY = baseCurrency;\n    BASE_CURRENCY_UNIT = baseCurrencyUnit;\n    emit BaseCurrencySet(baseCurrency, baseCurrencyUnit);\n  }\n\n  /// @inheritdoc IAaveOracle\n  function setAssetSources(\n    address[] calldata assets,\n    address[] calldata sources\n  ) external override onlyAssetListingOrPoolAdmins {\n    _setAssetsSources(assets, sources);\n  }\n\n  /// @inheritdoc IAaveOracle\n  function setFallbackOracle(\n    address fallbackOracle\n  ) external override onlyAssetListingOrPoolAdmins {\n    _setFallbackOracle(fallbackOracle);\n  }\n\n  /**\n   * @notice Internal function to set the sources for each asset\n   * @param assets The addresses of the assets\n   * @param sources The address of the source of each asset\n   */\n  function _setAssetsSources(address[] memory assets, address[] memory sources) internal {\n    require(assets.length == sources.length, Errors.INCONSISTENT_PARAMS_LENGTH);\n    for (uint256 i = 0; i < assets.length; i++) {\n      assetsSources[assets[i]] = AggregatorInterface(sources[i]);\n      emit AssetSourceUpdated(assets[i], sources[i]);\n    }\n  }\n\n  /**\n   * @notice Internal function to set the fallback oracle\n   * @param fallbackOracle The address of the fallback oracle\n   */\n  function _setFallbackOracle(address fallbackOracle) internal {\n    _fallbackOracle = IPriceOracleGetter(fallbackOracle);\n    emit FallbackOracleUpdated(fallbackOracle);\n  }\n\n  /// @inheritdoc IPriceOracleGetter\n  function getAssetPrice(address asset) public view override returns (uint256) {\n    AggregatorInterface source = assetsSources[asset];\n\n    if (asset == BASE_CURRENCY) {\n      return BASE_CURRENCY_UNIT;\n    } else if (address(source) == address(0)) {\n      return _fallbackOracle.getAssetPrice(asset);\n    } else {\n      int256 price = source.latestAnswer();\n      if (price > 0) {\n        return uint256(price);\n      } else {\n        return _fallbackOracle.getAssetPrice(asset);\n      }\n    }\n  }\n\n  /// @inheritdoc IAaveOracle\n  function getAssetsPrices(\n    address[] calldata assets\n  ) external view override returns (uint256[] memory) {\n    uint256[] memory prices = new uint256[](assets.length);\n    for (uint256 i = 0; i < assets.length; i++) {\n      prices[i] = getAssetPrice(assets[i]);\n    }\n    return prices;\n  }\n\n  /// @inheritdoc IAaveOracle\n  function getSourceOfAsset(address asset) external view override returns (address) {\n    return address(assetsSources[asset]);\n  }\n\n  /// @inheritdoc IAaveOracle\n  function getFallbackOracle() external view returns (address) {\n    return address(_fallbackOracle);\n  }\n\n  function _onlyAssetListingOrPoolAdmins() internal view {\n    IACLManager aclManager = IACLManager(ADDRESSES_PROVIDER.getACLManager());\n    require(\n      aclManager.isAssetListingAdmin(msg.sender) || aclManager.isPoolAdmin(msg.sender),\n      Errors.CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN\n    );\n  }\n}\n","deployed_bytecode":"0x608060405234801561001057600080fd5b50600436106100935760003560e01c806392bf2be01161006657806392bf2be0146101375780639d23d9f214610163578063abfd531014610183578063b3596f0714610196578063e19f4700146101a957600080fd5b80630542975c14610098578063170aee73146100dc5780636210308c146100f15780638c89b64f14610102575b600080fd5b6100bf7f000000000000000000000000cfbf336fe147d643b9cb705648500e101504b16d81565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef6100ea366004610844565b6101d0565b005b6001546001600160a01b03166100bf565b6101297f0000000000000000000000000000000000000000000000000000000005f5e10081565b6040519081526020016100d3565b6100bf610145366004610844565b6001600160a01b039081166000908152602081905260409020541690565b6101766101713660046108ad565b6101e4565b6040516100d391906108ef565b6100ef610191366004610933565b610299565b6101296101a4366004610844565b610314565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86104f5565b6101e181610696565b50565b606060008267ffffffffffffffff8111156102015761020161099f565b60405190808252806020026020018201604052801561022a578160200160208202803683370190505b50905060005b838110156102915761026285858381811061024d5761024d6109b5565b90506020020160208101906101a49190610844565b828281518110610274576102746109b5565b602090810291909101015280610289816109cb565b915050610230565b509392505050565b6102a16104f5565b61030e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208088028281018201909352878252909350879250869182918501908490808284376000920191909152506106e092505050565b50505050565b6001600160a01b038082166000818152602081905260408120549092908116917f0000000000000000000000000000000000000000000000000000000000000000909116900361038657507f0000000000000000000000000000000000000000000000000000000005f5e10092915050565b6001600160a01b0381166104095760015460405163b3596f0760e01b81526001600160a01b0385811660048301529091169063b3596f0790602401602060405180830381865afa1580156103de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040291906109f2565b9392505050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d91906109f2565b9050600081131561047f579392505050565b60015460405163b3596f0760e01b81526001600160a01b0386811660048301529091169063b3596f0790602401602060405180830381865afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed91906109f2565b949350505050565b60007f000000000000000000000000cfbf336fe147d643b9cb705648500e101504b16d6001600160a01b031663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015610555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105799190610a0b565b604051629f719760e51b81523360048201529091506001600160a01b038216906313ee32e090602401602060405180830381865afa1580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e39190610a28565b806106515750604051637be53ca160e01b81523360048201526001600160a01b03821690637be53ca190602401602060405180830381865afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190610a28565b604051806040016040528060018152602001603560f81b815250906106925760405162461bcd60e51b81526004016106899190610a4a565b60405180910390fd5b5050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114604051806040016040528060028152602001611b9b60f11b8152509061071e5760405162461bcd60e51b81526004016106899190610a4a565b5060005b825181101561082a5781818151811061073d5761073d6109b5565b602002602001015160008085848151811061075a5761075a6109b5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106107b8576107b86109b5565b60200260200101516001600160a01b03168382815181106107db576107db6109b5565b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a380610822816109cb565b915050610722565b505050565b6001600160a01b03811681146101e157600080fd5b60006020828403121561085657600080fd5b81356104028161082f565b60008083601f84011261087357600080fd5b50813567ffffffffffffffff81111561088b57600080fd5b6020830191508360208260051b85010111156108a657600080fd5b9250929050565b600080602083850312156108c057600080fd5b823567ffffffffffffffff8111156108d757600080fd5b6108e385828601610861565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156109275783518352928401929184019160010161090b565b50909695505050505050565b6000806000806040858703121561094957600080fd5b843567ffffffffffffffff8082111561096157600080fd5b61096d88838901610861565b9096509450602087013591508082111561098657600080fd5b5061099387828801610861565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016109eb57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610a0457600080fd5b5051919050565b600060208284031215610a1d57600080fd5b81516104028161082f565b600060208284031215610a3a57600080fd5b8151801515811461040257600080fd5b600060208083528351808285015260005b81811015610a7757858101830151858201604001528201610a5b565b506000604082860101526040601f19601f830116850101925050509291505056fea164736f6c6343000813000a","optimization_enabled":true,"verified_twin_address_hash":null,"is_verified":true,"compiler_settings":{"evmVersion":"paris","libraries":{"src/core/contracts/protocol/libraries/logic/BorrowLogic.sol":{"BorrowLogic":"0x41717de714Db8630F02Dea8f6A39C73A5b5C7df1"},"src/core/contracts/protocol/libraries/logic/BridgeLogic.sol":{"BridgeLogic":"0xca2385754bCa5d632F5160B560352aBd12029685"},"src/core/contracts/protocol/libraries/logic/ConfiguratorLogic.sol":{"ConfiguratorLogic":"0x6F4964Db83CeCCDc98164796221d5259b922313C"},"src/core/contracts/protocol/libraries/logic/EModeLogic.sol":{"EModeLogic":"0x12959a64470Dd003590Bb1EcFC436dddE7608724"},"src/core/contracts/protocol/libraries/logic/FlashLoanLogic.sol":{"FlashLoanLogic":"0x6DA8d7EF0625e965dafc393793C048096392d4a5"},"src/core/contracts/protocol/libraries/logic/LiquidationLogic.sol":{"LiquidationLogic":"0x72c272aE914EC11AFe1e74A0016e0A91c1A6014e"},"src/core/contracts/protocol/libraries/logic/PoolLogic.sol":{"PoolLogic":"0x55D552EFbc8aEB87AffCEa8630B43a33BA24D975"},"src/core/contracts/protocol/libraries/logic/SupplyLogic.sol":{"SupplyLogic":"0x9336943ecd91C201D9ED5A21562b34Aef710052f"}},"metadata":{"appendCBOR":true,"bytecodeHash":"none","useLiteralContent":false},"optimizer":{"enabled":true,"runs":200},"outputSelection":{"src/deployments/contracts/procedures/AaveV3TreasuryProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IVotingMachineWithProofs.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/MockATokenRepayment.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/SupplyLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IEmissionManager.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/ReserveLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IAToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/GovernanceV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/WETH9Mocked.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/Initializable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IERC20WithPermit.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3GettersBatchOne.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/EModeLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tests/MockReserveInterestRateStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/WalletBalanceProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/AToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IWETH.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3PoolBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IMetadataReporter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/weth/WETH9.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/ParaSwapWithdrawSwapAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/misc/AaveOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/ISequencerOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-libraries/AaveV3LibrariesBatch2.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/dependencies/openzeppelin/contracts/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/Address.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/ProxyAdmin.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/flashloan/interfaces/IFlashLoanReceiver.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/utilities/MetadataReporter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/common/ICollector.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/libraries/DataTypesHelper.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IWrappedTokenGatewayV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/mocks/MockFlashLoanATokenReceiver.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/BatchTestProcedures.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/mocks/MockERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/interfaces/IERC721.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/helpers/MockReserveConfiguration.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IRewardsDistributor.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/SafeCast.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/oz-common/Context.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/interfaces/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/gnosis/contracts/GPv2SafeERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IPool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IAaveIncentivesController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IUiPoolDataProviderV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IReserveInterestRateStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IPoolReport.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdChains.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/harness/StableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tests/PercentageMathWrapper.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/flashloan/base/FlashLoanReceiverBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/pool/DefaultReserveInterestRateStrategyV2.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IInitializableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/misc/interfaces/IWETH.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IGovernancePowerStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/Proxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/mocks/AugustusRegistryMock.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/upgradeability/MockStableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/misc/LibraryPreCompileOne.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/ParaSwapRepayAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/flashloan/base/FlashLoanSimpleReceiverBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/MockScaledToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/math/WadRayMath.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPriceOracleGetter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/StableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/PoolLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/Proxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/protocol/libraries/types/DataTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/safeconsole.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/oz-common/StorageSlot.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3PoolConfigProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/Errors.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/Script.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IErrors.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3TokensBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/lido-ethereum/LidoMarketInput.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3PeripheryBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdError.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdJson.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/SafeMath.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/IERC165.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/SlotParser.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/AaveV3Payload.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/common/IStreamable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/UiPoolDataProviderV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/AaveV3BatchOrchestration.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IMarketReportTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/helpers/MockPool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IReserveInterestRateStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/RateEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/IAaveV3ConfigEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/DiffUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/configuration/ACLManager.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/IAccessControl.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3L2PoolProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/swap/MockParaSwapTokenTransferProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/aave-upgradeability/VersionedInitializable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/MintableDelegationERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/BorrowEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/swap/MockParaSwapAugustus.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IRewardsController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/interfaces/IOwnable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3DefaultRateStrategyProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3ParaswapProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/ConfiguratorLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IDelegationToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/swap/MockParaSwapAugustusRegistry.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/base/ScaledBalanceTokenBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IACLManager.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/Base.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3TokensProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/AaveV3Ethereum.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/transfer-strategies/StakedTokenTransferStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/TestnetProcedures.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/lido-ethereum/DeployLidoAaveV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/WETH9Mock.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/ListingEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/SafeERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3SetupProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPoolAddressesProviderRegistry.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IVariableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdAssertions.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/misc/DeployAaveV3MarketBatchedBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/core/PoolConfigurator.eMode.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/Ownable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IAaveOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/dependencies/chainlink/AggregatorInterface.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IGovernanceCore.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/interfaces/ITransparentProxyFactory.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/configuration/PriceOracleSentinel.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/oz-common/SafeCast.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IMarketReportStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/interfaces/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/Test.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/libraries/RewardsDataTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdInvariant.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IScaledBalanceToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/interfaces/IFeeClaimer.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/ConfigEngineDeployer.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/EIP712SigUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/BorrowLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/treasury/Collector.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/MockBadTransferStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/upgradeability/MockInitializableImplementation.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPriceOracleSentinel.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3GettersProcedureTwo.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/aave-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/base/IncentivizedERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/utilities/Create2Utils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/testnet-helpers/TestnetERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/ERC1967Upgrade.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/LiquidationLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdStyle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/testnet-helpers/Faucet.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IUiIncentiveDataProviderV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IInitializableAToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3PoolProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IVotingStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/WrappedTokenGatewayV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/configuration/ReserveConfiguration.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IDefaultInterestRateStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IPoolConfigurator.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPoolAddressesProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IStableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/treasury/ICollector.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/helpers/Errors.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/transfer-strategies/PullRewardsTransferStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tests/MathUtilsWrapper.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/UiIncentiveDataProviderV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/pool/Pool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3GettersBatchTwo.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/GovernanceV3Ethereum.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/periphery/mocks/StakeMock.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IERC20DetailedBytes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/BaseAdminUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/pool/L2Pool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/math/PercentageMath.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/ERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/MockDebtTokens.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/EModeEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/AaveV3ConfigEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/EngineFlags.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/configuration/UserConfiguration.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/ProtocolV3TestBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/PayloadsControllerUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/ERC1967Proxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/types/ConfiguratorInputTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/IERC20Detailed.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/protocol/libraries/helpers/Errors.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/utils/ProxyHelpers.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/mocks/MockERC721.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IL2Pool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdCheats.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/BaseParaSwapAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/BaseParaSwapBuyAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-libraries/AaveV3LibrariesBatch1.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/EmissionManager.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/AaveV3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/StableDebtTokenInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/VariableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/oracle/SequencerOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IPullRewardsTransferStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/pool/PoolStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/interfaces/IParaSwapAugustusRegistry.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IPayloadsControllerCore.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3ParaswapBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IScaledBalanceToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/ATokenInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IStakedToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/IStakedTokenTransferStrategy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/utilities/FfiUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/interfaces/ITransferStrategyBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IPriceOracleGetter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3IncentiveProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/chainlink/AggregatorInterface.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IDefaultInterestRateStrategyV2.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/AdminUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/MiscEthereum.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/FlashLoanLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/configuration/PoolAddressesProviderRegistry.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IInitializableAToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/common/IAaveEcosystemReserveController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/console.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/BaseParaSwapSellAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/CollateralEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IAaveOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/types/DataTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/testnet-helpers/IFaucet.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IPoolAddressesProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/Strings.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/IsolationModeLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/VariableDebtTokenInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/TransparentProxyFactory.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/upgradeability/MockVariableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/pool/PoolConfigurator.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/AccessControl.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tests/FlashloanAttacker.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tokens/MintableERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdToml.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPoolConfigurator.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/AaveParaSwapFeeClaimer.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/RewardsDistributor.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/protocol/libraries/types/ConfiguratorInputTypes.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/oz-common/Ownable.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IACLManager.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/flashloan/MockSimpleFlashLoanReceiver.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/flashloan/interfaces/IFlashLoanSimpleReceiver.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/console2.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/RewardsController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3GettersProcedureOne.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/IERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/L2PoolInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/ATokenMock.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPoolDataProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/PoolInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/oz-common/Address.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/CalldataLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/ERC165.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/CapsEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/base/EIP712Base.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/ICreditDelegationToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IBaseReceiverPortal.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/interfaces/IParaSwapAugustus.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/helpers/MockIncentivesController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IExecutor.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/helpers/MockL2Pool.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/misc/interfaces/IEACAggregatorProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/utilities/DeployUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/IProxyAdmin.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/misc/L2Encoder.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/core/ATokenRescueTokens.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/oracle/PriceOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/BridgeLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/configuration/PoolAddressesProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/instances/PoolConfiguratorInstance.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/mocks/swap/MockParaSwapFeeClaimer.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/inputs/DefaultMarketInput.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/GenericLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/base/DebtTokenBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/helpers/MockPeripheryContract.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/rewards/transfer-strategies/TransferStrategyBase.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/math/MathUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IAaveIncentivesController.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/helpers/Helpers.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/UpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/misc/LibraryPreCompileTwo.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"scripts/DeployAaveV3MarketBatched.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/inputs/MarketInput.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/interfaces/IMulticall3.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/upgradeability/InitializableAdminUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/v3-config-engine/libraries/PriceFeedEngine.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/StdMath.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/mocks/AaveV3TestListing.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/dependencies/openzeppelin/contracts/Context.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/forge-std/src/Vm.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/dependencies/openzeppelin/ReentrancyGuard.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/MarketReportStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/tokenization/base/MintableIncentivizedERC20.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/interfaces/IPriceOracle.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IPoolDataProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3L2PoolBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/procedures/AaveV3OracleProcedure.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/flashloan/MockFlashLoanReceiver.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/projects/aave-v3-batched/batches/AaveV3SetupBatch.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/misc/AaveProtocolDataProvider.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/interfaces/ILibraryReportStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/logic/ValidationLogic.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/lib/aave-v3-core/contracts/interfaces/IAToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/upgradeability/MockAToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/utilities/MarketReportUtils.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/deployments/contracts/LibraryReportStorage.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/solidity-utils/src/contracts/transparent-proxy/TransparentUpgradeableProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/oracle/CLAggregators/MockAggregator.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/periphery/contracts/adapters/paraswap/ParaSwapLiquiditySwapAdapter.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IVotingPortal.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/mocks/tests/WadRayMathWrapper.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"src/core/contracts/protocol/libraries/aave-upgradeability/BaseImmutableAdminUpgradeabilityProxy.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"tests/harness/VariableDebtToken.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]},"lib/aave-address-book/src/governance-v3/IDataWarehouse.sol":{"":["ast"],"*":["abi","evm.bytecode","evm.deployedBytecode","evm.methodIdentifiers","metadata"]}},"remappings":["solidity-utils/=lib/solidity-utils/src/","forge-std/=lib/forge-std/src/","ds-test/=lib/forge-std/lib/ds-test/src/","aave-address-book/=lib/aave-address-book/src/","aave-address-book:aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/","lib/aave-address-book:aave-v3-core/=lib/aave-address-book/lib/aave-v3-core/","lib/aave-address-book:aave-v3-periphery/=lib/aave-address-book/lib/aave-v3-periphery/","aave-v3-core/=src/core/","aave-v3-periphery/=src/periphery/","@aave/core-v3/=lib/aave-address-book/lib/aave-v3-core/","@aave/periphery-v3/=lib/aave-address-book/lib/aave-v3-periphery/"],"viaIR":false},"optimization_runs":200,"sourcify_repo_url":null,"decoded_constructor_args":[["0xcfBf336fe147D643B9Cb705648500e101504B16d",{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"}],[[],{"internalType":"address[]","name":"assets","type":"address[]"}],[[],{"internalType":"address[]","name":"sources","type":"address[]"}],["0x0000000000000000000000000000000000000000",{"internalType":"address","name":"fallbackOracle","type":"address"}],["0x0000000000000000000000000000000000000000",{"internalType":"address","name":"baseCurrency","type":"address"}],["100000000",{"internalType":"uint256","name":"baseCurrencyUnit","type":"uint256"}]],"compiler_version":"v0.8.19+commit.7dd6d404","is_verified_via_verifier_alliance":false,"verified_at":"2024-07-08T14:25:51.046138Z","implementations":[],"proxy_type":null,"external_libraries":[{"name":"BorrowLogic","address_hash":"0x41717de714Db8630F02Dea8f6A39C73A5b5C7df1"},{"name":"BridgeLogic","address_hash":"0xca2385754bCa5d632F5160B560352aBd12029685"},{"name":"ConfiguratorLogic","address_hash":"0x6F4964Db83CeCCDc98164796221d5259b922313C"},{"name":"EModeLogic","address_hash":"0x12959a64470Dd003590Bb1EcFC436dddE7608724"},{"name":"FlashLoanLogic","address_hash":"0x6DA8d7EF0625e965dafc393793C048096392d4a5"},{"name":"LiquidationLogic","address_hash":"0x72c272aE914EC11AFe1e74A0016e0A91c1A6014e"},{"name":"PoolLogic","address_hash":"0x55D552EFbc8aEB87AffCEa8630B43a33BA24D975"},{"name":"SupplyLogic","address_hash":"0x9336943ecd91C201D9ED5A21562b34Aef710052f"}],"creation_bytecode":"0x60e06040523480156200001157600080fd5b5060405162000f7938038062000f7983398101604081905262000034916200034e565b6001600160a01b0386166080526200004c83620000ab565b620000588585620000f5565b6001600160a01b03821660a081905260c08290526040518281527fe27c4c1372396a3d15a9922f74f9dfc7c72b1ad6d63868470787249c356454c19060200160405180910390a250505050505062000490565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114604051806040016040528060028152602001611b9b60f11b815250906200013f5760405162461bcd60e51b815260040162000136919062000402565b60405180910390fd5b5060005b82518110156200025b5781818151811062000162576200016262000452565b602002602001015160008085848151811062000182576200018262000452565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550818181518110620001e357620001e362000452565b60200260200101516001600160a01b031683828151811062000209576200020962000452565b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a380620002528162000468565b91505062000143565b505050565b6001600160a01b03811681146200027657600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b80516200029c8162000260565b919050565b600082601f830112620002b357600080fd5b815160206001600160401b0380831115620002d257620002d262000279565b8260051b604051601f19603f83011681018181108482111715620002fa57620002fa62000279565b6040529384528581018301938381019250878511156200031957600080fd5b83870191505b84821015620003435762000333826200028f565b835291830191908301906200031f565b979650505050505050565b60008060008060008060c087890312156200036857600080fd5b8651620003758162000260565b60208801519096506001600160401b03808211156200039357600080fd5b620003a18a838b01620002a1565b96506040890151915080821115620003b857600080fd5b50620003c789828a01620002a1565b9450506060870151620003da8162000260565b6080880151909350620003ed8162000260565b8092505060a087015190509295509295509295565b600060208083528351808285015260005b81811015620004315785810183015185820160400152820162000413565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016200048957634e487b7160e01b600052601160045260246000fd5b5060010190565b60805160a05160c051610aa5620004d46000396000818161010701526103610152600081816101ae0152610336015260008181609d01526104f90152610aa56000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806392bf2be01161006657806392bf2be0146101375780639d23d9f214610163578063abfd531014610183578063b3596f0714610196578063e19f4700146101a957600080fd5b80630542975c14610098578063170aee73146100dc5780636210308c146100f15780638c89b64f14610102575b600080fd5b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100ef6100ea366004610844565b6101d0565b005b6001546001600160a01b03166100bf565b6101297f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100d3565b6100bf610145366004610844565b6001600160a01b039081166000908152602081905260409020541690565b6101766101713660046108ad565b6101e4565b6040516100d391906108ef565b6100ef610191366004610933565b610299565b6101296101a4366004610844565b610314565b6100bf7f000000000000000000000000000000000000000000000000000000000000000081565b6101d86104f5565b6101e181610696565b50565b606060008267ffffffffffffffff8111156102015761020161099f565b60405190808252806020026020018201604052801561022a578160200160208202803683370190505b50905060005b838110156102915761026285858381811061024d5761024d6109b5565b90506020020160208101906101a49190610844565b828281518110610274576102746109b5565b602090810291909101015280610289816109cb565b915050610230565b509392505050565b6102a16104f5565b61030e848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040805160208088028281018201909352878252909350879250869182918501908490808284376000920191909152506106e092505050565b50505050565b6001600160a01b038082166000818152602081905260408120549092908116917f0000000000000000000000000000000000000000000000000000000000000000909116900361038657507f000000000000000000000000000000000000000000000000000000000000000092915050565b6001600160a01b0381166104095760015460405163b3596f0760e01b81526001600160a01b0385811660048301529091169063b3596f0790602401602060405180830381865afa1580156103de573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040291906109f2565b9392505050565b6000816001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610449573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046d91906109f2565b9050600081131561047f579392505050565b60015460405163b3596f0760e01b81526001600160a01b0386811660048301529091169063b3596f0790602401602060405180830381865afa1580156104c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ed91906109f2565b949350505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663707cd7166040518163ffffffff1660e01b8152600401602060405180830381865afa158015610555573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105799190610a0b565b604051629f719760e51b81523360048201529091506001600160a01b038216906313ee32e090602401602060405180830381865afa1580156105bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e39190610a28565b806106515750604051637be53ca160e01b81523360048201526001600160a01b03821690637be53ca190602401602060405180830381865afa15801561062d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106519190610a28565b604051806040016040528060018152602001603560f81b815250906106925760405162461bcd60e51b81526004016106899190610a4a565b60405180910390fd5b5050565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fce7a780d33665b1ea097af5f155e3821b809ecbaa839d3b33aa83ba28168cefb90600090a250565b8051825114604051806040016040528060028152602001611b9b60f11b8152509061071e5760405162461bcd60e51b81526004016106899190610a4a565b5060005b825181101561082a5781818151811061073d5761073d6109b5565b602002602001015160008085848151811061075a5761075a6109b5565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055508181815181106107b8576107b86109b5565b60200260200101516001600160a01b03168382815181106107db576107db6109b5565b60200260200101516001600160a01b03167f22c5b7b2d8561d39f7f210b6b326a1aa69f15311163082308ac4877db6339dc160405160405180910390a380610822816109cb565b915050610722565b505050565b6001600160a01b03811681146101e157600080fd5b60006020828403121561085657600080fd5b81356104028161082f565b60008083601f84011261087357600080fd5b50813567ffffffffffffffff81111561088b57600080fd5b6020830191508360208260051b85010111156108a657600080fd5b9250929050565b600080602083850312156108c057600080fd5b823567ffffffffffffffff8111156108d757600080fd5b6108e385828601610861565b90969095509350505050565b6020808252825182820181905260009190848201906040850190845b818110156109275783518352928401929184019160010161090b565b50909695505050505050565b6000806000806040858703121561094957600080fd5b843567ffffffffffffffff8082111561096157600080fd5b61096d88838901610861565b9096509450602087013591508082111561098657600080fd5b5061099387828801610861565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000600182016109eb57634e487b7160e01b600052601160045260246000fd5b5060010190565b600060208284031215610a0457600080fd5b5051919050565b600060208284031215610a1d57600080fd5b81516104028161082f565b600060208284031215610a3a57600080fd5b8151801515811461040257600080fd5b600060208083528351808285015260005b81811015610a7757858101830151858201604001528201610a5b565b506000604082860101526040601f19601f830116850101925050509291505056fea164736f6c6343000813000a000000000000000000000000cfbf336fe147d643b9cb705648500e101504b16d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","name":"AaveOracle","is_blueprint":false,"license_type":"mit","is_fully_verified":false,"is_verified_via_eth_bytecode_db":false,"language":"solidity","evm_version":"paris","can_be_visualized_via_sol2uml":true,"is_verified_via_sourcify":false,"additional_sources":[{"file_path":"src/core/contracts/dependencies/chainlink/AggregatorInterface.sol","source_code":"// SPDX-License-Identifier: MIT\n// Chainlink Contracts v0.8\npragma solidity ^0.8.0;\n\ninterface AggregatorInterface {\n  function latestAnswer() external view returns (int256);\n\n  function latestTimestamp() external view returns (uint256);\n\n  function latestRound() external view returns (uint256);\n\n  function getAnswer(uint256 roundId) external view returns (int256);\n\n  function getTimestamp(uint256 roundId) external view returns (uint256);\n\n  event AnswerUpdated(int256 indexed current, uint256 indexed roundId, uint256 updatedAt);\n\n  event NewRound(uint256 indexed roundId, address indexed startedBy, uint256 startedAt);\n}\n"},{"file_path":"src/core/contracts/interfaces/IACLManager.sol","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';\n\n/**\n * @title IACLManager\n * @author Aave\n * @notice Defines the basic interface for the ACL Manager\n */\ninterface IACLManager {\n  /**\n   * @notice Returns the contract address of the PoolAddressesProvider\n   * @return The address of the PoolAddressesProvider\n   */\n  function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider);\n\n  /**\n   * @notice Returns the identifier of the PoolAdmin role\n   * @return The id of the PoolAdmin role\n   */\n  function POOL_ADMIN_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Returns the identifier of the EmergencyAdmin role\n   * @return The id of the EmergencyAdmin role\n   */\n  function EMERGENCY_ADMIN_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Returns the identifier of the RiskAdmin role\n   * @return The id of the RiskAdmin role\n   */\n  function RISK_ADMIN_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Returns the identifier of the FlashBorrower role\n   * @return The id of the FlashBorrower role\n   */\n  function FLASH_BORROWER_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Returns the identifier of the Bridge role\n   * @return The id of the Bridge role\n   */\n  function BRIDGE_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Returns the identifier of the AssetListingAdmin role\n   * @return The id of the AssetListingAdmin role\n   */\n  function ASSET_LISTING_ADMIN_ROLE() external view returns (bytes32);\n\n  /**\n   * @notice Set the role as admin of a specific role.\n   * @dev By default the admin role for all roles is `DEFAULT_ADMIN_ROLE`.\n   * @param role The role to be managed by the admin role\n   * @param adminRole The admin role\n   */\n  function setRoleAdmin(bytes32 role, bytes32 adminRole) external;\n\n  /**\n   * @notice Adds a new admin as PoolAdmin\n   * @param admin The address of the new admin\n   */\n  function addPoolAdmin(address admin) external;\n\n  /**\n   * @notice Removes an admin as PoolAdmin\n   * @param admin The address of the admin to remove\n   */\n  function removePoolAdmin(address admin) external;\n\n  /**\n   * @notice Returns true if the address is PoolAdmin, false otherwise\n   * @param admin The address to check\n   * @return True if the given address is PoolAdmin, false otherwise\n   */\n  function isPoolAdmin(address admin) external view returns (bool);\n\n  /**\n   * @notice Adds a new admin as EmergencyAdmin\n   * @param admin The address of the new admin\n   */\n  function addEmergencyAdmin(address admin) external;\n\n  /**\n   * @notice Removes an admin as EmergencyAdmin\n   * @param admin The address of the admin to remove\n   */\n  function removeEmergencyAdmin(address admin) external;\n\n  /**\n   * @notice Returns true if the address is EmergencyAdmin, false otherwise\n   * @param admin The address to check\n   * @return True if the given address is EmergencyAdmin, false otherwise\n   */\n  function isEmergencyAdmin(address admin) external view returns (bool);\n\n  /**\n   * @notice Adds a new admin as RiskAdmin\n   * @param admin The address of the new admin\n   */\n  function addRiskAdmin(address admin) external;\n\n  /**\n   * @notice Removes an admin as RiskAdmin\n   * @param admin The address of the admin to remove\n   */\n  function removeRiskAdmin(address admin) external;\n\n  /**\n   * @notice Returns true if the address is RiskAdmin, false otherwise\n   * @param admin The address to check\n   * @return True if the given address is RiskAdmin, false otherwise\n   */\n  function isRiskAdmin(address admin) external view returns (bool);\n\n  /**\n   * @notice Adds a new address as FlashBorrower\n   * @param borrower The address of the new FlashBorrower\n   */\n  function addFlashBorrower(address borrower) external;\n\n  /**\n   * @notice Removes an address as FlashBorrower\n   * @param borrower The address of the FlashBorrower to remove\n   */\n  function removeFlashBorrower(address borrower) external;\n\n  /**\n   * @notice Returns true if the address is FlashBorrower, false otherwise\n   * @param borrower The address to check\n   * @return True if the given address is FlashBorrower, false otherwise\n   */\n  function isFlashBorrower(address borrower) external view returns (bool);\n\n  /**\n   * @notice Adds a new address as Bridge\n   * @param bridge The address of the new Bridge\n   */\n  function addBridge(address bridge) external;\n\n  /**\n   * @notice Removes an address as Bridge\n   * @param bridge The address of the bridge to remove\n   */\n  function removeBridge(address bridge) external;\n\n  /**\n   * @notice Returns true if the address is Bridge, false otherwise\n   * @param bridge The address to check\n   * @return True if the given address is Bridge, false otherwise\n   */\n  function isBridge(address bridge) external view returns (bool);\n\n  /**\n   * @notice Adds a new admin as AssetListingAdmin\n   * @param admin The address of the new admin\n   */\n  function addAssetListingAdmin(address admin) external;\n\n  /**\n   * @notice Removes an admin as AssetListingAdmin\n   * @param admin The address of the admin to remove\n   */\n  function removeAssetListingAdmin(address admin) external;\n\n  /**\n   * @notice Returns true if the address is AssetListingAdmin, false otherwise\n   * @param admin The address to check\n   * @return True if the given address is AssetListingAdmin, false otherwise\n   */\n  function isAssetListingAdmin(address admin) external view returns (bool);\n}\n"},{"file_path":"src/core/contracts/interfaces/IAaveOracle.sol","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\nimport {IPriceOracleGetter} from './IPriceOracleGetter.sol';\nimport {IPoolAddressesProvider} from './IPoolAddressesProvider.sol';\n\n/**\n * @title IAaveOracle\n * @author Aave\n * @notice Defines the basic interface for the Aave Oracle\n */\ninterface IAaveOracle is IPriceOracleGetter {\n  /**\n   * @dev Emitted after the base currency is set\n   * @param baseCurrency The base currency of used for price quotes\n   * @param baseCurrencyUnit The unit of the base currency\n   */\n  event BaseCurrencySet(address indexed baseCurrency, uint256 baseCurrencyUnit);\n\n  /**\n   * @dev Emitted after the price source of an asset is updated\n   * @param asset The address of the asset\n   * @param source The price source of the asset\n   */\n  event AssetSourceUpdated(address indexed asset, address indexed source);\n\n  /**\n   * @dev Emitted after the address of fallback oracle is updated\n   * @param fallbackOracle The address of the fallback oracle\n   */\n  event FallbackOracleUpdated(address indexed fallbackOracle);\n\n  /**\n   * @notice Returns the PoolAddressesProvider\n   * @return The address of the PoolAddressesProvider contract\n   */\n  function ADDRESSES_PROVIDER() external view returns (IPoolAddressesProvider);\n\n  /**\n   * @notice Sets or replaces price sources of assets\n   * @param assets The addresses of the assets\n   * @param sources The addresses of the price sources\n   */\n  function setAssetSources(address[] calldata assets, address[] calldata sources) external;\n\n  /**\n   * @notice Sets the fallback oracle\n   * @param fallbackOracle The address of the fallback oracle\n   */\n  function setFallbackOracle(address fallbackOracle) external;\n\n  /**\n   * @notice Returns a list of prices from a list of assets addresses\n   * @param assets The list of assets addresses\n   * @return The prices of the given assets\n   */\n  function getAssetsPrices(address[] calldata assets) external view returns (uint256[] memory);\n\n  /**\n   * @notice Returns the address of the source for an asset address\n   * @param asset The address of the asset\n   * @return The address of the source\n   */\n  function getSourceOfAsset(address asset) external view returns (address);\n\n  /**\n   * @notice Returns the address of the fallback oracle\n   * @return The address of the fallback oracle\n   */\n  function getFallbackOracle() external view returns (address);\n}\n"},{"file_path":"src/core/contracts/interfaces/IPoolAddressesProvider.sol","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title IPoolAddressesProvider\n * @author Aave\n * @notice Defines the basic interface for a Pool Addresses Provider.\n */\ninterface IPoolAddressesProvider {\n  /**\n   * @dev Emitted when the market identifier is updated.\n   * @param oldMarketId The old id of the market\n   * @param newMarketId The new id of the market\n   */\n  event MarketIdSet(string indexed oldMarketId, string indexed newMarketId);\n\n  /**\n   * @dev Emitted when the pool is updated.\n   * @param oldAddress The old address of the Pool\n   * @param newAddress The new address of the Pool\n   */\n  event PoolUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the pool configurator is updated.\n   * @param oldAddress The old address of the PoolConfigurator\n   * @param newAddress The new address of the PoolConfigurator\n   */\n  event PoolConfiguratorUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the price oracle is updated.\n   * @param oldAddress The old address of the PriceOracle\n   * @param newAddress The new address of the PriceOracle\n   */\n  event PriceOracleUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the ACL manager is updated.\n   * @param oldAddress The old address of the ACLManager\n   * @param newAddress The new address of the ACLManager\n   */\n  event ACLManagerUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the ACL admin is updated.\n   * @param oldAddress The old address of the ACLAdmin\n   * @param newAddress The new address of the ACLAdmin\n   */\n  event ACLAdminUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the price oracle sentinel is updated.\n   * @param oldAddress The old address of the PriceOracleSentinel\n   * @param newAddress The new address of the PriceOracleSentinel\n   */\n  event PriceOracleSentinelUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the pool data provider is updated.\n   * @param oldAddress The old address of the PoolDataProvider\n   * @param newAddress The new address of the PoolDataProvider\n   */\n  event PoolDataProviderUpdated(address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when a new proxy is created.\n   * @param id The identifier of the proxy\n   * @param proxyAddress The address of the created proxy contract\n   * @param implementationAddress The address of the implementation contract\n   */\n  event ProxyCreated(\n    bytes32 indexed id,\n    address indexed proxyAddress,\n    address indexed implementationAddress\n  );\n\n  /**\n   * @dev Emitted when a new non-proxied contract address is registered.\n   * @param id The identifier of the contract\n   * @param oldAddress The address of the old contract\n   * @param newAddress The address of the new contract\n   */\n  event AddressSet(bytes32 indexed id, address indexed oldAddress, address indexed newAddress);\n\n  /**\n   * @dev Emitted when the implementation of the proxy registered with id is updated\n   * @param id The identifier of the contract\n   * @param proxyAddress The address of the proxy contract\n   * @param oldImplementationAddress The address of the old implementation contract\n   * @param newImplementationAddress The address of the new implementation contract\n   */\n  event AddressSetAsProxy(\n    bytes32 indexed id,\n    address indexed proxyAddress,\n    address oldImplementationAddress,\n    address indexed newImplementationAddress\n  );\n\n  /**\n   * @notice Returns the id of the Aave market to which this contract points to.\n   * @return The market id\n   */\n  function getMarketId() external view returns (string memory);\n\n  /**\n   * @notice Associates an id with a specific PoolAddressesProvider.\n   * @dev This can be used to create an onchain registry of PoolAddressesProviders to\n   * identify and validate multiple Aave markets.\n   * @param newMarketId The market id\n   */\n  function setMarketId(string calldata newMarketId) external;\n\n  /**\n   * @notice Returns an address by its identifier.\n   * @dev The returned address might be an EOA or a contract, potentially proxied\n   * @dev It returns ZERO if there is no registered address with the given id\n   * @param id The id\n   * @return The address of the registered for the specified id\n   */\n  function getAddress(bytes32 id) external view returns (address);\n\n  /**\n   * @notice General function to update the implementation of a proxy registered with\n   * certain `id`. If there is no proxy registered, it will instantiate one and\n   * set as implementation the `newImplementationAddress`.\n   * @dev IMPORTANT Use this function carefully, only for ids that don't have an explicit\n   * setter function, in order to avoid unexpected consequences\n   * @param id The id\n   * @param newImplementationAddress The address of the new implementation\n   */\n  function setAddressAsProxy(bytes32 id, address newImplementationAddress) external;\n\n  /**\n   * @notice Sets an address for an id replacing the address saved in the addresses map.\n   * @dev IMPORTANT Use this function carefully, as it will do a hard replacement\n   * @param id The id\n   * @param newAddress The address to set\n   */\n  function setAddress(bytes32 id, address newAddress) external;\n\n  /**\n   * @notice Returns the address of the Pool proxy.\n   * @return The Pool proxy address\n   */\n  function getPool() external view returns (address);\n\n  /**\n   * @notice Updates the implementation of the Pool, or creates a proxy\n   * setting the new `pool` implementation when the function is called for the first time.\n   * @param newPoolImpl The new Pool implementation\n   */\n  function setPoolImpl(address newPoolImpl) external;\n\n  /**\n   * @notice Returns the address of the PoolConfigurator proxy.\n   * @return The PoolConfigurator proxy address\n   */\n  function getPoolConfigurator() external view returns (address);\n\n  /**\n   * @notice Updates the implementation of the PoolConfigurator, or creates a proxy\n   * setting the new `PoolConfigurator` implementation when the function is called for the first time.\n   * @param newPoolConfiguratorImpl The new PoolConfigurator implementation\n   */\n  function setPoolConfiguratorImpl(address newPoolConfiguratorImpl) external;\n\n  /**\n   * @notice Returns the address of the price oracle.\n   * @return The address of the PriceOracle\n   */\n  function getPriceOracle() external view returns (address);\n\n  /**\n   * @notice Updates the address of the price oracle.\n   * @param newPriceOracle The address of the new PriceOracle\n   */\n  function setPriceOracle(address newPriceOracle) external;\n\n  /**\n   * @notice Returns the address of the ACL manager.\n   * @return The address of the ACLManager\n   */\n  function getACLManager() external view returns (address);\n\n  /**\n   * @notice Updates the address of the ACL manager.\n   * @param newAclManager The address of the new ACLManager\n   */\n  function setACLManager(address newAclManager) external;\n\n  /**\n   * @notice Returns the address of the ACL admin.\n   * @return The address of the ACL admin\n   */\n  function getACLAdmin() external view returns (address);\n\n  /**\n   * @notice Updates the address of the ACL admin.\n   * @param newAclAdmin The address of the new ACL admin\n   */\n  function setACLAdmin(address newAclAdmin) external;\n\n  /**\n   * @notice Returns the address of the price oracle sentinel.\n   * @return The address of the PriceOracleSentinel\n   */\n  function getPriceOracleSentinel() external view returns (address);\n\n  /**\n   * @notice Updates the address of the price oracle sentinel.\n   * @param newPriceOracleSentinel The address of the new PriceOracleSentinel\n   */\n  function setPriceOracleSentinel(address newPriceOracleSentinel) external;\n\n  /**\n   * @notice Returns the address of the data provider.\n   * @return The address of the DataProvider\n   */\n  function getPoolDataProvider() external view returns (address);\n\n  /**\n   * @notice Updates the address of the data provider.\n   * @param newDataProvider The address of the new DataProvider\n   */\n  function setPoolDataProvider(address newDataProvider) external;\n}\n"},{"file_path":"src/core/contracts/interfaces/IPriceOracleGetter.sol","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title IPriceOracleGetter\n * @author Aave\n * @notice Interface for the Aave price oracle.\n */\ninterface IPriceOracleGetter {\n  /**\n   * @notice Returns the base currency address\n   * @dev Address 0x0 is reserved for USD as base currency.\n   * @return Returns the base currency address.\n   */\n  function BASE_CURRENCY() external view returns (address);\n\n  /**\n   * @notice Returns the base currency unit\n   * @dev 1 ether for ETH, 1e8 for USD.\n   * @return Returns the base currency unit.\n   */\n  function BASE_CURRENCY_UNIT() external view returns (uint256);\n\n  /**\n   * @notice Returns the asset price in the base currency\n   * @param asset The address of the asset\n   * @return The price of the asset\n   */\n  function getAssetPrice(address asset) external view returns (uint256);\n}\n"},{"file_path":"src/core/contracts/protocol/libraries/helpers/Errors.sol","source_code":"// SPDX-License-Identifier: MIT\npragma solidity ^0.8.0;\n\n/**\n * @title Errors library\n * @author Aave\n * @notice Defines the error messages emitted by the different contracts of the Aave protocol\n */\nlibrary Errors {\n  string public constant CALLER_NOT_POOL_ADMIN = '1'; // 'The caller of the function is not a pool admin'\n  string public constant CALLER_NOT_EMERGENCY_ADMIN = '2'; // 'The caller of the function is not an emergency admin'\n  string public constant CALLER_NOT_POOL_OR_EMERGENCY_ADMIN = '3'; // 'The caller of the function is not a pool or emergency admin'\n  string public constant CALLER_NOT_RISK_OR_POOL_ADMIN = '4'; // 'The caller of the function is not a risk or pool admin'\n  string public constant CALLER_NOT_ASSET_LISTING_OR_POOL_ADMIN = '5'; // 'The caller of the function is not an asset listing or pool admin'\n  string public constant CALLER_NOT_BRIDGE = '6'; // 'The caller of the function is not a bridge'\n  string public constant ADDRESSES_PROVIDER_NOT_REGISTERED = '7'; // 'Pool addresses provider is not registered'\n  string public constant INVALID_ADDRESSES_PROVIDER_ID = '8'; // 'Invalid id for the pool addresses provider'\n  string public constant NOT_CONTRACT = '9'; // 'Address is not a contract'\n  string public constant CALLER_NOT_POOL_CONFIGURATOR = '10'; // 'The caller of the function is not the pool configurator'\n  string public constant CALLER_NOT_ATOKEN = '11'; // 'The caller of the function is not an AToken'\n  string public constant INVALID_ADDRESSES_PROVIDER = '12'; // 'The address of the pool addresses provider is invalid'\n  string public constant INVALID_FLASHLOAN_EXECUTOR_RETURN = '13'; // 'Invalid return value of the flashloan executor function'\n  string public constant RESERVE_ALREADY_ADDED = '14'; // 'Reserve has already been added to reserve list'\n  string public constant NO_MORE_RESERVES_ALLOWED = '15'; // 'Maximum amount of reserves in the pool reached'\n  string public constant EMODE_CATEGORY_RESERVED = '16'; // 'Zero eMode category is reserved for volatile heterogeneous assets'\n  string public constant INVALID_EMODE_CATEGORY_ASSIGNMENT = '17'; // 'Invalid eMode category assignment to asset'\n  string public constant RESERVE_LIQUIDITY_NOT_ZERO = '18'; // 'The liquidity of the reserve needs to be 0'\n  string public constant FLASHLOAN_PREMIUM_INVALID = '19'; // 'Invalid flashloan premium'\n  string public constant INVALID_RESERVE_PARAMS = '20'; // 'Invalid risk parameters for the reserve'\n  string public constant INVALID_EMODE_CATEGORY_PARAMS = '21'; // 'Invalid risk parameters for the eMode category'\n  string public constant BRIDGE_PROTOCOL_FEE_INVALID = '22'; // 'Invalid bridge protocol fee'\n  string public constant CALLER_MUST_BE_POOL = '23'; // 'The caller of this function must be a pool'\n  string public constant INVALID_MINT_AMOUNT = '24'; // 'Invalid amount to mint'\n  string public constant INVALID_BURN_AMOUNT = '25'; // 'Invalid amount to burn'\n  string public constant INVALID_AMOUNT = '26'; // 'Amount must be greater than 0'\n  string public constant RESERVE_INACTIVE = '27'; // 'Action requires an active reserve'\n  string public constant RESERVE_FROZEN = '28'; // 'Action cannot be performed because the reserve is frozen'\n  string public constant RESERVE_PAUSED = '29'; // 'Action cannot be performed because the reserve is paused'\n  string public constant BORROWING_NOT_ENABLED = '30'; // 'Borrowing is not enabled'\n  string public constant STABLE_BORROWING_NOT_ENABLED = '31'; // 'Stable borrowing is not enabled'\n  string public constant NOT_ENOUGH_AVAILABLE_USER_BALANCE = '32'; // 'User cannot withdraw more than the available balance'\n  string public constant INVALID_INTEREST_RATE_MODE_SELECTED = '33'; // 'Invalid interest rate mode selected'\n  string public constant COLLATERAL_BALANCE_IS_ZERO = '34'; // 'The collateral balance is 0'\n  string public constant HEALTH_FACTOR_LOWER_THAN_LIQUIDATION_THRESHOLD = '35'; // 'Health factor is lesser than the liquidation threshold'\n  string public constant COLLATERAL_CANNOT_COVER_NEW_BORROW = '36'; // 'There is not enough collateral to cover a new borrow'\n  string public constant COLLATERAL_SAME_AS_BORROWING_CURRENCY = '37'; // 'Collateral is (mostly) the same currency that is being borrowed'\n  string public constant AMOUNT_BIGGER_THAN_MAX_LOAN_SIZE_STABLE = '38'; // 'The requested amount is greater than the max loan size in stable rate mode'\n  string public constant NO_DEBT_OF_SELECTED_TYPE = '39'; // 'For repayment of a specific type of debt, the user needs to have debt that type'\n  string public constant NO_EXPLICIT_AMOUNT_TO_REPAY_ON_BEHALF = '40'; // 'To repay on behalf of a user an explicit amount to repay is needed'\n  string public constant NO_OUTSTANDING_STABLE_DEBT = '41'; // 'User does not have outstanding stable rate debt on this reserve'\n  string public constant NO_OUTSTANDING_VARIABLE_DEBT = '42'; // 'User does not have outstanding variable rate debt on this reserve'\n  string public constant UNDERLYING_BALANCE_ZERO = '43'; // 'The underlying balance needs to be greater than 0'\n  string public constant INTEREST_RATE_REBALANCE_CONDITIONS_NOT_MET = '44'; // 'Interest rate rebalance conditions were not met'\n  string public constant HEALTH_FACTOR_NOT_BELOW_THRESHOLD = '45'; // 'Health factor is not below the threshold'\n  string public constant COLLATERAL_CANNOT_BE_LIQUIDATED = '46'; // 'The collateral chosen cannot be liquidated'\n  string public constant SPECIFIED_CURRENCY_NOT_BORROWED_BY_USER = '47'; // 'User did not borrow the specified currency'\n  string public constant INCONSISTENT_FLASHLOAN_PARAMS = '49'; // 'Inconsistent flashloan parameters'\n  string public constant BORROW_CAP_EXCEEDED = '50'; // 'Borrow cap is exceeded'\n  string public constant SUPPLY_CAP_EXCEEDED = '51'; // 'Supply cap is exceeded'\n  string public constant UNBACKED_MINT_CAP_EXCEEDED = '52'; // 'Unbacked mint cap is exceeded'\n  string public constant DEBT_CEILING_EXCEEDED = '53'; // 'Debt ceiling is exceeded'\n  string public constant UNDERLYING_CLAIMABLE_RIGHTS_NOT_ZERO = '54'; // 'Claimable rights over underlying not zero (aToken supply or accruedToTreasury)'\n  string public constant STABLE_DEBT_NOT_ZERO = '55'; // 'Stable debt supply is not zero'\n  string public constant VARIABLE_DEBT_SUPPLY_NOT_ZERO = '56'; // 'Variable debt supply is not zero'\n  string public constant LTV_VALIDATION_FAILED = '57'; // 'Ltv validation failed'\n  string public constant INCONSISTENT_EMODE_CATEGORY = '58'; // 'Inconsistent eMode category'\n  string public constant PRICE_ORACLE_SENTINEL_CHECK_FAILED = '59'; // 'Price oracle sentinel validation failed'\n  string public constant ASSET_NOT_BORROWABLE_IN_ISOLATION = '60'; // 'Asset is not borrowable in isolation mode'\n  string public constant RESERVE_ALREADY_INITIALIZED = '61'; // 'Reserve has already been initialized'\n  string public constant USER_IN_ISOLATION_MODE_OR_LTV_ZERO = '62'; // 'User is in isolation mode or ltv is zero'\n  string public constant INVALID_LTV = '63'; // 'Invalid ltv parameter for the reserve'\n  string public constant INVALID_LIQ_THRESHOLD = '64'; // 'Invalid liquidity threshold parameter for the reserve'\n  string public constant INVALID_LIQ_BONUS = '65'; // 'Invalid liquidity bonus parameter for the reserve'\n  string public constant INVALID_DECIMALS = '66'; // 'Invalid decimals parameter of the underlying asset of the reserve'\n  string public constant INVALID_RESERVE_FACTOR = '67'; // 'Invalid reserve factor parameter for the reserve'\n  string public constant INVALID_BORROW_CAP = '68'; // 'Invalid borrow cap for the reserve'\n  string public constant INVALID_SUPPLY_CAP = '69'; // 'Invalid supply cap for the reserve'\n  string public constant INVALID_LIQUIDATION_PROTOCOL_FEE = '70'; // 'Invalid liquidation protocol fee for the reserve'\n  string public constant INVALID_EMODE_CATEGORY = '71'; // 'Invalid eMode category for the reserve'\n  string public constant INVALID_UNBACKED_MINT_CAP = '72'; // 'Invalid unbacked mint cap for the reserve'\n  string public constant INVALID_DEBT_CEILING = '73'; // 'Invalid debt ceiling for the reserve\n  string public constant INVALID_RESERVE_INDEX = '74'; // 'Invalid reserve index'\n  string public constant ACL_ADMIN_CANNOT_BE_ZERO = '75'; // 'ACL admin cannot be set to the zero address'\n  string public constant INCONSISTENT_PARAMS_LENGTH = '76'; // 'Array parameters that should be equal length are not'\n  string public constant ZERO_ADDRESS_NOT_VALID = '77'; // 'Zero address not valid'\n  string public constant INVALID_EXPIRATION = '78'; // 'Invalid expiration'\n  string public constant INVALID_SIGNATURE = '79'; // 'Invalid signature'\n  string public constant OPERATION_NOT_SUPPORTED = '80'; // 'Operation not supported'\n  string public constant DEBT_CEILING_NOT_ZERO = '81'; // 'Debt ceiling is not zero'\n  string public constant ASSET_NOT_LISTED = '82'; // 'Asset is not listed'\n  string public constant INVALID_OPTIMAL_USAGE_RATIO = '83'; // 'Invalid optimal usage ratio'\n  string public constant INVALID_OPTIMAL_STABLE_TO_TOTAL_DEBT_RATIO = '84'; // 'Invalid optimal stable to total debt ratio'\n  string public constant UNDERLYING_CANNOT_BE_RESCUED = '85'; // 'The underlying asset cannot be rescued'\n  string public constant ADDRESSES_PROVIDER_ALREADY_ADDED = '86'; // 'Reserve has already been added to reserve list'\n  string public constant POOL_ADDRESSES_DO_NOT_MATCH = '87'; // 'The token implementation pool address and the pool address provided by the initializing pool do not match'\n  string public constant STABLE_BORROWING_ENABLED = '88'; // 'Stable borrowing is enabled'\n  string public constant SILOED_BORROWING_VIOLATION = '89'; // 'User is trying to borrow multiple assets including a siloed one'\n  string public constant RESERVE_DEBT_NOT_ZERO = '90'; // the total debt of the reserve needs to be 0\n  string public constant FLASHLOAN_DISABLED = '91'; // FlashLoaning for this asset is disabled\n  string public constant INVALID_MAX_RATE = '92'; // The expect maximum borrow rate is invalid\n  string public constant WITHDRAW_TO_ATOKEN = '93'; // Withdrawing to the aToken is not allowed\n  string public constant SUPPLY_TO_ATOKEN = '94'; // Supplying to the aToken is not allowed\n  string public constant SLOPE_2_MUST_BE_GTE_SLOPE_1 = '95'; // Variable interest rate slope 2 can not be lower than slope 1\n  string public constant CALLER_NOT_RISK_OR_POOL_OR_EMERGENCY_ADMIN = '96'; // 'The caller of the function is not a risk, pool or emergency admin'\n  string public constant LIQUIDATION_GRACE_SENTINEL_CHECK_FAILED = '97'; // 'Liquidation grace sentinel validation failed'\n  string public constant INVALID_GRACE_PERIOD = '98'; // Grace period above a valid range\n  string public constant INVALID_FREEZE_STATE = '99'; // Reserve is already in the passed freeze state\n}\n"}],"certified":false,"conflicting_implementations":null,"abi":[{"inputs":[{"internalType":"contract IPoolAddressesProvider","name":"provider","type":"address"},{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address[]","name":"sources","type":"address[]"},{"internalType":"address","name":"fallbackOracle","type":"address"},{"internalType":"address","name":"baseCurrency","type":"address"},{"internalType":"uint256","name":"baseCurrencyUnit","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"asset","type":"address"},{"indexed":true,"internalType":"address","name":"source","type":"address"}],"name":"AssetSourceUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"baseCurrency","type":"address"},{"indexed":false,"internalType":"uint256","name":"baseCurrencyUnit","type":"uint256"}],"name":"BaseCurrencySet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"fallbackOracle","type":"address"}],"name":"FallbackOracleUpdated","type":"event"},{"inputs":[],"name":"ADDRESSES_PROVIDER","outputs":[{"internalType":"contract IPoolAddressesProvider","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_CURRENCY","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"BASE_CURRENCY_UNIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getAssetPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"}],"name":"getAssetsPrices","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getFallbackOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"asset","type":"address"}],"name":"getSourceOfAsset","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"assets","type":"address[]"},{"internalType":"address[]","name":"sources","type":"address[]"}],"name":"setAssetSources","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"fallbackOracle","type":"address"}],"name":"setFallbackOracle","outputs":[],"stateMutability":"nonpayable","type":"function"}],"is_changed_bytecode":false,"is_partially_verified":true,"constructor_args":"0x000000000000000000000000cfbf336fe147d643b9cb705648500e101504b16d00000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"}